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.
-
Editar el fichero
/etc/hosts: Se debe indicar que la IP local (127.0.0.1) es tantositio1.localcomositio2.local.- Se añaden las entradas:
127.0.0.1 sitio1.local 127.0.0.1 sitio2.local
Nota
La ruta del fichero
hostses/etc/hostsen Linux y macOS. Para Windows esC:\Windows\System32\drivers\etc\hosts. - Se añaden las entradas:
-
Verificar la resolución: Se puede confirmar que estas direcciones se resuelven a la máquina local haciendo un
pingasitio1.localositio2.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.
- Crear las carpetas de los sitios dentro de
/var/www/del servidor Apache:mkdir /var/www/sitio1 mkdir /var/www/sitio2 - Crear el fichero
index.htmlpara cada sitio.nano /var/www/sitio1/index.html nano /var/www/sitio2/index.html - 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.confcontiene la configuración del sitio por defecto (el que se ve al acceder alocalhost) 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.
-
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 -
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.
-
Comprobar errores sintácticos: Antes de recargar, se verifica la configuración:
(Si hay algún error, el comando lo indicará).sudo apache2ctl -t -
Recargar el servicio Apache: Se utiliza
reloadpara aplicar la nueva configuración, lo cual es mucho más eficiente y rápido que unrestart, 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.
- Verificar el sitio 1: Abrir el navegador e introducir
sitio1.com. Debe aparecer el contenido del archivoindex.htmlque indica la ruta/var/www/sitio1. - 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.
- Deshabilitar un sitio:
sudo a2dissite sitio2 - Recargar el servicio:
sudo service apache2 reload sudo service apache2 reload - 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.