Hosts virtuales: hospedar sitios web con Apache

Como mencionamos en una oportunidad anterior, Apache puede utilizarse para hospedar un solo dominio por equipo o varios de manera simultánea en el mismo sistema. En este último caso se utiliza una modalidad conocida como hosts virtuales basados en nombre, tema que trataremos en este post y en el próximo.

Hosts virtuales en Debian

Para ilustrar la manera de crear hosts virtuales, utilizaremos Debian e indicaremos las diferencias que existen con CentOS al finalizar el tema en el próximo post.

Paso 1 – Deshabilitar el host virtual por defecto

Para comenzar, debemos deshabilitar el host que Apache sirve por defecto (es decir, los contenidos de /var/www/html si es que no cambiamos el DocumentRoot desde el archivo de configuración). Cuando se instala Apache en Debian o alguno de sus derivados, viene acompañado de una serie de herramientas para facilitar la administración del servidor web. Una de ellas, a2dissite, nos permite deshabilitar sitios o hosts virtuales servidos por Apache muy fácilmente tal como podemos ver en la Fig. 1:

cd /etc/apache2/sites-available
a2dissite 000-default.conf
service apache2 reload
Hosts virtuales - Deshabilitar el host servido por defecto en Apache
Figura 1 – Deshabilitar el host servido por defecto en Apache

Paso 2 – Crear los archivos de configuración para los hosts virtuales

Dentro de /etc/apache2/sites-available crearemos un archivo de configuración por cada host virtual que deseemos. Supongamos que queremos hospedar los dominios aguantecla.com y mecopalinux.com, por lo que necesitaremos crear los archivos aguantecla.com.conf y mecopalinux.com.conf con los siguientes contenidos:

IMPORTANTE: Los archivos de configuración de los hosts virtuales deben terminar en .conf. De otra manera, no serán reconocidos por las herramientas que los activan o inhabilitan.

aguantecla.com.conf:

<VirtualHost *:80>
     ServerAdmin webmaster@aguantecla.com
     ServerName aguantecla.com
     ServerAlias www.aguantecla.com
     DocumentRoot /var/www/aguantecla.com/public_html/
     ErrorLog /var/www/aguantecla.com/logs/error.log
     LogLevel warn
     CustomLog /var/www/aguantecla.com/logs/access.log combined
</VirtualHost>

mecopalinux.com.conf:

<VirtualHost *:80>
     ServerAdmin webmaster@mecopalinux.com
     ServerName mecopalinux.com
     ServerAlias www.mecopalinux.com
     DocumentRoot /var/www/mecopalinux.com/public_html/
     ErrorLog /var/www/mecopalinux.com/logs/error.log
     LogLevel warn
     CustomLog /var/www/mecopalinux.com/logs/access.log combined
</VirtualHost>

Paso 3 – Crear los directorios para hospedar cada dominio

A continuación, necesitaremos crear los directorios que hospedarán los contenidos y los logs de los sitios mencionados anteriormente:

mkdir -p /var/www/{aguantecla.com,mecopalinux.com}/{public_html,logs}

En el próximo post agregaremos los contenidos respectivos a cada sitio y comenzaremos a examinar los logs para inspeccionar el funcionamiento. ¡Nos leemos en breve!