Hosts Virtuales en IIS 7.5 y Apache 2

En estricto rigor, cada servidor web debe alojar a un sitio web. Solo basta con imaginar la cantidad de sitios web que existen y la cantidad de maquinas funcionando para levantar cada sitio web (Menos mal existe la virtualizacion, pero aun asi el gasto de recursos sera gigante), para darse cuenta que esta medida es sumamente ineficiente.

Por obra y gracia de los desarrolladores, existe lo que son los hosts virtuales. Estos sirven para almacenar mas de un sitio web, utilizando una sola dirección IP y haciéndole creer al sitio web que esta sobre un servidor web aislado.

Apache 2.0

Apache2 es el servidor web sobre *Nix por excelencia y fue uno de los pioneros en implementar el modulo de virtual hosts. A pesar que su implementacion es a traves de manejos de archivos de texto, es relativamente sencillo. Solo tenemos que manejar los siguientes parametros:

  • ServerName Nombre del Servidor. Es aquí donde se indica el nombre de dominio
  • DocumentRoot Ubicación de los archivos del sitio web.
  • ServerAdmin Correo del administrador del Virtual Host
  • ErrorLog Lugar donde se almacenan los registros de error
  • CustomLog Lugar donde se almacenan los registros de acceso
  • ServerSignature Activar o desactivar la firma del servidor

Estos son los parametros basicos que se pueden configurar. Existen muchos mas que se pueden consultar en la documentacion oficial de Apache.

Es importante tener en cuenta que cada distribución de Linux tiene su forma especial de trabajar la configuracion de Apache. Todo dependera de como se vaya componiendo el archivo de configuracion httpd.conf. Por ejemplo, en Red Hat Enterprise Linux 5 esta todo concentrado en un solo archivo: httpd.conf. En cambio, en Debian la configuración se divide en el directorio de Apache2 en sites-available, sites-enabled, mods-available, mods-enabled, entre otros.

Obviamente, cada configuración tiene sus pros y contras, pero todo funciona a gusto del consumidor. Pero para tranquilidad de ustedes, estimados lectores y colegas, haré un ejemplo sobre Debian y otro sobre Centos.

Se asume que en ambas distribuciones de linux ya se encuentra instalado el servicio

Apache2 sobre Debian

El escenario es el siguiente: Tengo una maquina con Debian 5, servidor grafico corriendo, fluxbox como gestor de ventanas y xterm como emulador de terminal. Un screenshot para aclarar la pelicula:

Para que el ejemplo sea un poco mas real, agregaremos las siguientes lineas al archivo /etc/hosts

127.0.0.1 www.estoesunejemplo.com

127.0.0.1 www.estoesotroejemplo.com

Y reiniciamos el servicio de redes: /etc/init.d/networking y hacemos una prueba de conectvidad a ambos dominios. Tiene que aparecernos algo asi:

Todo bien? Perfecto, entonces sigamos.  Vamos a crear el primer virtual host “www.estoesunejemplo.com”. Para esto, crearemos un archivo llamado www.estoesunejemplo.com dentro de /etc/apache2/sites-available y a modo de prueba, anotaremos lo siguiente:

<VirtualHost *:80>
ServerAdmin admin@estoesunejemplo.com
ServerName www.estoesunejemplo.com
ServerAlias estoesunejemplo.com
ServerSignature On
DocumentRoot /home/estoesunejemolo/www/
</VirtualHost *:80>

Y luego creamos otro archivo de texto llamado www.estoesotroejemplo.com y agregamos las siguientes lineas:

<VirtualHost *:80>
ServerAdmin admin@estoesotroejemplo.com
ServerName www.estoesotroejemplo.com
ServerAlias estoesotroejemplo.com
ServerSignature On
DocumentRoot /home/estoesotroejemplo/www/
</VirtualHost *:80>

Ups! Nos falto realizar un paso. Tenemos que agregar los usuarios estoesunejemplo y estoesotroejemplo y en ambos lados crear los directorios www. Ahora hay que habilitar ambos sitios. En la consola tienes que escribir:

a2ensite www.estoesunejemplo.com
a2ensite www.estoesotroejemplo.com

Y relodeamos el servicio de apache2

/etc/init.d/apache2 reload

Para finalizar, nos queda construir los sitios web para que puedan ser visibles.
Iremos a /home/estoesunejemplo/www y crearemos un archivo que se llame index.html y en su contenido escribimos

<h1>www.estoesunejemplo.com</h1>

Para el sitio www.estoesotroejemplo.com tenemos que hacer lo mismo, pero en su respectivo directorio y en el contenido del index.html poner

<h1>www.estoesotroejemplo.com</h1>

Y voila! Al hacer una prueba, si entramos en www.estoesunejemplo.com en algun navegador web (usare lynx) nos mostrara lo siguiente:

Y listoco. Eso seria con Debian. Vamos con Centos.

Apache2 sobre Centos

Si la implementacion en Debian es sencillo, en Centos es mas sencillo aun. El escenario es es siguiente: Una instalacion comun y corriente de Centos, sin software de escritorio adicional. Solo entorno grafico Gnome y Servidor web Apache2. No he instalado ni quitado ningun software.

Escritorio con Centos

Escritorio con Centos

Nota importante para los que instalaron el servidor web desde la instalacion del sistema: Tienen que activar el servicio al arranque con la siguiente orden:

/sbin/chkconfig httpd on

Para que este ejemplo resulte al igual que el anterior, tenemos que hacer lo siguiente:
agregar las siguientes lineas al archivo /etc/hosts

127.0.0.1 www.estoesunejemplo.com

127.0.0.1 www.estoesotroejemplo.com

Y reiniciamos el servicio de redes: service networking restart
Hacemos arrancar el demonio de apache2 y nos aseguramos que vemos la pagina por default:

Apache2 Default

Apache2 Default

Abrimos una terminal y vamos a /etc/httpd/conf/ y editamos el archivo httpd.conf con algun editor de texto. Usare gedit porque me acomoda mas. En el archivo httpd.conf tenemos que ubicar la seccion correspondiente a los Virtual Hosts. Exactamente esta ubicado al final del archivo.
El archivo de configuracion nos muestra un ejemplo sobre como podemos usar la caracteristica.
Justo debajo de la ultima linea escribiremos lo siguiente:

 

<VirtualHost *:80>
ServerAdmin admin@estoesunejemplo.com
ServerName www.estoesunejemplo.com
ServerAlias estoesunejemplo.com
ServerSignature On
DocumentRoot /var/www/www.estoesunejemplo.com/
</VirtualHost *:80>
<VirtualHost *:80>
ServerAdmin admin@estoesotroejemplo.com
ServerName www.estoesotroejemplo.com
ServerAlias estoesotroejemplo.com
ServerSignature On
DocumentRoot /var/www/www.estoesotroejemplo.com/
</VirtualHost *:80>

Guardamos, cerramos y creamos los directorios correspondientes, estoesunejemplo y estoesotroejemplo, dentro de /var/www/ . Posteriormente, en /var/www/www.estoesunejemplo.com/ creamos un fichero llamado index.html y dentro de aquel fichero escribimos lo siguiente:

<h1>www.estoesunejemplo.com</h1>

Ahora, vamos a /var/www/www.estoesotroejemplo/ creamos un fichero llamado index.html y dentro de aquel fichero escribimos lo siguiente:

<h1>www.estoesotroejemplo.com</h1>

Solo resta reiniciar el servidor de apache y probar cada virtual host. Para reiniciar el servidor, escribimos lo sigueinte: service httpd restart

Cuando me encontraba escribiendo este post, mi notebook se apagó y nunca más encendió. El equipo que estaba corriendo Windows Server 2008 R2 y en el que tenía montada las pruebas, lo estoy usando como workstation con Windows 7. Así que el ejemplo de IIS 7.5 lo haré sobre Windows 7 y terminaré de explicar el ejemplo de Centos con palabras.

Una vez que el servicio esta reiniciado, abrir una ventana del firefox y meter la direccion www.estoesunejemplo.com y veran el titulo del sitio web en grande. Si se van a www.estoesotroejemplo.com, podrán ver lo mismo, pero correspondiente a www.estoesotroejemplo.com.

IIS 7.5

El ejemplo lo pensaba hacer con Windows Server 2008 R2, pero lo haré con Windows 7. Prácticamente es lo mismo.

Para que este ejemplo pueda funcionar de igual modo que los dos ejemplos anteriores, tenemos que agregar las siguientes lineas al archivo C:WindowsSystem32driversetchosts

127.0.0.1 estoesunejemplo.com
127.0.0.1 estoesotroejemplo.com

Se asume que IIS 7.5 ya se encuentra instalado. Podemos hacer una prueba de su funcionamiento abriendo una ventana del navegador y escribiendo localhost en la barra de direcciones. Si el servicio está funcinoando, mostrará una imagen así:

IIS 7.5 en Funcionamiento

IIS 7.5 en Funcionamiento

Ahora abrimos el administrador de IIS 7.5. En Windows Server 2008 R2, se encuentra en el menú de administrar servidor y en Windows 7 se encuentra en la administración del equipo.

La administración de IIS 7.5 consta de 3 columnas: Conexiones, Aspectos de configuración y Acciones. Para crear los hosts virtuales, nos centraremos en la columna de Conexiones.

Administracion IIS 7.5

Administracion IIS 7.5

En la columna de Conexiones, hay un objeto llamado Sitios. En el objeto Sitios, hacemos click secundario y escogemos la opcion Agregar Sitio Web. Nos motrará una ventana como esta:

Agregar Sitio Web IIS 7.5

Agregar Sitio Web IIS 7.5

Y rellenaremos las cajas de texto, tal cual como aparece en la imagen:

OJO: Antes de hacer click en aceptar, hay que hacer click en el boton de Conectar Como y ahí especificamos un usuario con su respectiva password.

En Establecer escribimos el usuario y el password. En mi caso, puse mi usuario.

Hacemos click en aceptar y luego creamos el host virtual haciendo click en  aceptar.

Para crear el host para estoesotroejemplo.com se hace exactamente lo mismo, solo que se cambia el nombre y el directorio en donde se alojaran los archivos.

Ahora hay que crear un archivo llamado index.htm y le ponemos cualquier contenido y lo guardamos en C:inetpubwwwrootestoesunejemplo.com

Para probar la configuracion, abrimos una ventana del navegador y escribimos: estoesunejemplo.com

Como yo no creé nada para el sitio estoesotroejemplo.com me arrojará un error como el de la imagen:

Como pueden ver, crear hosts virtuales en Apache2 e IIS7.5 es una tarea sencilla que no toma mucho tiempo. Ahora si son hábiles con powershell y bash pueden automatizar más aún el proceso.

Espero que les haya gustado y cualquier duda, dejenla en los comentarios

(aqui se metio una toto)

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *