I am a fan of the Seagull framework and the last time I checked, Hostmonster was the cheapest webhost provider that allows unlimited websites, domains and traffic.
The only limitation for Hostmonster is the number of files which is capped at 50,000. This is a problem if you install multiple copies of a framework with their own copies of the pear libraries. To get around this I install the websites under ~/www and the seagull libraries under ~/seagull/lib-0.6.8. I include the library version so that I can use the latest library on the current project I am working on without affecting the existing websites. When I go back to update the other websites I bring them forward to the latest version too.
So here is how to install a new Seagull website using the above structure.
1. Download the latest Seagull bug fixes and rename for the new website:
$ cd /home/myuser/seagull
$ svn co http://svn.seagullproject.org/svn/seagull/branches/0.6-bugfix
$ mv 0.6-bugfix mywebsite
2. Set up a vhost entry for the new website pointing to the new directory. If you’re not using Arch Linux the paths may be different:
$ vi /etc/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerName mywebsite
DocumentRoot /home/myuser/seagull/mywebsite
mywebsite
ServerAdmin me@me.com
ErrorLog /home/myuser/logs/mywebsite-access_error
CustomLog /home/myuser/logs/mywebsite-access_log common
</VirtualHost>
3. Set up an /etc/hosts entry for mywebsite pointing to 127.0.0.1
4. Install seagull by browsing to http://website. Note that the database name needs to be myuser_mywebsite, as all hostmonster databases are prefixed with myuser_.
5. Now move the www directory and reconfigure seagull and apache:
$ mv /home/myuser/seagull/mywebsite/www /home/myuser/www/mywebsite
$ vi /etc/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerName mywebsite
DocumentRoot /home/myuser/www/mywebsite/www
mywebsite
ServerAdmin me@me.com
ErrorLog /home/myuser/logs/mywebsite-access_error
CustomLog /home/myuser/logs/mywebsite-access_log common
</VirtualHost>
$ vi /home/myuser/seagull/mywebsite/var/mywebsite.conf.php
# $conf['path']['webRoot'] = '/home/myuser/seagull/mywebsite/www';
$conf['path']['webRoot'] = '/home/myuser/www/mywebsite';
$ vi /home/myuser/www/mywebsite/index.php
//$rootDir = realpath(dirname(__FILE__) . '/..');
//$varDir = realpath(dirname(__FILE__) . '/../var');
$rootDir = '/home/myuser/seagull/mywebsite';
$varDir = $rootDir . '/var';
6. Move libs up a directory so it can be shared
$ cd /home/myuser/seagull/mywebsite/
$ mv lib ../lib-0.6.8
$ ln -s /home/myuser/seagull/lib-0.6.8 lib