Web hosting options

For years my sites were all in Hostgator shared hosting until about three years ago when my accounts kept on getting suspended for exceeding the allowable resources. My shared hosting then had a limit of 2GB disk space, 10GB monthly bandwidth and a couple of hundreds of RAM. Disk space and bandwidth were the lesser problems. My web host was complaining of my memory usage as a Drupal installation profile I used for a news site required a minimum 2GB of dedicated memory.

If your web sites do not require special server scripts, you may start with shared hosting and the market for this is huge, some providers even offering rock-bottom prices and extra bonus features. But not all of them are reliable on long term basis, so you have to choose your web hosting carefully. A convenient reference in this regard is Consumer Rankings which offer ranking for top hosting sites, web hosting price comparison and web hosting bandwidth comparison.

In addition, you can read reviews of top hosting sites and compare recorded uptime, ease of use and page loads. It is surprising also how add ons have increased dramatically. For less than 5$ a month, you can have over $200 worth of ads credits in Google, Bing/Yahoo and Facebook. Years back I given only $25 ads credit for Google Adsense. Some even offer advanced internet marketing tools.

It's also a curious thing that most shared hosting companies now offer unlimited disk space and unlimited bandwidth.

When I needed to install server-side scripts like Apache Solr Search and Varnish http accelerator, my next upgrade path was a Virtual Private Server (VPS). For a start, I chose a managed VPS which is bundled with cPanel control panel, the web host control panel that is easiest to use but, I would later learn, use up lots of memory.

Recently, I have dispensed with cPanel saving $10 a month and my VPS is now self managed. You also save at least $10 a month if your go for unmanaged VPS hosting. Moreover, cPanel has compatibility issue with Varnish. I now use the free versions of Virtualmin-Webmin as my control panel.

I have just recently started experimenting on cloud server web hosting with Rackspace and Amazon Web Services, which all things taken into account, cost you a monthly expense of $43 and $80 respectively.


Connecting Postgresql 9.0 and phpPgAdmin-5.0.3 to cPanel in Centos 6

After installing PostgreSql 9.0, compile php and apache using WHM > Easyapache --with-pgsql option

For instructions on installing PostgreSQL 9.0 in Centos 6, click here

Download phpPgAdmin 5.0.3.tar.gz to this location:

Extract the dowloaded file and rename the extracted phpPgAdmin-5.0.3 directed to phppgadmin.

Edit config.inc.php located in /usr/local/cpanel/base/3rdparty/phpPgAdmin/conf/config.inc.php

Find the line $conf['extra_login_security'] = true;

Set it to false.

Restart postgresql.
In WHM go to Restart Services > SQL Server (PgSQL)
Or in the console prompt type:
service postgresql-9.0 restart

I also restarted Apache
service httpd restart

At this point, the phpPgAdmin link shall be functional - but not the PostgreSQL link. If yo click it, cPanel will warn you that PostgreSQL is


PostgreSQL may be running but cPanel cannot find the data files.

Additional steps need to be done to connect Postgres to cPanel.

Edit pg_hba.conf located in /var/lib/pgsql/9.0/data
vi /var/lib/pgsql/9.0/data/pg_hba.conf
Find the following lines:
local all all md5
host all all md5

Change md5 to trust, thus:
local all all md5
host all all md5

This will be only temporary. In the succeeding steps "trust" shall be reverted to "m5" automatically.

Restart postgresql.

Go to SQL Services > Postgres Config

At this point, you are not ready yet to click the configuration buttons. If you do, WHM will warn that data directory could not be found.

Starting Postgresql version 9, postgresql installs files in different location and cPanel expects to find them in the old install locations.

So, we need to create symlinks from the new location to the old locations where cPanel expects to find the files.

Type the following in the console prompt (This has no equivalent in WHM):
ln -s /var/lib/pgsql/9.0/data /var/lib/pgsql
ln -s /var/lib/pgsql/9.0/backups /var/lib/pgsql

Then you can click the Install Config button and get a success confirmation message from WHM.

Re-enter the Postgres password and click Change Password.

Restart Postgresql.

If you check pg_hba.conf, you will find these llines again:
local all all md5
host all all md5

Note that trust has been reverted to md5.

Now you can access Postgresql 9.0 databases from cPanel using the PostgreSQL Databases or the phpPgAdmin link.


Installing Drush v3 in Centos 6

Here are notes I gathered on steps that successfully installed Drush version 3 in my Centos 6.

Move to home dir
cd ~

Remove current drush (if existent)
rm -rf ~/.drush/

Create drush directory (and hide it)
mkdir ~/.drush/

Move to new dir
cd ~/.drush/

Get Drush v3
curl -C - -O -s http://ftp.drupal.org/files/projects/drush-All-versions-3.0.tar.gz

Extract Drush v3
tar -xf drush*.tar.gz

Bin Drush tar
rm -f drush-All*.tar.gz

Pear install console_table
cd drush/includes
curl -C - -O -s http://download.pear.php.net/package/Console_Table-1.1.3.tgz

Extract Pear
tar -xf Console_Table*.tgz

Copy the file
cp Console_Table-1.1.3/Table.php table.inc

rm -r Console_Table-1.1.3
rm -f Console_Table*.tgz

Make drush command executable
cd ~/.drush/
chmod u+x drush/drush

Alias drush and put in bash profile
echo "alias drush='~/.drush/drush/drush'" >> ~/.bash_profile

'Source' the .bash_profile file so updates are made
source ~/.bash_profile

Make sure that we alias drush just in case source does not work
alias drush='~/.drush/drush/drush'

You should see three OK(s) below if the steps below properly executed.

Update Drush using Drush
~/.drush/drush/drush dl drush

Update drush_make and provision in drush/commands
~/.drush/drush/drush dl drush_make
~/.drush/drush/drush dl provision

Move updated additions to correct directory
mv ~/.drush/provision ~/.drush/drush/commands/
mv ~/.drush/drush_make ~/.drush/drush/commands/

You are done and drush is ready to use.


How to connect Postgresql 9.0 to an existing Webmin

If you installed Postgresql 9.0 or upgraded Postgresql to the latest version in a Linux system that has an existing Webmin application, you need to update Webmin using Module configuration for Postgresql.

Postgresql 9.0 installs files in directories different from its earlier versions.'

Here is a checklist of what need to be changed using Webmin's module configuration:

Path to psql command: /usr/pgsql-9.0/bin/psql

Command to start PostgreSQL: if [ -r /etc/rc.d/init.d/rhdb ]; then /etc/rc.d/init.d/rhdb start; else /etc/rc.d/init.d/postgresql-9.0 start; fi

Command to stop PostgreSQL: if [ -r /etc/rc.d/init.d/rhdb ]; then /etc/rc.d/init.d/rhdb stop; else /etc/rc.d/init.d/postgresql-9.0 stop; fi

Command to initialize PostgreSQL: if [ -r /etc/rc.d/init.d/rhdb ]; then /etc/rc.d/init.d/rhdb start; else /etc/rc.d/init.d/postgresql-9.0 initdb ; /etc/rc.d/init.d/postgresql-9.0 start; fi

Path to postmaster PID file: /var/run/postmaster-9.0.pid

Paths to host access config file: /var/lib/pgsql/9.0/data/pg_hba.conf

Default backup repository directory: /var/lib/pgsql/9.0/backups

Restart Webmin.

A fresh installation of Webmin however, automatically recognizes an existing Postgresql 9.0 and adjusts the Postgres paths in the initial module configuration, so the steps listed above are no longer necessary.


Installing Postgresql 9.0 in Centos 6

Installing Postgresql 9.0 in Centos 6 is done in few easy steps.

First, download the Postgresql 9.0 RPM package:
wget http://yum.pgrpms.org/9.0/redhat/rhel-6-x86_64/pgdg-centos90-9.0-5.noarch.rpm

Install the package:
rpm -i pgdg-centos90-9.0-5.noarch.rpm

To avoid conflict with older postgresql packages existing in the Centos distribution, you must tell yum to exclude these in the installation. You must edit the CentOS-Base.repo file:
vi /etc/yum.repos.d/CentOS-Base.repo

Add this line at the [base] section:

Verify that the new package is active:
yum list

Then yum install postgres:
yum install postgresql90 postgresql90-devel postgresql90-server postgresql90-libs

Initialize postgresql:
service postgresql-9.0 initdb

Then start postgresql:
service postgresql-9.0 start

You are done with the installation.

The configuration that I you still need to do is to is edit the postgresql.conf file located in /var/lib/pgsql/9.0/data/ Be sure to add this line in the config:
listen_addresses = '*'

To enable remote access, I added this to the pg_hba.conf located in the same directory:
host all all md5