2010-01-21

APACHE :: Configurar Virtual hosts

Pasemos al tema central de esta entrada ¿Cómo configurar distintos sitios en una misma máquina? Pero, primero veamos que es un virtual host.

Virtual hosts

El término virtual host se refiere a la práctica de ejecutar más de un sitio web en una sola máquina. Los virtual hosts pueden ser ‘basados en IP’, tienes una dirección IP diferente para cada sitio web, o ‘basados en nombre’, tienes varios nombres ejecutándose en una sola dirección IP. El hecho de que se están ejecutando en el mismo servidor físico no es evidente para el usuario final.

Problema

Tenemos nuestro localhost predeterminado: http://localhost/ y vamos a iniciar unos cuantos proyectos para los cuales necesitamos sus respectivos sitios separados del localhost.

En este momento tenemos algo como esto:

Dirección IP Dominio Document root
127.0.0.1 http://localhost/ /var/www/

Y nosotros queremos algo como esto:

Dirección IP Dominio Document root
127.0.0.1 http://localhost/ /var/www/
127.0.0.1 http://symfony.local/ /home/alejandro/workspace/symfony/tutorial/
127.0.0.1 http://cakephp.local/ /home/alejandro/workspace/cakephp/tutorial/

Es decir, necesitamos que tres diferentes sitios (http://localhost/, http://symfony.local/ y http://cakephp.local/) estén alojados en la misma computadora, en este caso en local (127.0.0.1). De esta forma al teclear la dirección: http://localhost/, se nos mostrará el contenido de la carpeta /var/www/ y de manera análoga ocurrirá lo mismo con las demás direcciones configuradas.

Qué ventajas tiene esto, básicamente poder separar las configuraciones de Apache para cada sitio, es más estructurado, se pueden implementar las configuraciones que se tendrán en el servidor de producción (configuraciones, URL, etc.), seguridad, etc.

Solución

En el archivo /etc/hosts agregamos las siguientes líneas:

127.0.0.1 symfony.local
127.0.0.1 cakephp.local

En el archivo /etc/apache2/ports.conf eliminamos la línea.

NameVirtualHost *:80

En el archivo /etc/apache2/sites-available/default colocamos la siguiente línea al inicio del archivo.

NameVirtualHost 127.0.0.1:80

Al final de dicho archivo agregamos la configuración para los sitios http://symfony.local y http://cakephp.local.

#Symfony

ServerName symfony.local
DocumentRoot /home/alejandro/workspace/symfony/tutorial/


#CakePHP

ServerName cakephp.local
DocumentRoot /home/alejandro/workspace/cakephp/tutorial/

Finalmente, reiniciamos el servidor.

# /etc/init.d/apache2 restart

Nota: Solo se incluyeron los parámetros necesarios para hacer funcionar los virtual hosts.

No hay comentarios: