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
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!