Jueves 28/08/2008 06:42:45 AM

El genio es un uno por ciento de inspiración y un noventa y nueve por ciento de transpiración - "Thomas Edison"

VirtualHosts en Apache 1.3

¿Qué es VirtualHosts? Instalación y configuración
Historial

¿Qué es VirtualHosts?

VirtualHost consiste en usar un único servidor web para manejar más de un dominio a la vez. Esto ofrece la ventaja de con un solo servidor Apache poder manejar varios dominios al mismo tiempo sin tener que estar corriendo un servidor para cada dominio.

Instalación

Para poder usar VirtualHosts en Apache 1.3 hace falta que el módulo mod_proxy este habilitado en Apache. Este módulo es necesario para que Apache pueda atender peticiones de diversos sitios.

Una vez que se tenga dicho módulo instalado en Apache nos creamos los siguientes dominios en local:

localhost
www.lostscene.com

Para crearlos hay que ir al archivo /etc/hosts y añadir las siguientes líneas:

127.0.0.1 localhost
127.0.0.1 www.lostscene.com

La primera columna indica la IP que va a responder y la segunda el nombre del sitio que hay en esa IP. El archivo /etc/hosts se consulta antes de hacer busquedas en servidores DNS por lo que si en el navegador se escribe http://www.lostscene.com ira primero al /etc/hosts y mirara que entradas tiene y en caso de coincidir alguna no ira a buscar el nombre de dominio a un servidor DNS.

Ahora toca configurar Apache para que pueda resolver las peticiones a la IP 127.0.0.1. Para ello hay que modificar el archivo de configuración del Apache httpd.conf. Si se va a trabajar con dominios virtuales lo primero que hay que hacer es comentar el parámetro ServerName y sustituirlo por NameVirtualHost. Para local quedaría el parámetro:

NameVirtualHost 127.0.0.1

El parámetro que recive NameVirtualHost es la IP en la que van a estar albergados los VirtualHost.

Ahora queda configurar los dos dominios virtuales que tengo para que Apache los pueda manejar. En mi caso en mi archivo de configuración los he definido de la siguiente forma:

<VirtualHost 127.0.0.1>
    ServerAdmin webmaster@host.some_domain.com
    DocumentRoot /var/www/lostscene
    ServerName www.lostscene.com
    ErrorLog /var/log/apache/www.lostscene.com-error.log
    CustomLog /var/log/apache/www.lostscene.com-access.log combined
</VirtualHost>

<VirtualHost 127.0.0.1>
    ServerAdmin webmaster@host.some_domain.com
    DocumentRoot /var/www/localhost
    ServerName localhost
    ErrorLog /var/log/apache/localhost-error.log
    CustomLog /var/log/apache/localhost-access.log combined
</VirtualHost>

En la etiqueta VirtualHost al lado se pone la IP que se ha definido en el parametro NameVirtualHost. Después entre las etiquetas VirtualHost se definen las opciones que se quieren para cada dominio. En este caso para ambos se ha definido lo siguientes:

DocumentRoot -> donde van a estar las páginas para cada dominio
SeverName -> es el nombre del dominio. Ha de coincidir con lo que hemos puesto en el archivo /etc/hosts
ErrorLog -> donde se almacenaran los logs de error para ese dominio
CustomLog -> donde se almacenaran los logs para ese dominio

Se pueden definir más paramentros para cada dominio pero en este caso he puesto más o menos lo más básico. Para los parametros que no se definen dentro de VirtualHosts se toman de la configuración global de Apache. Esto quiere decir que si por ejemplo para algún dominio no hubiese definido por ejemplo el parámetro ErrorLog el log de error para ese dominio se hubiese creado según lo que pusiese en el parametro ErrorLog que esta definido fuera de VirtualHost. Para mi caso ErrorLog tiene el siguiente valor ErrorLog /var/log/apache/error.log Por lo que si no hubiese definido ese parámetro los logs para ese dominio se hubiesen guardado en /var/log/apache/error.log

Historial del manual

17 de julio del 2005

Subida la primera versión del manual.