| Fin del soporte para PHP4 » |
Bueno, para aquellos que no lo saben. ¿Qué es un virtual host? O empezando por lo básico:
¿Qué es un host?.
Según los anónimos editaros de la wikipedia en español, el término informático host, puede referirse a (todo muy relacionado):
Nosotros tomaremos la segunda opción. Por lo tanto interpretaremos a un virtual host como la práctica de tener varios dominios funcionando sobre el mismo equipo.
Hay dos tipos de virtual hosts. Basados en direcciones IP (asignando una IP a cada dominio) o basados en nombres. Aqui hablaremos de vhosts basados en nombres (pero sos libre de obtener mas informacion de vhosts), lo que nos permite tener por ejemplo:
El sitio:
http://www.fallenjehova.com.ar/
en la carpeta:
c:\wamp\www\fallenjehova\
Y el sitio:
http://www.notengoningunotrositio.com.ar/
en la caperpeta:
c:\wamp\www\notengonada\
¿Qué utilidad le encuentro a esto?
A nivel desarrollo, me parece mucho más cómodo en el sentido de que no tengo que andar poniendo http://localhost/sdaf/asdfasd/asd/dasf/das/sdf/ para ubicar mis projectos en las carpetas. Además cuando tengo que realizar modificaciones sobre sitios que lamentablemente tienen los paths hardcodeados en los links, puedo tenerlo funcionando en segundos sin tener que molestarme en andar reemplazando todo.
Ni a hablar la ventaja de los vhost a nivel servidor, básicamente muchísimos hostings utilizan los vhost para ofrecer diversos dominios en una misma pc, y con una misma ip.
Configuración
Suponiendo que queremos la configuración arriba propuesta. Para habilitarlo tendremos que modificar dos archivos. El primero es el conocido httpd.conf y descomentar o agregar la siguiente linea:
# Virtual hosts Include conf/extra/httpd-vhosts.conf
Ademas debemos configurar los directorios donde estarán nuestros sitios y con las opciones que deseamos para cada uno:
<directory C:/wamp/www/fallenjehova>
Options Indexes FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from All
</directory>
<directory C:\wamp\www\notengonada\>
Options Indexes FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from All
</directory>
Luego en conf/extra/httpd-vhost.conf
<virtualhost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "C:/wamp/www/fallenjehova"
ServerName www.fallenjehova.com.ar
ErrorLog ../logs/fallenjehova_apache_error.log
CustomLog ../logs/fallenjehova_access_log common
</virtualhost>
<virtualhost *:80>
ServerAdmin webmaster@localhost
DocumentRoot “C:/wamp/www/notengonada”
ServerName www.notengoningunotrositio.com.ar
ErrorLog ../logs/notengonada_apache_error.log
CustomLog ../logs/notengonada_access_log common
</virtualhost>
Luego reiniciamos apache y todo debería estar funcionando. Pero ahora bien, cuando querramos tipear esos hosts en el browser si existe nos va a direccionar no a nuestro server sino a donde esté alojado ese sitio, y si no existe nos dirá que no existe el host. Para poder acceder a esas direcciones localmente, debemos editar el archivo hosts: /etc/hosts (en linux) o c:\WINDOWS\system32\drivers\etc\hosts ( en windows ).
Agregando una entrada con nuestra ip (127.0.0.1 y el nombre de dominio que queremos). De esta forma, desde nuetra maquina si ponemos en el browser al sitio www.notengoningunotrositio.com.ar, accederemos a los sitios. Obviamente perdemos la capacidad de acceder al sitio original, ya que lo resolverá como dirección local.
directory C:/wamp/www/proyecto1
Options Indexes FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from All
/directory
directory C:\wamp\www\proyecto2
Options Indexes FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from All
/directory
directory C:\wamp\www\proyecto3
Options Indexes FollowSymLinks
AllowOverride All
Order Allow,Deny
Allow from All
/directory