Saltar a contenido

P2.1 Configuración de hosts virtuales en Apache

La idea de los hosts virtuales es alojar distintas webs en un único servidor. Esto permite que un solo servidor físico pueda dar servicio a múltiples dominios (como sitio1.com y sitio2.com). Esto es habitual en el hosting compartido.

Simular dominios locales

Dado que no es práctico usar dominios registrados en Internet para esta simulación, es necesario simularlos localmente.

  1. Editar el fichero /etc/hosts: Se debe indicar que la IP local (127.0.0.1) es tanto sitio1.local como sitio2.local.

    • Se añaden las entradas:
      127.0.0.1 sitio1.local
      127.0.0.1 sitio2.local
      

    Nota

    La ruta del fichero hosts es /etc/hosts en Linux y macOS. Para Windows es C:\Windows\System32\drivers\etc\hosts.

  2. Verificar la resolución: Se puede confirmar que estas direcciones se resuelven a la máquina local haciendo un ping a sitio1.local o sitio2.local.

    ping sitio1.local
    ping sitio2.local
    

Importante

Esta configuración funciona solo en la máquina local. Actúa como un DNS local para los dominios indicados.

Crear contenido para los hosts virtuales

Se crean las carpetas y los archivos de prueba para cada sitio.

  1. Crear las carpetas de los sitios dentro de /var/www/ del servidor Apache:
    mkdir /var/www/sitio1
    mkdir /var/www/sitio2
    
  2. Crear el fichero index.html para cada sitio.
    nano /var/www/sitio1/index.html
    nano /var/www/sitio2/index.html
    
  3. Contenido de prueba: Se recomienda que el contenido del fichero indique la ruta completa para facilitar la verificación posterior en el navegador. Por ejemplo:
    • "soy /var/www/sitio1/index.html".
    • "soy /var/www/sitio2/index.html".

Preparar la configuración de Apache

La configuración de sitios virtuales se gestiona principalmente en dos carpetas de Apache:

  • sites-available: Contiene la configuración de los sitios virtuales que están disponibles (pueden ser muchos).
  • sites-enabled: Contiene los sitios que están activos o habilitados en ese momento.

  • Acceder a sites-available (dentro de la carpeta de configuración de Apache).

  • Usar plantilla: El fichero 000-default.conf contiene la configuración del sitio por defecto (el que se ve al acceder a localhost) y sirve como plantilla.
  • Copiar la plantilla para cada sitio virtual. Es importante que los ficheros de configuración terminen con la extensión .conf:
    cd /etc/apache2/sites-available
    cp 000-default.conf sitio1.conf
    cp 000-default.conf sitio2.conf
    

Editar hosts virtuales

Se deben editar los ficheros sitio1.conf y sitio2.conf para que cada uno apunte a la carpeta correcta y tenga el nombre de dominio adecuado.

Para cada fichero .conf, se deben modificar dos directivas fundamentales:

Fichero Directiva Valor Detalle
sitio1.conf ServerName sitio1.local Indica a Apache qué configuración aplicar cuando recibe peticiones dirigidas a ese dominio.
DocumentRoot /var/www/sitio1 Especifica la carpeta donde se encuentran los archivos del sitio virtual.
sitio2.conf ServerName sitio2.local Indica a Apache qué configuración aplicar cuando recibe peticiones dirigidas a ese dominio.
DocumentRoot /var/www/sitio2 Especifica la carpeta donde se encuentran los archivos del sitio virtual.

Activar hosts virtuales

Para que Apache utilice la configuración de los sitios virtuales, es necesario activar cada uno de ellos. La configuración debe pasar de sites-available a sites-enabled.

  1. Activar sitio 1: Se utiliza el comando a2ensite (Apache 2 enable site), usando el nombre del sitio sin la extensión .conf:

    sudo a2ensite sitio1
    
  2. Activar sitio 2:

    sudo a2ensite sitio2
    

Nota

Este comando crea un enlace simbólico del fichero de sites-available hacia la carpeta sites-enabled. Este es un atajo para evitar tener que crear manualmente el enlace simbólico.

Comprobar errores y recargar Apache

Después de cualquier cambio en la configuración de Apache, es fundamental comprobar que no hay errores y recargar el servicio para aplicar los cambios.

  1. Comprobar errores sintácticos: Antes de recargar, se verifica la configuración:

    sudo apache2ctl -t
    
    (Si hay algún error, el comando lo indicará).

  2. Recargar el servicio Apache: Se utiliza reload para aplicar la nueva configuración, lo cual es mucho más eficiente y rápido que un restart, ya que el servidor no deja de funcionar:

    sudo service apache2 reload
    

Verificación en el Navegador

Se debe comprobar que ambos sitios funcionan correctamente.

  1. Verificar el sitio 1: Abrir el navegador e introducir sitio1.com. Debe aparecer el contenido del archivo index.html que indica la ruta /var/www/sitio1.
  2. Verificar el sitio 2: Introducir sitio2.com. Debe aparecer el contenido del archivo que indica la ruta /var/www/sitio2.

Desactivar un host virtual

Si se desea deshabilitar un sitio virtual, se usa el comando contrario a2dissite.

  1. Deshabilitar un sitio:
        sudo a2dissite sitio2
    
  2. Recargar el servicio:
    sudo service apache2 reload
    sudo service apache2 reload
    
  3. Resultado: Al intentar acceder a sitio2.com, este se resuelve a la IP local (gracias a /etc/hosts), pero como no hay una configuración virtual activa específica para ese nombre, Apache mostrará la configuración del sitio por defecto.