lunes, 4 de febrero de 2008

Truco para poder tener virtual host en modo local

Hola amig@s que visitan el blog...
En esta ocasión quiero publicar un pequeño truco que aprendí con mi amigo Cesar Rodas, se trata de unas modificaciones que se hacen a dos archivos especificamente, para poder obtener varias dominios locales en una sola maquina...

Normalmente solemos tener cuando usamos aplicaciones como el appserv, para acceder a la pagina que desarrollamos las direcciones http://localhost/ o http://127.0.0.1/ o el nombre que le damos a la maquina desde windows, pero esas son todas, y si tenemos varios proyectos en paralelo, tenemos que escribir algo similar a http://localhost/proyecto1/ http://localhost/proyecto2/ etc...

Pues con este metodo podremos acceder a algo asi como
http://proyecto1.com
http://proyecto.com y asi sucesivamente, sin preocuparnos porque el path real
sea
c:\AppServ\www\proyecto1\
o
c:\AppServ\www\proyecto2\

Los archivos que debemos modificar para lograr esto son:
el httpd.conf que es el archivo de configuraciones del apache, que en mi configuracion se encuentra almacenada en
c:\AppServ\apache\conf\httpd.conf
y el archivo
host
que se encuentra en
C:\WINDOWS\SYSTEM32\DRIVERS\etc\hosts
en el archivo host
deberian encontrar algo asi como
127.0.0.1 localhost
y lo que hacen es agregar todos los nombres que quieran uno al lado de otro tras el localhost
por ejemplo
127.0.0.1 foro.phparaguay.com joomla.phparaguay.com blog.phparaguay.com phpmyadmin.phparaguay.com ventiladorcito.com
entonces cada vez que en su browser/navegador escriban cualquiera de esos nombres, se apuntara a la direccion ip 127.0.0.1 que en este caso es de loopback osea nuestra maquina...

ahora deberemos modificar el httpd.conf de modo a que el apache redireccione a la carpeta que nosotros deseemos para que surta efecto nuestro truquillo
para eso agregamos las siguientes lineas al final del archivo httpd.conf

NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin root@phparaguay
ServerName ventiladorcito.com
DocumentRoot "C:/Appserv/www/joomla"
</VirtualHost>

<VirtualHost *:80>
ServerAdmin root@phparaguay
ServerName joomla.phparaguay.com
DocumentRoot "C:/Appserv/www/joo15"
</VirtualHost>

<VirtualHost *:80>
ServerAdmin root@phparaguay
ServerName foro.phparaguay.com
DocumentRoot "C:/Appserv/www/beta1"
</VirtualHost>

<VirtualHost *:80>
ServerAdmin root@phparaguay
ServerName blog.phparaguay.com
DocumentRoot "C:/Appserv/www/blog"
</VirtualHost>

<VirtualHost *:80>
ServerAdmin root@phparaguay
ServerName phpMyAdmin.phparaguay.com
DocumentRoot "C:/Appserv/www/phpMyAdmin"
</VirtualHost>

claro esta que estos son las direcciones que pusimos en el ejemplo anterior...
la linea del server name es la que "escucha" nuestro apache y redirecciona a la carpeta
que el document root le señale... hay otras lineas que podemos poner tambien... pero las he omitido con el proposito de simplificar las cosas.

Cabe destacar que recomiendo hacer un backup de ambos archivos antes de probar nada, para evitar cualquier tipo de problemas que puedan surgir...

Guarden ambos archivos, y prueben...
Agradezco a Cesar por haberme mostrado el truco, que el ya tenia bajo la manga hace mucho tiempo ;)
Saludos y hasta la proxima!!!

5 comentarios:

  1. Demonios, muchas gracias por la ayuda pero no me funconó, he leido varios manuales y todos me llevan a lo mismo, agrego las lineas necesarias en ambos archivos y lo único que consigo es que me lleve a "localhost", es decir el directorio www. Aun cuando especifico claramente DocummentRoot a otra subcarpeta de www.

    ResponderEliminar
  2. asegurate que esta linea:
    LoadModule vhost_alias_module modules/mod_vhost_alias.so

    se encuentre descomentada en tu httpd.conf

    ResponderEliminar
  3. Hola P431i7 (Soy el Anónimo del primer comentario) Muy amable tu respuesta, una disculpa por lo de Demonios jeje, tenía todo el día peleando con el sistema por no descomentar una linea... Duuu!. En fin muchas gracias por tu tiempo y por compartir tu conocimiento.

    ResponderEliminar
  4. no problem, yo me surti de informacion en la web, y el conocimiento es algo que se debe compartir para que sirva

    ResponderEliminar
  5. Dios, es lo que estaba buscando hacía muchisimo tiempo.
    Muchas gracias, me has salvado la vida!!!!

    ResponderEliminar