Apache2: Servidores virtuales - Varios dominios en un mismo servidor

Bueno, vamos a ello!

Antes de empezar me gustaría decir que aunque se omitan los pasos de la creación del directorio y el contenido del segundo dominio son los mismos que para el primero y por ello he decidido no duplicar la información.

Cuando todo este mundillo empezó alquilabas directorios, esto es una carpeta dentro de un servidor. Pues alquilar un servidor entero para ti era demasiado costoso. De forma que podríamos encontrarnos algo de este estilo:


hosting.com/honeysec

hosting.com/paellacon

hosting.com/...


hostvip.com/curiosoinformatico

hostvip.com/curiosoinformatico/blog

Es una estructura de directorios. El servidor web te alquilaba una carpeta, subías tus cosas ahí y ya eran accesibles. Existía el concepto 1 servidor -> 1 dominio.

Como esto era inviable surgieron los servidores virtuales. Esto es, un mismo servidor puede tener varios servidores virtuales gestionados y según a qué dominio se realice la petición virtual se llame responderá el servidor virtual asignado.

En el caso de que no hayan servidores virtuales se tomará como servidor principal el ubicado en la directiva ServerName del fichero de configuración de Apache.

Este fichero está ubicado en

/etc/apache2/apache2.conf






Y deberemos abrirlo con nuestro editor de texto, para el ejemplo usaremos nano

nano /etc/apache2/apache2.conf

y añadimos la siguiente línea al final del fichero:

ServerName 10.0.2.100

siendo 10.0.2.100 la dirección IP que tenga vuestro servidor. Esto quiere decir que en el caso de que no existan servidores virtuales definidos por defecto el servidor será este. Vamos, como antiguamente: 1 Servidor -> 1 Dominio

En el caso de que existan servidores virtuales esta directiva se ignora.





El fichero de configuración de los puertos global es /etc/apache2/ports.conf



Configuramos los puertos a escuchar con

Listen puerto.


Podemos configurar que se escuche en un puerto si se carga un módulo con la etiqueta IfModule



Podemos ver los sitios habilitados en /etc/apache2/sites-enabled que son enlaces simbólicos de /etc/apache2/sites-available que son las configuraciones que tenemos.


Crearemos 2 servidores virtuales para hacer la demo. Ambos servidores atenderán a todos en todas las interfaces, todos los puertos *:*. En el caso de querer que escuchase sólo a la interfaz eth0 con dirección IP 10.0.2.200 y al puerto 80 estableceríamos esto a 10.0.2.200:80


Cuando hayamos acabado la configuración salimos del documento y habilitamos los servidores virtuales configurados en el fichero con la instrucción a2ensite lapiceroblanco.conf

ServerName indica el nombre del servidor que es además el nombre por el que responderá

ServerAlias indica los alias por los que el servidor también responderá cuando sea llamado. En este campo se puede establecer un comodín en la parte del subdominio indicando que responderá a todos los subdominos del alias. *.alias.com

Por último DocumentRoot es la ruta donde está alojado el sitio que vamos a servir.






Creamos los sitios que hemos indicado que accederá como DocumentRoot





y una vez creados les damos como usuario www-data. Este es el usuario de Apache y de esta manera apache podrá realizar modificaciones sobre los ficheros.




A continuación recargaremos la configuración de Apache



/etc/init.d/apache2 reload



Para poder acceder a los distintos sitios deberemos llamarlos a través de sus nombres. Esto es, que en la cabecera HTTP que enviemos en el método GET se establezca una propiedad que indique que estamos llamando al dominio en este caso lapiceroblanco.com o miskc.com. Podemos conseguir esta resolución de nombres por medio de un servidor DNS o editando nuestro fichero hosts situado en C:\windows\system32\drivers\etc en Windows o /etc/hosts en GNU/Linux





Si llamamos al servidor por su dirección IP veremos el sitio configurado en 000-default.conf.

Apache coge el sitio por defecto el primero en orden alfabético en /etc/apache2/sites-enabled.



Deshabilitaremos el sitio 000-default.conf borrando el enlace simbólico o con la orden a2dissite y recargando la configuración de apache /etc/init.d/apache2 reload
 

Para deshabilitarlo usarmos la instrucción a2dissite 000-default.conf ó, borraremos en enlace simbólico de /etc/apache2/sites-enabled/000-default.conf con las instrucción rm /etc/apache2/sites-enabled/000-default.conf



Si hemos intentado acceder desde Windows habremos observado que nos da el error 403 Forbidden.


Esto es porque apache por defecto tiene una directiva que solo permite utilizar /var/www como ubicación para los servidores virtuales. (Más adelante veremos como cambiar las directivas para poder alojar nuestros sitios en cualquier otra carpeta.) Por ello copiamos /web a /var/www/web y borramos la ruta /web.


La carpeta /var/www/web la podemos crear con mkdir /var/www/web


y posteriormente mover nuestra carpeta a dicha ruta con 


mv /web/lapiceroblanco.com /var/www/web/


Editamos el fichero de configuración para apuntar a la nueva carpeta




Asignamos permisos y cambiamos el usuario de nuevo con


chmod -R 755 /var/www/web/lapiceroblanco.com


y


chown -R www-data:www-data /var/www/web/



siendo de nuevo lapiceroblanco.com una palabra a cambiar por vosotros por lo que queráis mientras coincida con el DocumentRoot de la configuración de vuestro servidor virtual.




Podemos ver el estado del servidor por medio del comando apache2ctl -S

Recargamos la configuración de apache con service apache2 reload y y podremos acceder con las nuevas configuraciones.

Para configurar el segundo dominio seguimos los mismos pasos que para este. (Con la excepción de ponerlo en /web/ y después moverlo a /var/www/web, ya que podemos crearlo directamente en esta segunda carpeta. Ha sido un ejemplo para explicar una directiva que veremos más adelante)

Resumen y apuntes extra:


El fichero principal de configuración de Apache es /etc/apache2/apache.conf

En este fichero debemos indicar que hacer en caso de que no encuentre servidores virtuales y entre en modo servidor único. La directiva ServerName aquí indicará el nombre del servidor que puede ser un dominio o una IP en el caso de trabajar sin servidores virtuales.

Por defecto los servidores virtuales se alojan en /var/www/carpetadelaaplicación aunque podemos cambiar esta política o añadir nuevos directorios.

El fichero /etc/apache2/ports.conf indica los puertos en los que Apache queda a la escucha. Se le pueden establecer estructuras condicionales para que cargue un módulo u otro según si un puerto está habilitado o no.

La carpeta /etc/apache2/sites-available contiene las configuraciones de los servidores virtuales teniendo estos extensión .conf

La carpeta /etc/apache2/sites-enabled contiene enlaces simbólicos a las configuraciones de los servidores virtuales que estén activados.

Un mismo fichero de configuración puede contener varios servidores virtuales.

Para activar un servidor virtual se utiliza la instrucción a2ensite configuracion.conf

Para deshabilitar un servidor virtual se utiliza la instrucción a2dissite configuracion.conf

También podemos hacerlo creando un enlace simbólico y borrándolo para desactivarlo.

Podemos recargar la configuración de Apache sin necesitar reiniciar el servicio por medio de la instrucción service apache2 reload.

Podemos consultar errores en el log del sistema tail /var/log/syslog o en en logs de apache situados en la carpeta /var/log/apache2

Para que Apache pueda tratar un sitio debe ser propietario del mismo, es decir, debemos utilizar la instrucción chown -R www-data:www-data /ruta/de/mi/sitio y chmod -R 755 -R www-data:www-data /ruta/de/mi/sitio

755(o los permisos que le queramos dar)





Hasta aquí por ahora, próximamente veremos como instalar PHP, crearnos un certificado auto-firmado para navegar por HTTPS en lugar de HTTP, etc.


Instalación del entorno - Índice - Instalación y configuración de PHP

No hay comentarios:

Publicar un comentario