Apache2 name-based virtual hosting on Debian/Ubuntu
Introduction
This tutorial will walk you through the configuration of name-base virtual hosting using Apache2 server in Debian and Ubuntu. The default configuration of Apache server in Debian/Ubuntu is limited only to one website based on your IP Address. We will setup a name-based virtual hosting to have multiple websites using only one machine. After this tutorial, you will have example.com, example.net, and example.org hosted in your computer.
What is Virtual Host?
With virtual host, you can host multiple web site on a single machine.
Virtual Host can be:
Ip-based - you can host multiple website on a single server however, you must assign each website with a different IP Address.
Name-based - you can host multiple website on a single server or a single IP Address but proper DNS configuration is required.
Step-by-Step Configuration
This tutorial assumes that you already have a working apache2 web server. If you don't have it, please install it first before taking these steps:
1. Edit your /etc/hosts file
and add the example.com, example.net, and example.org in your hosts file.
127.0.0.1 localhost 127.0.0.1 example.com 127.0.0.1 example.net 127.0.0.1 example.org 192.168.0.1 ubuntu # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
This will tell the system that example.com, example.net and example.org are not to be looked for on the internet, but on the local machine instead.
2. Create a a separate document root, cgi-bin directory and logfile directory for each website you want to host. You can place these beneath the standard Debian prefix of /var/www or you may use a completely different directory.
mkdir /var/www/example.com/cgi-bin
mkdir /var/www/example.com/logs
mkdir /var/www/example.net
mkdir /var/www/example.net/cgi-bin
mkdir /var/www/example.net/logs
mkdir /var/www/example.org
mkdir /var/www/example.org/cgi-bin
mkdir /var/www/example.org/logs
3. We will enable Virtual Host in your /etc/apache2/apache2.conf file. Open /etc/apache2/apache2.conf file
and add this line to the end of the file
- NameVirtualHost 127.0.0.1:80
- NameVirtualHost 127.0.0.1:443
4. Disable the Apache2 default host configuration
5. Lets create a virtual host configuration for each site. You don't have to create from scatch actually, you can copy the default host configuration and customize it.
cp /etc/apache2/site-available/default /etc/apache2/site-available/example.net
cp /etc/apache2/site-available/default /etc/apache2/site-available/example.org
The virtual host configuration should look like this.
- <VirtualHost 127.0.0.1:80>
- ServerAdmin webmaster@localhost
- ServerName example.com
- DocumentRoot /var/www/example.com
- <Directory />
- Options FollowSymLinks
- AllowOverride None
- </Directory>
- <Directory /var/www/example.com>
- Options Indexes FollowSymLinks MultiViews
- AllowOverride None
- Order allow,deny
- allow from all
- </Directory>
- ScriptAlias /cgi-bin/ /var/www/example.com/cgi-bin/
- <Directory "/var/www/example.net/cgi-bin">
- AllowOverride None
- Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
- Order allow,deny
- Allow from all
- </Directory>
- ErrorLog /var/www/example.com/logs/error.log
- CustomLog /var/www/example.com/logs/access.log combined
- ServerSignature On
- </VirtualHost>
6. Enable your virtual host configuration
a2ensite example.net
a2ensite example.org
7. Finally, restart your Apache2 server
Open your browser and type http://example.com, example.net, and example.org.


Delicious
Digg
StumbleUpon
Furl
Facebook
Twitter
Google
Yahoo
Buzz Up!
LinkedIn
Technorati



Comments
for you perfectly working introduction!
Great!
[...] Apache2 name-based virtual hosting on Debian/Ubuntu [...]
Wow, you really came with a great solution here. I am a freshman in web hosting but I want to move one further into blog hosting, this is the kind of business I want to be involved in. Your little tutorial is brilliant, congrats for that!
[...] Apache2 name-based realistic hosting on Debian/Ubuntu Posted in Web Hosting on Aug 26th, 2008, 5:35 [...]
Post new comment