Sei sulla pagina 1di 6

Virtualhosting en Apache

__________________________________________________________________________________
___________________________________

Iv�n Belmonte S�nchez, ttyp0@inet2u.com


Revisi�n 1.0, 10 de Febrero de 2002
ASSL Asociaci�n de Soporte al Software Libre, http://assl.ath.cx

Virtualhosting en mi Apache? Para que?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Apache es el servidor web m�s utilizado en los entornos Unix. Este documento no
pretende explicar sus caracter�sticas
ni TODA su sintaxis... en el se pretende dar unas b�sicas nociones sobre lo que
es el virtualhosting y c�mo se
configura en un servidor Apache.

Los datos oficiales de este servidor web son los siguientes:

Pagina oficial: http://www.apache.org

Documentacion oficial: http://httpd.apache.org/docs

�ltima versi�n: 1.3.23

Podemos encontrar documentaci�n muy valiosa relacionada con Apache en LinuxDoc


(wwww.linuxdoc.org) para saber m�s
acerca de su funcionamiento, su configuraci�n con m�dulos para php y ssl, o
para que admita extensiones frontpage.

Bien, sin m�s pre�mbulos, vamos a lo que nos interesa...

1.- Qu� hace apache?

~~~~~~~~~~~~~~~~~~~~

Apache, como servidor web, simplemente se limita a responder peticiones de


clientes (navegadores) que quieren ver el
contenido de algunos archivos alojados en el disco duro de la m�quina sobre
laque corre el servidor. Es importante
entender que el servidor no *ejecuta* NADA, no reproduce sonidos ni interpreta
el lenguaje en el que esta codificada
la p�gina web que solicita el cliente. El servidor simplemente recibe una
petici�n, y coge el archivo que el navegador
le pide, y se lo muestra.El encargado de interpretar el c�digo es
*exclusivamente el navegador*.

El servidor tiene un puerto de escucha (normalmente el puerto 80) por el que se


le realizan las peticiones. Una vez
recibida la petici�n, simplemente deja ver al navegador el fichero que busca.

Pongamos el ejemplo de un dominio que est� alojado en un servidor apache. Para


nuestro caso, bien podr�amos hablar de
un dominio 'en principio' falso, tal como www.fakedomain.net
Un usuario abre su cliente web, por ejemplo netscape, y teclea en el campo de
la URL la direcci�n de nuestro dominio
fict�cio. Lo primero que har� su ordenador es consultar a su servidor de DNS
para resolver la IP del dominio, y una
vez sepa la IP, le enviar� una petici�n conforme quiere ver el contenido del
hosting de nuestro dominio...

El servidor recibir� la petici�n, y lo primero que har� ser� buscar el


directorio donde se almacenan los archivos
relacionados con esa p�gina. Una vez encontrado el directorio, buscar� un
archivo INDEX, que ser� el que muestre por
defecto. Si el servidor no encuentra ning�n archivo INDEX, devolver� un mensaje
de error que puede cambiar en seg�n
que situaciones.

- Qu� es un archivo Index? -

Es el archivo que se muestra por defecto cuando el servidor recibe una


petici�n. Podemos prescindir de un archivo
INDEX, pero entonces la direccion de nuestra web, pasar�a de ser
www.fakedomain.net a ser
www.fakedomain.net/archivo.htm, donde 'archivo.htm' ser�a el nombre que le
hemos dado al archivo de la p�gina
principal.

Es decir, es facil... nuestro servidor, a menos que lo cambiemos, por defecto


entiende las direcciones de la siguiente
manera:

www.fakedomain.net lo interpreta como www.fakedomain.net/index.html

y de ese modo, siempre que reciba una petici�n para ver una pagina web, buscara
el archivo INDEX dentro del directorio
perteneciente al dominio.

- Y el INDEX siempre tiene que ser .HTML? -

No. Aqui entra en juego el archivo de configuraci�n de nuestro servidor, en el


que podemos especificar que busque
archivos INDEX con las extensiones que queramos. Obviamente debemos tener
cuidado con especificar extensiones que
sepamos que est�n soportadas. Por ejemplo, no deber�amos especificar que el
INDEX pueda ser .pl si no tenemos Perl
instalado en nuestro sistema.

Os pongo un ejemplo de un Apache configurado para responder a peticiones con


archivos INDEX de extension .html y .php:

-------------------- cut here ------------------------

# DirectoryIndex: Name of the file or files to use as a pre-written HTML

# directory index. Separate multiple entries with spaces.

#
<IfModule mod_dir.c>

DirectoryIndex index.html index.php

</IfModule>

-------------------- cut here ------------------------

Como veis, tambien podriamos especificar que el archivo INDEX se llamase


entrada.html, o bienvenida.php, o
MiPriperaPagina.htm... pero no es lo que debemos hacer, puesto que existen unos
estandares que por bien de todos
deberiamos tratar de seguir. A la hora de configurar un servidor con fines
comerciales nos las veriamos negras si
tuvi�semos que personalizar el servidor para este tipo de necesidades en cada
cliente ;-)

- Y como le digo al servidor donde tiene que ir a buscar el archivo INDEX? -

Bueno, como dec�a antes, el servidor recibe una petici�n y se va a buscar el


directorio donde se almacenan los
archivos relacionados con la p�gina solicitada. en el archivo de configuraci�n
encontramos una secci�n donde se
especifica la raiz de los documentos.

Aqu� os dejo un ejemplo:

-------------------- cut here ------------------------

# DocumentRoot: The directory out of which you will serve your

# documents. By default, all requests are taken from this directory, but

# symbolic links and aliases may be used to point to other locations.

DocumentRoot "/var/www/htdocs"

-------------------- cut here ------------------------

En este caso, el servidor recibir�a una petici�n para ver www.fakedomain.net, y


directamente ir�a a /var/www/htdocs a
buscar el archivo index.html o index.php, y si lo encontrase, lo mostrar�a.

MUY BIEN!! ya tenemos un Apache funcionando en el que podemos alojar la p�gina


web de un dominio.

Hmmm... que pasar�a si quisi�ramos alojar otra p�gina web, correspondiente a


otro dominio? tendr�amos que montar otra
m�quina con otra IP y otro Apache?

No se�ores...

2.- VIRTUALHOSTING
~~~~~~~~~~~~~~~~~~

Existe una manera de almacenar en diferentes directorios los archivos


correspondientes a diferentes p�ginas web,
obviamente de diferentes dominios (o subdominios de un dominio... lo veremos
m�s adelante). Se llama VirtualHosting, y
como casitodo en Apache, se define como un 'tag'... de la siguiente forma:

-------------------- cut here ------------------------

# VirtualHost example:

# Almost any Apache directive may go into a VirtualHost container.

# The first VirtualHost section is used for requests without a known

# server name.

<VirtualHost 192.168.1.10>

ServerAdmin admin@fakedomain2.net

DocumentRoot /home/fakedomain2/www/htdocs

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/fakedomain2/"

ServerName www.fakedomain2.net

ErrorLog logs/fakedomain2-error_log

CustomLog logs/fakedomain2-access_log common

</VirtualHost>

-------------------- cut here ------------------------

Nadamas abrir el tag (tag es sin�nimo de 'etiqueta', es lo que se encuentra


entre los simbolos < y >) nos encontramos
con el comando 'VirtualHost' que indica que se va a especificar un nuevo
directorio para una nueva p�gina web, aparte
de la que ya ten�amos, as� como el comportamiento que debe adquirir el servidor
al recibir una petici�n para mostrar
esa p�gina.

Acto seguido vemos las directivas del VirtualHost:

ServerAdmin: e-mail del administrador de ese website

DocumentRoot: directorio en el que se alojan los ficheros de la web

ScriptAlias: directorio donde se alojan los cgi's de la web

ServerName: direccion que teclea el cliente como URL


ErrorLog: fichero de log de errores

CustomLog: fichero de log de accesos

Podemos escribir m�s directivas, con las que especificar si un directorio tiene
que estar protegido con un password, o
especificar si un directorio puede ser navegable (ver su contenido al estilo
FTP, sin HTML de por medio)... pero
b�sicamente la estructura de un VirtualHost simple se remite al ejemplo.

Ahora podemos entender que hayan varias p�ginas web alojadas en un mismo
servidor con una misma IP. Solo debemos crear
un VirtualHost por cada dominio o subdominio que queramos alojar.

Lo del subdominio no es mas que, por ejemplo si el propietario de un dominio


quiere hacer una subseccion de ese
dominio, puede hacer algo as�:

http://fake.fakedomain.net

donde vemos que 'fake' es un nombre que se le da al subdominio, y


'fakedomain.net' es eldominio en si. De ese modo, si
por ejemplo una compa��a est� estructurada en varias secciones, podr�a
esquematizar su web del siguiente modo:

http://www.empresa.com

http://ventas.empresa.com

http://personal.empresa.com

http://soporte.empresa.com

http://catalogos.empresa.com

etc...

etc.....

etc.......

siendo cada subdominio una parte de la empresa... y a la hora de hospedar su


web en un servidor apache, cada
subdominio tendr�a su propio VirtualHost en el que almacenar los archivos de la
web, que cada seccion tendria una web
independiente. Lo �nico que tendr�amos que hacer ser�a cambiar en cada caso el
valor de las directivas de cada
VirtualHost.

Realmente a los ojos de quien hospeda su p�ginaen nuestro servidor, esto es


totalmente transparente...ellos logean con
su usuario y password y tienen un directorio donde subir por FTP los archivos
de su web.

- Y como sabe el servidor qu� p�gina tiene que mostrar ante una petici�n? -

Cuando un cliente lanza una petici�n a un servidor, en la cabecera de sus


paquetes esta especificada la direcci�n del
origen y la de destino, as� como su 'nombre' sin resolver. De ese modo, Apache
puede saber exactamente que dominio se
intenta visualizar, y busca el VirtualHost en el que la directiva NameServer
coincide con el dominio especificado en
la cabecera. Es importante tener en cuenta que para crear un subdominio de un
dominio, tenemos que notificarlo al
administrador del servidor de DNS que nos ha proporcionado el dominio, para que
cree una entrada en el DNS con el
nombre del subdominio y la IP hacia la que apunta, sino, no funcionara ;-)

Bien, y creo que con esto no me dejo nada pendiente. Si bien como dec�a al
principio del documento, no pretendo
explicar la sintaxis a fondo para la configuraci�n de un servidor Apache, sino
lafilosof�a de c�mo funciona. Para m�s
datos sobre la configuraci�n podeis dirigiros a la documentaci�n oficial y a
los HOW-TO's.

Un Saludo!

ttyp0

Potrebbero piacerti anche