If we want to publish various domains, we would not need the same number of servers as domains.
With Apache Virtual Hosting we can have all domains we need in one server.
Today is the firs part to deploy in practice this subject, in some days we will have the second part: Apache Virtual Hosting (Part 2).
There are two virtual hosting types:
- Name based: One IP to various domains.
- IP based: Every domain have its IP, every IPs as network interfaces have our server.
Usually (in hme servers) we take the name-based hosting, therefore we host more than one domain, or subdomains, or host other domains and portals (I hope with payment). It happens to me, then I am going to tell you my experience in some cases and concrete applications.
In Apache2 we can adminitrate virtual hosting in a directory. Then we can do so many files as hosted sites you have in the file /etc/apache2/sites-available/default.
Basic site: www
The site www.tudominio.com is a subdomain in tudominio.com, therefore this example runs for blog.tudominio.com, motos.tudominio.com,….
BE CAREFUL: Never forget type your domain in your DNS server (you can study in depth here); or throug your Domain Register if you do not have DNS server.
The tag basic structure is:
<VirtualHost *> ServerAdmin email@example.com ServerName www.tudominio.com ServerAlias tudominio.com DocumentRoot /var/www/tudominio 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 ServerSignature On </VirtualHost>
Commentin the tags one by one:
- ServerAdmin: Web server administrator mail.
- ServerName: What domain name petitions server must reply.
- ServerAlias: Solve errors, as forgetful clients who forget typing www.
- DocumentRoot: directory where I copy my published data.
- ErrorLog: Log where the daemon type the errors. So we do not abuse of syslog.
- LogLevel: Detail level for the errors receptioned.
- CustomLog: Log where type your clients accessed.
- ServerSignature: Autogenerated pages final signature; where usually appends the operating system, web server, verions, etc.
Redirection to a executable cgi out of web tree
For example we can publish the charge lever of an UPS; the manufacturer provides a cgi:
<VirtualHost *> ServerName sistema.tudominio.com DocumentRoot /var/www/tudominio/sistema ScriptAlias /sai/ "/usr/lib/cgi-bin/nut/" <Directory "/usr/lib/cgi-bin/nut"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all </Directory> </VirtualHost>
We have the the two first lines the name for the domain of the response, and the rrot directory. Really al this the estrategy is in ScriptAliastag and the Directory directive, wich be able to be hoste in every domain:
- ScriptAlias: Is the nick (/sai/) which will be the directory where are hosted our cgi’s.
- Directory: Only specifies how i managed a directory out of the tree.
In this way we call from our web browser to the cgi file as follows: http://sistema.tudominio.com/sai/ejecutable.cgi
You can continue the second part of this subject in the link: Apache Virtual Hosting (Part 2).