Ejercicio 2: VirtualHosting con Apache
¿Qué vas a aprender en este ejercicio?
- Crear distintos Host Virtuales en apache2 que nos permiten tener sitios web diferenciados.
- Acceder a cada Host Virtual con un determinado nombre de dominio.
Recursos para realizar este ejercicio
Introducción al VirtualHosting
El término Hosting Virtual se refiere a hacer funcionar más de un sitio web (tales como www.company1.com
y www.company2.com
) en una sola máquina. Los sitios web virtuales pueden estar “basados en direcciones IP”, lo que significa que cada sitio web tiene una dirección IP diferente, o “basados en nombres diferentes”, lo que significa que con una sola dirección IP están funcionando sitios web con diferentes nombres de dominio (estos últimos son los que vamos a trabajar en este taller).
El servidor web Apache2 se instala por defecto con un host virtual. La configuración de este sitio la podemos encontrar en:
/etc/apache2/sites-available/000-default.conf
Cuyo contenido podemos ver:
<VirtualHost *:80>
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Donde encontramos los siguientes parámetros:
- ServerName: El nombre con el que vamos a acceder al sitio virtual. En el sitio virtual por defecto (como sólo tenemos uno) está comentado, podemos acceder por nombre o por dirección IP.
- ServerAdmin: Dirección de correo del administrador responsable del servidor.
- DocumentRoot: Directorio donde guardamos los ficheros que se van a servir.
- ErrorLog: Fichero de errores del host virtual.
- CustomLog: Fichero de accesos al host virtual.
Por defecto este sitio virtual está habilitado, por lo que podemos comprobar que existe un enlace simbólico a este fichero en el directorio /etc/apache2/sites-enabled
:
lrwxrwxrwx 1 root root 35 Oct 3 15:24 000-default.conf -> ../sites-available/000-default.conf
Podemos habilitar o deshabilitar nuestros host virtuales utilizando los siguientes comandos:
a2ensite
a2dissite
En el fichero de configuración general /etc/apache2/apache2.conf
nos encontramos las opciones de configuración del directorio padre del indicado en la directiva DocumentRoot
(suponemos que todos los host virtuales van a estar guardados en subdirectorios de este directorio):
...
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
...
¿Qué tienes que hacer?
Queremos construir en nuestro servidor web apache dos sitios web con las siguientes características:
- El nombre de dominio del primero será
www.iesgn.org
, su directorio base será/var/www/iesgn
y contendrá una página llamadaindex.html
, donde sólo se verá una bienvenida a la página del Instituto Gonzalo Nazareno. - En el segundo sitio vamos a crear una página donde se pondrán noticias por parte de los departamento, el nombre de este sitio será
www.departamentosgn.org
, y su directorio base será/var/www/departamentos
. En este sitio sólo tendremos una página inicialindex.html
, dando la bienvenida a la página de los departamentos del instituto.
Para conseguir estos dos sitios virtuales debes seguir los siguientes pasos:
-
Los ficheros de configuración de los sitios webs se encuentran en el directorio
/etc/apache2/sites-available
, por defecto hay dos ficheros, uno se llama000-default.conf
que es la configuración del sitio web por defecto. Necesitamos tener dos ficheros para realizar la configuración de los dos sitios virtuales, para ello vamos a copiar el fichero000-default.conf
:cd /etc/apache2/sites-available cp 000-default.conf iesgn.conf cp 000-default.conf departamentos.conf
De esta manera tendremos un fichero llamado
iesgn.conf
para realizar la configuración del sitio webwww.iesgn.org
, y otro llamadodepartamentos.conf
para el sitio webwww.departamentosgn.org
. - Modificamos los ficheros
iesgn.conf
ydepartamentos.conf
, para indicar el nombre que vamos a usar para acceder al host virtual (ServerName
) y el directorio de trabajo (DocumentRoot
). Además vamos cambiar los nombre del fichero log de acceso y de error. -
No es suficiente crear los ficheros de configuración de cada sitio web, es necesario crear un enlace simbólico a estos ficheros dentro del directorio
/etc/apache2/sites-enabled
, para ello:a2ensite iesgn a2ensite departamentos
La creación de los enlaces simbólicos se puede hacer con la instrucción
a2ensite nombre_fichero_configuracion
, para deshabilitar el sitio tenemos que borrar el enlace simbólico o usar la instruccióna2dissite nombre_fichero_configuracion
. -
Crea los directorios y los ficheros
index.html
necesarios en/var/www
y reiniciamos el servicio. Recuerda que los directorios y los ficheros deben pertenecer al usuariowww-data:www-data
. - Para terminar lo único que tendremos que hacer es cambiar el fichero hosts (resolución estática) en los clientes y poner dos nuevas líneas donde se haga la conversión entre los dos nombre de dominio y la dirección IP del servidor.