Un host virtual, o VirtualHost, en Apache nos permite mantener múltiples nombres de host en nuestro servidor.
El presente manual permite explicar de manera sencilla y concisa cómo crearlos en nuestro servidor local y configurar nuestro sistema operativo para que acepte dichos nombres de host. Muchos de nosotros estamos acostumbrados a trabajar en nuestro servidor web local para nuestros proyectos en modo de prueba o testeo, y por lo generalmente tenemos más de un proyecto en camino, sea laboral (p.e. el web site de un cliente) o personal (p.e. nuestro blog o comunidad virtual). Solemos guardar estos proyectos en carpetas separadas dentro un directorio tal como C:/www/ que sería nuestro directorio raíz web (desde el cual llamamos a nuestro clásico
http://localhost ), y llamar a nuestros proyectos de la siguiente manera en nuestro navegador preferido:
http://localhost/tiperu ,
http://localhost/willyblog ,
http://localhost/bazar , entro otros por citar un ejemplo.
En cierto modo podemos trabajar de manera regularmente cómoda, pero quizá desearíamos usar el nombre del dominio real con el que trabajos estos proyectos en la Internet. Así podríamos hacer usar lo siguiente:
http://www.tiperu.com en lugar de
http://localhost/tiperu ,
http://willy.tiperu.com en lugar de
http://localhost/willyblog , o
http://www.bazarperu.com en lugar de
http://localhost/bazar
Y cómo hacemos esto?, pues la respuesta es sencilla, configurando la directiva VirtualHost de nuestro servidor Apache y el archivo host de nuestro Sistema Operativo (
Windows o Linux).
Configurando el archivo host
Lo primero que configuraremos será el archivo
host de nuestro SO, para Linux lo podemos encontrar en el directorio /etc/ mientras que para Windows XP lo encontramos en C:/Windows/System32/Drivers/etc/. Este archivo lo que hace es asignar direcciones IP a los nombres de host, para que al colocar por ejemplo 127.0.0.1 o localhost en nuestro navegador nos redireccione al mismo contenido. No se sorprenda si encuentra el siguiente par en el archivo host: 127.0.0.1 localhost, dónde el primer valor es nuestra dirección IP local y el segundo el nombre del host.
Lo que haremos ahora es colocar tantas entradas cono deseemos para nuestros proyectos, relacionando la IP local con nuestros nombres de dominio. Para el ejemplo tomaremos las rutas que di anteriormente, las cuales se colocarán debajo del par 127.0.0.1 localhost:
#localhost
127.0.0.1 localhost
#TIPeru COM SAC (Mi empresa de hosting)
127.0.0.1 www.tiperu.com
#Mi blog
127.0.01 willy.tiperu.com
#BazarPeru (Tienda Virtual)
127.0.0.1 www.bazarperu.com
Nótese que he colocado el caracter “#” . Este carácter nos permite ingresar un texto a manera de comentario. Bueno, una vez hechos estos cambios procedemos a guardar el archivo.
Para confirmar su funcionamiento abra su navegador y digite cualquiera de los nombres de host que ha agregado, recuerde de respetar el nombre completo, ya que una entrada del tipo tiperu.com no tendría efecto por carecer del www. que lo antecede.
Si al ingresar el nombre del host le muestra el contenido de su
http://localhost significa que la asignación de IP para el nombre de host a tenido efecto. Nótese que aún su nombre de host no apunta a la carpeta en la que se guarda su proyecto. Este punto lo veremos a continuación.
Configurando el archivo httpd.conf del Apache
Ahora configuraremos nuestro servidor Apache para que acepte los nombres de dominio agregados al archivo host y los relacione con las carpetas que albergan los archivos de nuestros proyectos. Para ello abriremos el archivo
conf/httpd.conf y nos dirigiremos a la siguiente sección:
#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
Notas:
• Haga una copia de respaldo de sus archivos de configuración antes de realizar cualquier cambio en ellos.
• Si no encuentra la sección Virtual Hosts en el archivo httpd.conf quizá lo pueda ubicar en la siguiente ruta
conf/extra/httpd-vhosts.conf
Luego procederemos a quitar el comentario de ##NameVirtualHost *:80 dejándolo de la siguiente manera:
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
#
Esta acción nos permisita trabajar con host virtuales basados en nombres. El * representa un número IP y puede ser reemplazado por uno de ellos si desee. Para el ejemplo déjelo tal y como esta.
Enseguida procederemos a configurar los host virtuales, agregándolos de la siguiente manera:
#localhost
DocumentRoot "C:/www"
ServerName localhost:80
#TIPeru COM SAC
DocumentRoot "C:/wwww/tiperu"
ServerName www.tiperu.com
#Mi Blog
ServerAdmin willy@tiperu.com
DocumentRoot "C:/wwww/willy"
ServerName willy.tiperu.com
#BazarPeru
ServerAdmin webmaster@bazarperu.com
DocumentRoot "C:/wwww/bazar"
ServerName www.bazarperu.com
Como se puede aprecia cada Virtual Host esta encerrado entre las etiquetas
y que contiene el parámetro *:80 que es NameHostVirtual al cual se refiere. Dentro de estas etiquetas, 2 valores son esenciales para que funcionen correctamente nuestros host virtuales:
•
DocumentRoot. Que es la ruta en la cual se guarda nuestra página web; y
•
ServerName . Que es el nombre del host que previamente agregamos al archivo host de nuestro S.O.
Adicionalmente podemos agregar otros valores, tal como si cada host virtual fuera un host independiente (p.e. ServerAdmin).
Nótese algo muy importante. Si bien localhost es nuestro servidor local por defecto, debemos también agregarlo con un virtual host para que todo trabaje en orden, y debemos agregarle los mismos valores del DocumentRoot y ServerName que posee en su configuración global, de lo contrario no cargará el host.
Finalmente lo que haremos es para el servicio de nuestro servidor Apache y volverlo a inciar. Si tod o esta correctamente configurado podemos cargar en nuestro navegador uno de los nombres de host y ver los resultados (p.e.
www.tiperu.com ). Si carga el contenido de la carpeta que le hemos asignado en el
y no el directorio raiz del localhost quiere decir que todo esta correcto. Felicidades Ud. Ya tiene configurado su host virtual !!!