Apache en Ubuntu: configurar hosts virtuales

En primer lugar, recordemos que la mayor utilidad que le podemos dar a un servidor web Apache consiste en hospedar varios sitios en un mismo equipo. Este método se conoce como virtuales basados en nombre, tal como lo mencionamos en otra oportunidad. Bajo esta metodología, Apache decide qué sitio servir cuando llega una solicitud por un dominio alojado en el equipo. Además, este tipo de instalación requiere que exista un mecanismo de resolución de nombres local (mediante el archivo /etc/hosts) o un servidor DNS. En este post explicaremos cómo configurar dos hosts virtuales con Apache en Ubuntu.

Apache en Ubuntu

Para comenzar, debemos asegurarnos de que Apache esté instalado en nuestro servidor:

apt-get update
apt-get install apache2 apache2-doc w3m

El último paquete de la lista anterior, w3m, es un navegador web para la terminal. Lo utilizaremos para navegar a los hosts virtuales mediante la línea de comandos.

A continuación, sigamos los pasos indicados para crear nuestros dos hosts virtuales, a los que daremos los nombres de test.com y example.com.

Paso 1 – Deshabilitar el host virtual por defecto

Para comenzar, debemos deshabilitar el sitio que Apache muestra por defecto, cuya configuración se encuentra en /etc/apache2/sites-available/000-default.conf. Para hacerlo, podemos utilizar la herramienta a2dissite, la cual nos permite deshabilitar sitios o hosts virtuales como podemos ver en la Fig. 1. Luego será necesario recargar la configuración de Apache para aplicar los cambios recién efectuados:

cd /etc/apache2/sites-available
a2dissite 000-default.conf
service apache2 reload
Deshabilitar el sitio por defecto de Apache en Ubuntu
Figura 1 – Deshabilitar el sitio por defecto de Apache en Ubuntu

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

Dentro de /etc/apache2/sites-available debemos crear un archivo de configuración para cada host virtual que deseemos alojar. En nuestro caso, los archivos serán test.com.conf y example.com.conf. Cada uno deberá tener 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.

test.com.conf:

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

example.com.conf:

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

Paso 3 – Crear los directorios para hospedar cada dominio

Para continuar debemos crear los directorios que hospedarán que representarán el DocumentRoot de cada dominio y los logs que indicamos en los archivos de configuración anteriores:

mkdir -p /var/www/{test.com,example.com}/{public_html,logs}

Paso 4 – Crear un archivo index.html para cada sitio

En este paso podemos utilizar el siguiente esqueleto HTML básico para nuestras pruebas iniciales. Por eso, guardaremos dentro de cada directorio public_html guardaremos el siguiente código como index.html (reemplazar example por test según corresponda):

<html>
  <head>
    <title>Bienvenidos a Example.com!</title>
  </head>
  <body>
    <h1>¡Felicitaciones! El host virtual example.com funciona correctamente</h1>
  </body>
</html>

Paso 5 – Acceder a cada host virtual utilizando w3m

Finalmente, utilizaremos el siguiente comando para acceder a nuestros hosts virtuales:

w3m -M http://test.com
w3m -M http://example.com

Para salir de w3m, deberemos presionar la tecla q y a continuación y (de yes) para confirmar.

Espero que este post les haya sido útil. ¡Hasta la próxima!