Hace un tiempo sigo la lista linux-l y uno de los hilos de hoy trataba el tema de como implementar un Virtual Host con Apache. Estube buscando en Internet algún post que explicara una forma sencilla de implementarla para compartirla con el colega que tenia las dudas, pero no encontre algo para dummies, así que aproveché este espacio para crear un pequeño y básico manual(si se le puede llamar así).
En informática la palabra host, como bién nos explica Wikipedia, se utiliza para referirnos al equipo anfitrión de servicios(IRC, Email, Web, etc…) o simplemente de un sistema operativo. Básicamente es el nombre que usa dicho equipo para no tener que memorizar la direccion IP del mismo.
Por su parte Virtual Host es el término que se utiliza cuando existen varios nombres de host apuntando a una misma direccion IP para un mismo servicio y queremos que este servicio funcione de forma independiente para cada nombre de host. Vale aclarar que el uso de Virtual Host depende fundamentalmente de que la aplicacion que utilizamos para brindar nuestro servicio en el servidor lo soporte.
En el caso de este post, me voy a referir al servicio web o www, utilizando Apache 2 previamente instalado y funcionando en Ubuntu 8.10.
Para configurar un nuevo sitio en apache basta con crear un archivo en la raiz donde el lee por defecto la configuracion de los sitios. O sea que podemos hacer algo como esto:
sudo nano /etc/apache2/sites-available/misitio.com
Dentro de este archivo debemos configurar nuestro Virtual Host. Este tutorial es algo básico, si desear ver todas las opciones de este módulo de Apache para explotarlo al máximo, te sugiero que leas la documentacion de Apache 2.
En el archivo que creamos escribimos algo como esto:
<VirtualHost *>
#Nombre de host o dominio por el cual va a responder nuestro Apache
ServerName misitio.com
#Carpeta donde guardo mi sitio
DocumentRoot /home/miusuario/www-misitio/
#Correo electrónico del administrador de mi sitio
ServerAdmin usuario@correo.com
#En On habilita la firma del servidor Apache, que no es mas que la información
#que se muestra en las paginas propias de apache, como las de errores.
#Depende del caso habilitarla puede considerarse una falta de seguridad
ServerSignature On
#Indica el archivo donde deseamos guardar el logs de errores
ErrorLog /var/log/apache2/misitio.com-error.log
#Indica los tipos de errores que deseamos guardar en el log
#revisar la documentacion de Apache para ver características y niveles disponibles
LogLevel warn
#Camino al archivo donde guardaremos los logs de acceso
CustomLog /var/log/apache2/misitio.com-access.log combined
#Configuracion del directorio donde guardamos nuestro sitio
<Directory "/home/miusuario/www-misitio/">
#Revisar documentacion de Apache para ver mas opciones y descripcion detallada
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Importante: Asegúrate de poner los caminos correctos hacia las capetas correspondientes.
Despues solo nos resta habilitar el sitio en Apache:
sudo a2ensite misitio.com
Y reiniciar el Apache:
sudo invoke-rc.d apache2 restart
Con esto ya tenemos configurado nuestro Virtual Host para responder y cargar el contenido especificado.