Technology Insights



Xfce4.10Xfce Desktop Environment

Xfce is a lightweight desktop environment for UNIX-like operating systems. It aims to be fast and low on system resources, while still being visually appealing and user friendly.

Xfce embodies the traditional UNIX philosophy of modularity and re-usability. It consists of a number of components that provide the full functionality one can expect of a modern desktop environment. They are packaged separately and you can pick among the available packages to create the optimal personal working environment.

Another priority of Xfce is adherence to standards, specifically those defined at freedesktop.org. Xfce can be installed on several UNIX platforms. It is known to compile on Linux, NetBSD, FreeBSD, OpenBSD, Solaris, Cygwin and MacOS X, on x86, PPC, Sparc, Alpha...

Features

Xfce contains a number of core components for the minimum tasks you'd expect from a desktop environment:

Window Manager

Manages the placement of windows on the screen, provides window decorations and manages workspaces or virtual desktops.

Desktop Manager

Sets the background image and provides a root window menu, desktop icons or minimized icons and a windows list.

Panel

Switch between opened windows, launch applications, switch workspaces and menu plugins to browse applications or directories.

Session Manager

Controls the login and power management of the desktop and allows you to store multiple login sessions.

Application Finder

Shows the applications installed on your system in categories, so you can quickly find and launch them.

File Manager

Provides the basic file management features and unique utilities like the bulk renamer.

Setting Manager

Tools to control the various settings of the desktop like keyboard shortcuts, appearance, display settings etcetera.

Beside the basic set of modules, Xfce also provides numerous additional applications and plugins so you can extend your desktop the way you like, for example a terminal emulator, text editor, sound mixer, application finder, image viewer, iCal based calendar and a CD and DVD burning application. You can read more about the modules of Xfce in the projects page.

What Is VPS Hosting?

VPS stands for Virtual Private Server, and is a virtualized server. A VPS server mimics a dedicated server within a shared hosting environment. It is technically both shared hosting and dedicated hosting.

VPS Hosting is one of several types of web hosting accounts you can choose from to host your website online. To have a website on the internet, you need to have your website files on a web server. Setting up and managing a server can not only be expensive, but difficult too. Purchasing web hosting allows someone to rent space on a web server, making it easier for the average person to have host a website online because all they need to do is upload their site files (no server setup is needed on their part). There are several types of web hosting accounts available:

1. Shared Hosting

2. VPS Hosting

3. Dedicated Server Hosting

All three of these hosting account types are similar in the fact that they all give you a web server to run your website on. They vary in how they are setup, the features they offer, and the level of customization you can have with each one.

What are the benefits of VPS Hosting?

VPS servers give you the affordability of shared hosting while at the same time giving you more power and control like a dedicated server.

Privacy

As you don't share your OS with anyone else, there are no other websites on your server that potentially have access to your files.

Customization

With a VPS Server, you have your own Operating System. This also means that you have your own instances of all server applications such as Apache, PHP, and MySQL.

If you need to have any of these services customized, you can make changes to suit the server to your needs.

Control

If you're installing server applications that require a system restart, you can do so at any time. Even though technically you share a server with other VPS servers, your VPS server can be restarted without affecting anyone else.

Dedicated Resources

On a VPS Server, you have dedicated amounts of RAM available to you at any time. Unlike shared hosting, there is no one else on your server that can use utilize all the RAM when you need it most!

What Is A Server?

A Desktop is basically a general purpose machine, geared for running the activities of the one user sat in front of it, whereas a Server is typically a machine that users do not directly logon to, but which provides services or functionality to one or more Desktops on it's network.

The Difference between a Desktop and a Server

It's best to think of Desktop and Servers in terms of an analogy: Desktops are like a Handyman: they can do most jobs, but perhaps do not have the skills to do them as quickly or as well as a specialist in that area. Servers can be thought of more in terms of a Tradesman (-like a plasterer, carpenter, electrician, etc): they are dedicated to certain tasks and can do a faster, better job than the generalist Handyman.

Typically, we try to hive off functions common to all desktops on a network and instead put them on a dedicated Server, which will provide that functionality to it's Desktop clients. In this way, we free up resources on the Desktops, making them run quicker and more efficiently.

Some typical Server uses are:

  • eMail Server
  • Central File Server (e.g. DLNA)
  • Web Server
  • Internet Firewall or HTTP Proxy
Why Should I Create a Linux Server?

There are two main reasons for setting up a server within the home:

As a central repository for data shared by all clients:

For example, you may want to keep your photos, music, videos on a single machine that can be accessed from the other PCs, your web-enabled Tv(s), Blu-Ray player, etc

To free up resources on your client PCs:

If your clients are slow, due to having to run various services like firewalls or anti-virus, it's possible to configure a server to serve up these functions, so you can remove them from your client PCs Once you have built your server, you need to start by installing the Operating System.

What Is SEO?

SEO (Search Engine Optimization) is the activity of optimizing Web pages or whole sites in order to make them more search engine friendly, thus getting higher positions in search results. It is the process of affecting the visibility of a website in a search engine’s “natural” or “organic” (not paid for) search results. SEO is sometimes also called SEO copywriting because most of the techniques that are used to promote sites in search engines deal with text.

  • SEO Stands for Search Engine Optimization.
  • SEO is all about optimizing a website for Search Engines.
  • SEO is the process of designing and developing a web site to rank well in search engine results.
  • SEO is to improve the volume and quality of traffic to a web site from search engines.
  • SEO is a subset of search engine marketing.
  • SEO is the art of ranking in the search engines.
  • SEO is marketing by understanding how search algorithms work and what human visitors might search.

If you plan to do some basic SEO, it is essential that you understand how search engines work and which items are most important in SEO.

How Search Engine Works ?

Search engines perform several activities in order to deliver search results

  • Crawling - is the process of fetching all the web pages linked to a web site. This task is performed by a software, called a crawler or a spider (or Googlebot, as is the case with Google).
  • Indexing - is the process of creating index for all the fetched web pages and keeping them into a giant database from where it can later be retrieved. Essentially, the process of indexing is identifying the words and expressions that best describe the page and assigning the page to particular keywords.
  • Processing - When a search request comes, the search engine processes it . i.e. it compares the search string in the search request with the indexed pages in the database.
  • Calculating Relevancy - Since it is likely that more than one pages contains the search string, so the search engine starts calculating the relevancy of each of the pages in its index to the search string.
  • Retrieving Results - The last step in search engines' activities is retrieving the best matched results. Basically, it is nothing more than simply displaying them in the browser.
  • Search engines such as Google and Yahoo! often update their relevancy algorithm dozens of times per month. When you see changes in your rankings it is due to an algorithmic shift or something else outside of your control.
  • Although the basic principle of operation of all search engines is the same, the minor differences between their relevancy algorithm lead to major changes in results relevancy.

What is SEO Copywriting?

SEO Copywriting is the technique of writing the viewable text on a web page in such a way that it reads well for the surfer, and also targets specific search terms. Its purpose is to rank highly in the search engines for the targeted search terms.

As well as the viewable text, SEO Copywriting usually optimizes other on-page elements for the targeted search terms. These include the Title, Description and Keywords tags, headings and alt text.

The idea behind SEO Copywriting is that search engines want genuine content pages and not additional pages (often called "doorway pages") that are created for the sole purpose of achieving high rankings.

What is Search Engine Rank?

When you search any keyword using a search engine then it displays thousands of results found in its database. A page ranking is measured by the position of web pages displayed in the search engine results. If Search engine is putting your web page on first position then your web page rank will be number 1 and it will be assumed as with a high rank.

SEO is the process of designing and developing a web site to attend a high rank in search engine results.

What is on-page and off-page SEO

Conceptually, there are two ways of doing SEO

  • On-Page SEO- This includes providing good content, good keywords selection. putting keywords on correct places, giving appropriate title to every page etc.
  • Off-Page SEO - This includes link building, increasing link popularity by submitting in open directories, search engines, link exchange etc.
Orokon SEO Service

Optimization of Title and Meta Tags on front Page, Posts, Pages, Categories, Tags and other taxonomies. Installation of SEO tools and plugins onto your website. This service has a standard price of $160. This service doesnt guarantee you immediate results because the whole SEO industry is about probability and not certainty. The other reason is the fact that other websites have been around for many decades and are well optimised and well known by Google engine and may populate on higher results than you. We just increase your probability is ranking high or moving high upwards on the ranks gradually.

Gentoo Linux

Gentoo is a free operating system based on either Linux or FreeBSD that can be automatically optimized and customized for just about any application or need. Extreme configurability, performance and a top-notch user and developer community are all hallmarks of the Gentoo experience. Thanks to a technology called Portage, Gentoo can become an ideal secure server, development workstation, professional desktop, gaming system, embedded solution or something else -- whatever you need it to be. Because of its near-unlimited adaptability, we call Gentoo a metadistribution.

Of course, Gentoo is more than just the software it provides. It is a community built around a distribution which is driven by more than 300 developers and thousands of users. The distribution project provides the means for the users to enjoy Gentoo: documentation, infrastructure (mailinglists, site, forums ...), release engineering, software porting, quality assurance, security followup, hardening and more. To advise on and help with Gentoo's global development, a 7-member council is elected on a yearly basis which decides on global issues, policies and advancements in the Gentoo project.

Chrooting MySQL & MariaDB

How to chroot MySQL and MariaDB on recent linux systems. This howto is based on Gentoo but should be fairly easily adoptable to any other linux distribution.

Getting started

install MySQL or MariaDB and create the basic configuration emerge -av mariadb emerge --config mariadb

Setting up the chroot

assuming you want to install the chroot to /chroot/sql # create necessary directories mkdir -p /chroot/sql/{usr/share,tmp,lib,etc,var/lib,var/run/mysqld,var/log/mysql} # copy needed system libraries, required for user switching cp /lib/{libnsl.so.1,libnss_compat.so.2} /chroot/sql/lib/ # copy mysql environment files to the chroot, make sure mysql is stopped! cp -a /var/lib/mysql /chroot/sql/var/lib/ cp -a /usr/share/mysql /chroot/sql/usr/share/ # fix directory permissions chown mysql:mysql /chroot/sql/{tmp,var/run/mysqld,var/log/mysql} # let mysql know what uid to run as grep ^mysql /etc/passwd > /chroot/sql/etc/passwd

Adjusting configuration files

The main part is already done, configuring MySQL is a fast one. In /etc/mysql/my.cnf addchroot = /chroot/sql to the [mysqld] section Change socket = /var/run/mysqld/mysqld.sock tosocket = /chroot/sql/var/run/mysqld/mysqld.sock in the [client] section.

Finishing

Actually that’s all to be done, but the init.d script won’t work any more. Things to take care of: make the init.d script aware of the new pid file location and maybe make the socket available at the default location for all programs to stupid to rely on the path supplied in your my.cnf. This can easily be fixed through some changes in your /etc/init.d/mysql script. Here is a fixed one (which also allows you running without a chroot) based on dev-db/mysql-init-scripts-2.0_pre1-r2 modified mysql init script Sidenote: MySQL/MariaDB installs a useful script called mysql_secure_installation to remove unnecessary accounts and the test database

Chrooting Apache Webserver using Mod Security

Howto chroot apache web server using the mod_security extension.

This howto is based on Gentoo but should be fairly easily adoptable to any other linux distribution.

Getting started

It is assumed your chroot will be created in /svr/www . Adopt accordingly. First install apache and mod_security emerge -av apache mod_security

create the chroot directory, e.g. /svr/www and the directory for the pid file mkdir -p /svr/www/var/run

Configuring apache web server

Not much to do here. Just make sure to exclude the chroot directory in all your vhost config files and the DocumentRoot setting. E.g. If your chroot is /svr/www and your website is located in /svr/www/htdocs/mywebsite set DocumentRoot to /htdocs/mywebsite.

In /etc/conf.d/apache2 make sure your APACHE2_OPTS variable contains -D SECURITY and add PIDFILE=/svr/www/var/run/apache2.pid

Configuring ModSecurity

In /etc/apache2/modules.d/79_modsecurity.conf add to the section SecChrootDir /svr/www

Basically that’s it!

However you might experience some minor annoying things with this very basic configuration. So here are the problems I got and how I fixed them.

Fixing init script not killing apache

Your init script will probably try to stop apache and eventually time out or complain about a missing pid file.

add to /etc/apache2/modules.d/79_modsecurity.conf

PidFile /svr/www/var/run/apache2.pid

and in your /etc/init.d/apache2 script change the stop command. You should find some line like

${APACHE2} ${APACHE2_OPTS} -k stop

this needs to be changed by adding -D STOP e.g.

${APACHE2} ${APACHE2_OPTS} -D STOP -k stop

Mounting the mysql socket inside the chroot

You will probably run apache with mod_php or mod_python which need access to your favourite sql server.

For MySQL/MariaDB first create the corresponding directory:

mkdir /svr/www/var/run/mysqld

Edit your mysql init script (/etc/init.d/mysql) to bind the socket into your apache chroot.

mount --bind /var/run/mysqld/mysqld.sock /svr/www/var/run/mysqld/mysqld.sock

This command should do the job. Add it somewhere to the bottom of the start function after it was ensured mysql has actually been started. You can have a look at the modified mysql init script in this article: Chrooting MySQL and MariaDB

I also had to create a dummy file to mount the socket on. Not sure if this is intentional or a bug in mount.

touch /svr/www/var/run/mysqld/mysqld.sock

Resolving DNS

If you have scripts which need DNS resolving you have to copy another lib:

cp /lib/libnss_dns.so.2 /svr/www/lib/

cp /etc/{hosts,resolve.conf} /svr/www/etc/

Sending emails

To be able to send emails you need to have a sendmail-compatible program inside the chroot. Again, this is only needed if you run dynamic scripts like mod_php/mod_python/mod_whatever. You could use ssmtp because it’s lightweight :

euse -p mail-mta/ssmtp -D mta ssl ipv6 && emerge -av mail-mta/ssmtp

mkdir /svr/www/{bin,lib,etc}

cp /lib/{ld-linux-x86-64.so.2,libc.so.6} /svr/www/lib

cp /usr/sbin/ssmtp /svr/www/bin/sendmail

cp -r /etc/ssmtp /svr/www/etc/ssmtp

now simply edit the ssmtp.conf inside the chroot to reference a valid smtp server (e.g. 127.0.0.1:25).

Contact Us

We'd be thrilled to help your company – small or large – deliver products that better serve your customers' goals.