APACHE :: Configurar Virtual hosts
Apache es un servidor web HTTP de código abierto multiplataforma que implementa el protocolo HTTP/1.11 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en el código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache Software Foundation.
Y poco más se puede escribir, que no se sepa ya o que no se pueda consultar con mejor detalle en la wikipedia o en su página oficial, sin que esto parezca una entrada enciclopédica.
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
<virtualhost 127.0.0.1:80>
ServerName symfony.local
DocumentRoot /home/alejandro/workspace/symfony/tutorial/
</virtualhost>
#CakePHP
<virtualhost 127.0.0.1:80>
ServerName cakephp.local
DocumentRoot /home/alejandro/workspace/cakephp/tutorial/
</virtualhost>Finalmente, reiniciamos el servidor.
# /etc/init.d/apache2 restart
Nota: Solo se incluyeron los parámetros necesarios para hacer funcionar los virtual hosts.
Recent Comments