Virtual Host

De WikiSalud
(Diferencias entre revisiones)
Saltar a: navegación, buscar

Revisión de 11:38 10 oct 2012

¿Qué es un Virtual Host?

El término Virtual Host se refiere a la práctica de ejecutar más de un sitio web (por ejemplo, empresa1.ejemplo.com y empresa2.ejemplo.com) en la misma máquina. Los virtual host pueden ser "basados en la IP", lo que significa que se tiene una IP diferente para cada sitio web, o "basados en el nombre", cuando se tienen varios nombres ejecutándose en la misma dirección IP. El hecho que se ejecuten en la misma máquina física no es evidente para el usuario.

Un ejemplo práctico

Supóngase que se desea publicar dos sitios web en la misma máquina para realizar pruebas en localhost, estos sitios serán basados en el nombre. Uno responderá al nombre de produccion.localhost y el otro como prueba.localhost. En la carpeta de configuración de Apache (en el caso de Debian, /etc/apache2/sites-available/) se crean los dos archivos con la configuración.

Como usuario root, moverse a la carpeta:

cd /etc/apache2/sites-available/

Con un editor de texto crear los archivos descritos a continuación y colocar el contenido respectivo.

Contenido del archivo /etc/apache2/sites-available/produccion.localhost

# Inicio del archivo
<VirtualHost localhost> 
        ServerName produccion.localhost 
        DocumentRoot /var/www/produccion
        <Directory /var/www/produccion > 
                Options Indexes FollowSymLinks MultiViews 
                AllowOverride None 
                Order allow,deny 
                allow from all 
        </Directory> 
        ErrorLog ${APACHE_LOG_DIR}/error-produccion.localhost.log 
        # Possible values include: debug, info, notice, warn, error, crit, 
        # alert, emerg. 
        LogLevel warn 
        CustomLog ${APACHE_LOG_DIR}/access-produccion.localhost.log combined 
</VirtualHost>
# Fin del archivo

Contenido del archivo /etc/apache2/sites-available/prueba.localhost

# Inicio del archivo
<VirtualHost localhost> 
        ServerName prueba.localhost 
        DocumentRoot /var/www/prueba
        <Directory /var/www/prueba > 
                Options Indexes FollowSymLinks MultiViews 
                AllowOverride None 
                Order allow,deny 
                allow from all 
        </Directory> 
        ErrorLog ${APACHE_LOG_DIR}/error-prueba.localhost.log 
        # Possible values include: debug, info, notice, warn, error, crit, 
        # alert, emerg. 
        LogLevel warn 
        CustomLog ${APACHE_LOG_DIR}/access-prueba.localhost.log combined 
</VirtualHost>
# Fin del archivo

Luego, como root ejecutar:

a2ensite produccion.localhost
a2ensite prueba.localhost

Reiniciar el servicio de Apache

/etc/init.d/apache2 restart

Consideraciones adicionales

Si lo que se desea es que los sitios web publicados sean basados en la IP. En la directiva Virtualhost se coloca la IP respectiva. Por ejemplo:

# Inicio del archivo
<VirtualHost 127.0.0.2> 
        ServerName test.localhost 
        DocumentRoot /var/www/prueba
        <Directory /var/www/prueba > 
                Options Indexes FollowSymLinks MultiViews 
                AllowOverride None 
                Order allow,deny 
                allow from all 
        </Directory> 
        ErrorLog ${APACHE_LOG_DIR}/error-prueba.localhost.log 
        # Possible values include: debug, info, notice, warn, error, crit, 
        # alert, emerg. 
        LogLevel warn 
        CustomLog ${APACHE_LOG_DIR}/access-prueba.localhost.log combined 
</VirtualHost>
# Fin del archivo
De esta manera, el sitio responderá tanto al nombre (test.localhost) como a la IP (127.0.0.2). Se debe agregar en el archivo /etc/hosts la IP. Por ejemplo:
# Inicio del archivo
127.0.0.1       localhost
127.0.0.2       test.localhost
# Fin del archivo

Si se desea configurar un virtual host basado en nombre, en el archivo /etc/hosts se indican por cada ip (en la misma línea) los sitios web habilitados.

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas