Añadiendo un Virtual Host a Apache

1 Comment
logotipo lamp

Configurando Virtual Hosts en Apache con Debian Linux

Obviamente no puedo decir aquello de “Empecemos por el principio”, pero si estás leyendo esto sin duda estás ante el principio de un nuevo proyecto web. Si se trata de un verdadero comienzo en la web te recomiendo empezar por aquí: https://wiki.debian.org/LaMp

Los virtual hosts son figuras dentro de apache que permiten habilitar mas de un sitio web por servidor o IP. Virtualmente, valga la redundancia, no hay limite para el número de virtual hosts que puedes correr en una máquina, de manera que esto puede servirte para alojar varios proyectos web en un único alojamiento. No es el objeto de este árticulo entrar en consideraciones SEO al respecto, así que comencemos a describir el proceso técnico de creación del nuevo espacio web.

Preliminares

Los ejemplos mostrados se refieren a un sistema basado en Debian, en mi opinión la opción más robusta, pero todo es trasladable sin muchas diferencias a otros sabores de Linux.

Necesitarás estar logeado con privilegios de administrador (root) y por supuesto tener ya instalado y corriendo Apache en el server.

Usaré mi dominio soylibre.com como ejemplo cuando se requiera un nombre de dominio en los ejemplos, sustitúyelo por tu dominio. Así mismo utilizaré IPs de ejemplo que deberás substituir por las tuyas.

Crear el directorio web

Necesitamos un directorio donde albergar los archivos de la nueva web, nuestro nuevo virtual host apuntará a este directorio.

mkdir /var/www/directorio-web

Puedes añadir el parametro -p si quieres generar uno o más directorios intermedios a la vez, esto es, por ejemplo, si quieres compartimentar la web en zona publica y otras.

mkdir /var/www/soylibre.com/directorio-web

De manera que el virtual host apuntarría a esa carpeta con los ficheros de la web destinados a ser públicos y podrías tener, por ejemplo, otros directorios en ese proyecto del tipo:

mkdir /var/www/soylibre.com/stats
mkdir /var/www/soylibre.com/log
mkdir /var/www/soylibre.com/cgi-bin

