Setting up an Apache2 Virtual Host for a Subdomain
I’ve done this several times before, so noting it for my own quick reference. This might be of help to others finding their way around Apache deployments.
I’ve tried this on a Ubuntu 9.04 (Jaunty Jackalope) with Apache2. Here is what we are trying to setup:
- Subdomain for your web project: http://mysubdomain.mydomain.com (say, http://staging.mykillerapp.com)
- You wish to give restricted access to a people in your team, to deploy the project. You don’t wish to give them sudo or admin rights to your Linux box.
Creating a Sub-domain
Your hosting provider is likely to give you a web-based domain management tool (CPanel or something else). Add a DNS “A record” as follows:
subdomain PUBLICIPADDRESS A
For example:
staging x.x.x.x A
Create a non-root user account to manage your application
$ adduser staging
I’m assuming that staging home is the usual /home/staging. Lets create a www under it, which will serve as the root directory for our virtual host /home/staging/www/
Enable the Apache Virtual Host Module
sudo a2enmod vhost_aliasCreate a virtual host configuration for Apache2
Apache2 tracks the virtual hosts configurations in this location: /etc/apache2/sites-available/. There will be a default config file; Lets make a copy of that file at the same directory location.
1 2 3 | $ cd /etc/apache2/sites-available/ $ cp default staging $ vi staging |
Make your virtual host file look like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <VirtualHost *:80> ServerName staging.mykillerapp.com ServerAdmin appadmin@mykillerapp.com DocumentRoot /home/staging/www/ <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /home/staging/www/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, # warn, error, crit, alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost> |
Enable your virtual host
$ sudo a2ensite stagingThis sets up a soft-link in /etc/apache2/sites-enabled/ which points to your virtual host config file.
Finally, restart apache
$ sudo service apache2 restartHit your virtual host at http://staging.mykillerapp.com
