Cómo configurar un Virtual Host de Apache en Linux

El servidor web de Apache es una de las herramientas más populares de Internet para servir aplicaciones web, si no la que más. Es por esto que ofrece muchas posibilidades de configuración, como por ejemplo crear distintos servidores virtuales para diferentes dominios. Esto quiere decir que en una misma máquina con una instancia de Apache, es posible tener los diferentes dominios geekytheory.com y geekyjuegos.com sin necesidad de tener dos servidores diferentes. Esto se realiza mediante la configuración de hosts virtuales en Apache para que apunten a distintas carpetas, y es lo que vamos a aprender en este tutorial, el cual realizaré en una máquina Ubuntu 14.04.

Prerrequisitos

Simplemente hay que tener instalado el servidor Apache. Para ello se ejecutan los siguientes comandos: sudo apt-get update sudo apt-get install apache2

1. Crear los directorios

El primer paso es crear los directorios donde se encontrará el código de las aplicaciones web: sudo mkdir -p /var/www/html/geekytheory.com sudo mkdir -p /var/www/html/geekyjuegos.com

2. Permisos

El usuario root es ahora mismo el propietario de los directorios que acabamos de crear, por lo que para poder modificar los archivos contenidos en dichos directorios con nuestro usuario es necesario dar permisos: sudo chown -R $USER:$USER /var/www/html/geekytheory.com sudo chown -R $USER:$USER /var/www/html/geekyjuegos.com La variable $USER contiene el valor del usuario que está ejecutando la acción. Aparte de esto, para poder acceder a las páginas correctamente, conviene dar otros permisos a la carpeta raíz del servidor: sudo chmod -R 755 /var/www/html

3. Crear los Virtual Host

Los archivos Virtual Host contienen información específica para cada dominio. Ya existe un archivo de configuración por defecto que utilizaremos como plantilla para crear los archivos de geekytheory.com y geekyjuegos.com: sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/geekytheory.com.conf sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/geekyjuegos.com.conf Tras eliminar los comentarios de los archivos para hacerlos más legibles, quedarán ambos así: <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> Como podéis observar, ambos apuntan al directorio /var/www/html, por lo que hay que hacer que apunten a los directorios creados anteriormente. En el archivo de configuración geekytheory.com.conf, cambiamos el DocumentRoot a DocumentRoot /var/www/html/geekytheory.com y geekyjuegos.com.conf a DocumentRoot /var/www/html/geekyjuegos.com. Además de esto, hay que modificar las opciones ServerAdmin, ServerName y ServerAlias para que cada uno responda a un dominio diferente. El archivo de configuración de geekytheory.com quedará de la siguiente manera: <VirtualHost *:80> ServerAdmin webadmin@dominio.com ServerName geekytheory.com ServerAlias www.geekytheory.com DocumentRoot /var/www/html/geekytheory.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> Y el de geekyjuegos.com será el siguiente: <VirtualHost *:80> ServerAdmin webadmin@dominio.com ServerName geekyjuegos.com ServerAlias www.geekyjuegos.com DocumentRoot /var/www/html/geekyjuegos.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

4. Habilitar los nuevos Virtual Host

Para habilitar los nuevos Virtual Host utilizaremos la herramienta a2ensite de Apache: sudo a2ensite geekytheory.com.conf sudo a2ensite geekyjuegos.com.conf

5. Pruebas

Ahora mismo, si accediésemos a geekytheory.com y geekyjuegos.com desde un navegador y los DNS estuvieran bien configurados, veríamos un directorio vacío, por lo que vamos a crear dos archivos index.html, uno en cada carpeta para ver si todo funciona correctamente. El archivo de geekytheory.com será el siguiente: <html> <head> <title>Geeky Theory</title> </head> <body> <h1>Geeky Theory configurado correctamente</h1> </body> </html> Y el de geekyjuegos.com será el siguiente: <html> <head> <title>Geeky Juegos</title> </head> <body> <h1>Geeky Juegos configurado correctamente</h1> </body> </html> Si todo va bien, al entrar en el navegador veremos lo siguiente:

Como podéis observar, configurar distintos Virtual Host en Apache es realmente sencillo.