; en lo que vendría ser una distribución típica que encontrarás en muchos proveedores de hosting y del tipo que son generados`por backends de gestión de servidor, por ejemplo ISPConfig.

Configurar propiedad y permisos del directorio

Cambia la propiedad del directorio para que pertenezca al usuario que desees y no a root.

chown -R $USUARIO:$GRUPO /var/www/soylibre.com/directorio-web

El parámetro de recursividad -R es necesario sólo si ya has subido archivos o subdirectorios al directorio web de manera que, de forma recursiva, establezca los permisos para cada uno de ellos.

A continuación, establecemos los permisos necesarios para que todos los documentos de nuestro nuevo sitio web puedan ser leídos por cualquiera.

chmod -R 755 /var/www/soylibre.com

De nuevo, recuerda que la opción -R dota al comando de recursividad a lo largo de todos los directorios y ficheros que encuentre a partir de la ruta indicada.

También ten en cuenta que “leidos” no significa “accesibles”. Como hemos dicho antes, los únicos ficheros accesibles desde internet serán los contenidos en el directorio al que apunta el virtual host, esto es:/directorio-web

Crear un archivo de prueba

Creemos un primer archivo que nos sirva como raíz (indice) y que además nos sirva para probar que la configuración del sitio es correcta.

nano /var/www/soylibre.com/directorio-web/index.htm

Cuando el editor de texto nano abra el nuevo fichero, añade algo de código de ejemplo:

<html>
<head>
<title>Hola Mundo!!</title>
</head>
<body>
<h5><strong>Felicidades!</strong>&nbsp;Tu virtual host ya está operativo</h5>
</body>
</html>

Grábalo y sal de nano.

Crear un archivo de configuración del nuevo virtual host

Vamos a crear un archivo de configuración típico basándonos en Debian 5, si tu servidor corre otra versión
o tienes dudas, simplemente utiliza como base una copia del archivo por defecto que viene con el sistema:

cp /etc/apache2/sites-available/default-o-similar.conf /etc/apache2/sites-available/soylibre.conf

Abre el archivo con nano para editarlo.

nano /etc/apache2/sites-available/soylibre.conf

Escribe la configuración necesaria, no te preocupes mucho por el significado de cada directiva, las desgranaremos más adelante:

<VirtualHost *:80>
 ServerAdmin webmaster@localhost

 ServerName www.soylibre.com
 ServerAlias soylibre.com

 DocumentRoot /var/www/soylibre.com/directorio-web
 <Directory />
 Options FollowSymLinks
 AllowOverride None
 </Directory>
 <Directory /var/www/soylibre.com/directorio-web>
 Options FollowSymLinks
 AllowOverride All
 </Directory>

 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 <Directory "/usr/lib/cgi-bin">
 AllowOverride None
 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 Order allow,deny
 Allow from all
 </Directory>

 ErrorLog ${APACHE_LOG_DIR}/error-soylibre.log

 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn

 CustomLog ${APACHE_LOG_DIR}/access-soylibre.log combined
</VirtualHost>

En la linea que inicia el contenido del fichero declaramos la IP y puerto donde escuchará nuestro nuevo virtual host, <VirtualHost *:80> indica que escuchará en cualquier interface sobre el puerto 80, que es el que corresponde con el protocolo HTTP, si quieres que tu nuevo sitio web atienda a peticiones del dominio solo en una determinada ip, debes indicarlo ahí, por ejemplo: <VirtualHost 10.10.10.10:80>

Con la directiva ServerName declaramos el nombre de dominio al que atiende el virtual host. En este caso además declaramos un alias de dominio para responder al dominio con y sin www con ServerAlias. El alias es un nombre alternativo al que responderá el sitio web, y puedes definir los que necesites.

Como su propio nombre indica en DocumentRoot declaramos donde se encuentra el documento raíz, aquel que será devuelto por el servidor cuando no se indique específicamente algún otro, esto es, el archivoindex.htm que hemos creado anteriormente, que se encuentra en el directorio web elegido /var/www/soylibre.com/directorio-web . Puede parecer que más adelante en la linea donde hemos escrito <Directory /var/www/soylibre.com/directorio-web> estamos siendo reiterativos, pero esto no es así, ya que el documento raíz no tiene porque encontrarse en el directorio web raíz  lo que explica esta aparente redundancia.

Destacar además que he especificado rutas y nombres de archivo específicos para los logs de error ErrorLog ${APACHE_LOG_DIR}/error-soylibre.log y de acceso CustomLog ${APACHE_LOG_DIR}/access-soylibre.log combined .

Sustituye las rutas, nombres de dominio y de logs por los que hayas elegido, graba el archivo y sal de nano.

Habilitar y probar tu nuevo sito web

Para habilitar el nuevo virtual host que acabamos de definir, debemos decirle a Apache que añada un nuevo sitio web a sites-enabled.

a2ensite soylibre.conf

A continuación reinicia Apache para que aplique los cambios indicados a su comportamiento.

service apache2 restart

Ignora por el momento cualquier warning que devuelva el sistema (son usuales los problemas con los FQDN), vamos a probar si todo funciona correctamente.
Para ello deberás haber modificado la zona DNS de tu dominio para que apunte a la IP del servidor donde estamos operando, escribe en cualquier navegador el nombre de tu dominio http://www.solylibre.com/, si aún no has modificado tu zona escribe la IP de tu servidor http://10.10.10.10/ y si todo ha ido bien deberías ver esto:

Hola Mundo!!
Felicidades! Tu virtual host ya está operativo

Y eso es todo, por ahora, guerrilleros.

Espero vuestros comentarios si os ha sido de ayuda este tutorial o cualquier duda que os pueda haber surgido a lo largo del mismo.

One Reply to “Añadiendo un Virtual Host a Apache”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *