jueves, 5 de marzo de 2009

Virtual Host en Apache 2.2 (Drupal+Windows)

Los sitios virtuales en un único servidor de páginas web como Apache es la técnica usada para poder tener acceso a diferentes sitios web o aplicaciones web que legalmente hablando están hospeados en la misma computadora o distribuidos en otras computadoras.

El punto es que si por ejemplo tenemos ya creado un sitio y lo accesamos desde la barra de direcciones del navegador web de la forma http://localhost/sitio1 y también tenemos creado otro sitio y lo accesamos de la forma http://localhost/sitio2, veremos que los estamos accesando explícitamente, pues estamos indicando la subcarpeta donde hemos guardado a cada sitio web. En éste caso se puede deducir que yo tengo un sitio web en una subcarpeta llamada "sitio1" y que también tengo otra subcarpeta llamada "sitio2".

Ahora bien, es posible con Apache, crear lo que se llaman sitios virtuales con la intención de que podamos utilizar direcciones URL de la forma a la que generalmente estamos acostumbrados utilizando el conocidícimo www y el punto com, por ejemplo:

URL Original URL Virtual o ficticia (puede ser cualquier URL deseada).
http://sitio1 ----> www.sitio1.com
http://sitio2 ----> www.sitio2.com

Para lograr el efecto deseado hay que configurar los siguientes archivos:

C:\WINDOWS\system32\drivers\etc\hosts
C:\wamp\bin\apache\Apache2.2.11\conf\extra\httpd-vhosts.conf
C:\wamp\bin\apache\Apache2.2.11\conf\httpd.conf

Además también hay que cambiar el nombre a la carpeta donde están todos los archivos del sitio web que queremos mostrar (donde instalamos drupal), por ejemplo si tenemos:

C:\wamp\www\sitio1\sites\default

Hay que ponerlo ahora como:

C:\wamp\www\sitio1\sites\www.sitio1.com


Configuración del archivo Hosts:

Agregar una línea según los sitios virtuales que vamos a tener. Cada línea se compone de la IP local, un espacio y luego el nombre del sitio. Originalmente ya debería existir la línea para hacer referencia a "localhost", entonces yo agregaría dos líneas más para los sitios web virtuales.

127.0.0.1 localhost
127.0.0.1 www.sitio1.com
127.0.0.1 www.sitio2.com

Obviamente la IP tiene que ser la misma porque los datos los tengo en la misma computadora.

Configuración de httpd-vhosts.conf:

En éste archivo hay que agregar lo siguiente:

NameVirtualHost *:80

<virtualhost 80="">
ServerName localhost:80
DocumentRoot "C:/wamp/www"
</virtualhost>

<virtualhost 80="">
ServerName www.sitio1.com
DocumentRoot "c:/wamp/www/www.sitio1.com"
</virtualhost>

<virtualhost 80="">
ServerName www.sitio2.com
DocumentRoot "c:/wamp/www/www.sitio2.com"
</virtualhost>

La línea de código que dice "NameVirtualHost *:80" generalmente ya está, por lo que no hay que cambiarla.

Para más detalles sobre la directiva <VirtualHost> recomiendo leer los siguientes sitios:

Name-based Virtual Host Support
Multi-site on Windows


Configuración de httpd.conf:

En éste archivo solo hay que activar una línea que originalmente está como comentario. La línea es:

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

La línea que tiene el include es a quién tenemos que activar removiendo el signo #. De está forma se podrá hacer referencia al archivo httpd-vhosts.conf el cual configuramos anteriormente.

Finalmente, ya se podrá utilizar la URL citadas, pero recordemos que hay que reiniciar el servidor web para que los cambios tengan efecto:

www.sitio1.com
www.sitio2.com

Cuando aparece el siguiente error:

Forbidden

You don't have permission to access / on this server.

Significa que no se agregó el servidor virtual en el archivo http-vhosts.conf de Apache o el caso de Linux ver si siguiente link.

También significa que en httpd.conf hay que agregar la directiva
<Directory>:
<Directory "c:/xxx/xxx/www/demo">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride all

#
# Controls who can get stuff from this server.
#

#onlineoffline tag - don't remove
Order Deny,Allow
Allow from all
Allow from 186.xx.xx.xx
</Directory>


Ayuda en En La PC

No hay comentarios: