Servidores virtuales con Apache
-
Este hilo forma parte de la guía para montar un servidor en Debian.
Recuerda que el contenido de Hardlimit está bajo licencia Creative Commons.
Procedimiento
Como root:
nano /etc/apache2/sites-available/000-default.conf
Usar como plantilla esto:
<VirtualHost *:80> DocumentRoot "/home/Servidor/hardlimit.com/" ServerName hardlimit.com ServerAlias hardlimit.com CustomLog ${APACHE_LOG_DIR}/access_hardlimit.log combined </VirtualHost>
nano /etc/apache2/apache2.conf
Eliminar todas las secciones Directory que encontremos en el archivo.
/etc/init.d/apache2 restart
Explicación
Si queremos acceder a páginas diferentes desde dominios o subdominios diferentes con un único servidor y una única IP pública, debemos usar servidores virtuales (VirtualHosts). Desde aquí no solo es posible decirle al servicio qué página debe abrir según con qué dominio reciba la petición, sino que es el lugar para elegir el directorio local donde se almacena la web.
Los servidores virtuales se configuran en en el archivo '000-default.conf' por lo que habrá que ejecutar como root esto:
nano /etc/apache2/sites-available/000-default.conf
En ese momento, el archivo se abre con Nano e inicialemente nos vamos a encontrar con el siguiente texto:
Las lineas que aparecen para configurar son:
· ServerAdmin: correo electrónico del administrador
· DocumentRoot: carpeta local donde se almacena la web
· ErrorLog ruta donde se registran los errores del servidorTal y como está el archivo inicialmente, sea como sea que accedamos al servidor desde un navegador web (desde cualquier dominio apuntando a la IP), se mostrará la página a la que apunta DocumentRoot.
Una buena plantilla para un par de servidores virtuales puede ser como la que sigue:
<VirtualHost *:80> DocumentRoot "/home/Servidor/portada/" ServerName hardlimit.com ServerAlias hardlimit.com CustomLog ${APACHE_LOG_DIR}/access_hardlimit_com.log combined </VirtualHost> <VirtualHost *:80> DocumentRoot "/home/Servidor/banco_pruebas/" ServerName bm.hardlimit.com ServerAlias bm.hardlimit.com CustomLog ${APACHE_LOG_DIR}/access_bm_hardlimit.log combined </VirtualHost>
Poniendo el nombre del dominio tanto en las opciones ServerName como ServerAlias, la página mostrada desde ese dominio será la que apunta DocumentRoot. En el caso de que no coincida, se servirá la web que aparezca en el primer VirtualHost de la lista.
En esa plantilla, vemos dos secciones VirtualHost: una para atender las peticiones desde el dominio raíz hardlimit.com otra para el subdominio bm.hardlimit.com. Cada una tiene sus configuraciones independientes y se pueden añadir tantas secciones VirtualHost como sean necesarias.
Como hemos configurado nuestros sitios individualmente, las configuraciones genéricas del archivo apache2.conf las debemos eliminar para que no entren en conflicto. Para eso:
nano /etc/apache2/apache2.conf
Ahora eliminamos todas las secciones 'Directory' que encontremos en el archivo. Con eso nos aseguramos de poder usar cualquier carpeta diferente a /var/www/html que viene por defecto.
Para que se apliquen los cambios, deberás reiniciar Apache desde root con:
/etc/init.d/apache2 restart
Pero ¿cómo funciona todo esto? El proceso es el siguiente:
· Escribes hardlimit.com en el explorador web.
· Tu ordenador le pide al servidor DNS la IP de dicho dominio.
· Tu ordenador se conecta a dicha dirección IP y dice al servidor web que quiere comunicarse con hardlimit.com (esta información está contenida en el encabezado Host de la petición HTTP).
· Nuestro servidor web comprueba la configuración para averiguar qué contenido ofrecer con esa petición.
· Si hardlimit.com está como parámetro de ServerName o ServerAlias en una sección VirtualHost, se ofrece el contenido de lo que haya en la ruta DocumentRoot. Si no la encuentra, ofrece lo que diga el primer VirtualHost de la lista. Si no existe ningún VirtualHost, recurre a la configuración almacenada en el archivo de configuración de Apache que se encuentra en /etc/apache2/apache2.conf. -