Warning |
---|
The main part of this article has been moved but the sub pages still need to be completed. |
What is Virtual Hosting?
Virtual hosting configures Apache to be able to host more than one website on the same computer. As an example, let's say this Apache Web Server will host both www.earth.com and www.krypton.com. Here is how the process works,
...
Note |
---|
In the future, I will put a diagram to illustrate. |
Apache Differences on Ubuntu
Ubuntu/Debian organizes things slightly different than other systems when it comes to Apache. If you read other website that talk about Apache you might get confused. So here's how Ubuntu does things. You have the following key files,
...
This is enough to get us started, but feel free to read more details at Control-Escape.
My Virtual Hosting Strategy
There are so many different ways of doing this it's quite mind boggling. Here's my overall strategy:
...
I find this approach is complex enough to address the needs of even complex banking applications and at the same simple enough to implement for the intermediate level user.
Create Virtual Host Files
Looking in /etc/apache2/apache2.conf you will see a reference to the directory, /etc/apache2/sites-enabled/. Apache will look in this directory and load any virtual host file configurations.
...
Note that there is a disadvantage with specifying specific log files per virtual hosts because you can run out of file descriptors. The pro of course is simplicity and easy separation of your logs. Ther may be alternatives but don't hold your breath for me to find a solution and publish it. My clients rarely keep more than 3 virtual sites on the same machine.
Enable Virtual Host
Just because you created the virtual host does not mean it is enabled. To enable the virtual hosting,
...
Type in your browser, www.krypton.com. Because directory listing is enabled and there is no default html page usually index.html you should see an directory page listing the contents of /home/serveradmin/www.krypton.com/.
Disable Virtual Host
You can disable your reference using the equivalent sudo a2dissite .Again you must must restart Apache for the changes to take effect.
Under the Covers
The Ubuntu packaging enabled certain directives for you. If you are using a vanilla implementation of Apache you might need to do some more work namely using the Listen and NameVirtualHost directives.
...
Code Block | ||
---|---|---|
| ||
tpham@krypton:/etc/apache2$ find . -type f | xargs grep -i listen ./ports.conf:Listen 80 ./ports.conf: Listen 443 tpham@krypton:/etc/apache2$ find . -type f | xargs grep -i namevirtualhost ./ports.conf:NameVirtualHost *:80 ./ports.conf: # NameVirtualHost statement here tpham@krypton:/etc/apache2$ |
Next
There's much more to Apache than this. For example, we could set up public and private Online Shares. If you are serving real traffic you might want to read the next step about configuring logging. If you are just playing around then you can skip to setting up an application server.
Resources
http://httpd.apache.org/docs/2.0/vhosts/examples.html - official examples from Apache
...