Manual básico de creación de Host Virtuales en Apache

Resumen. Un host virtual, o VirtualHost, en Apache nos permite mantener múltiples nombres de host en nuestro servidor web. El presente artículo permite explicar de manera sencilla y concisa cómo crearlos en nuestro servidor local y configurar nuestro sistema operativo para que acepte dichos nombres de host.

Introducción

Muchos de nosotros estamos acostumbrados a trabajar en nuestro servidor web local para nuestros proyectos en modo de prueba o testeo, y por lo generalmente tenemos más de un proyecto en camino, sea laboral (p.e. el web site de un cliente) o personal (p.e. nuestro blog o comunidad virtual). Solemos guardar estos proyectos en carpetas separadas dentro un directorio tal como C:/www/ que sería nuestro directorio raíz web (desde el cual llamamos a nuestro clásico http://localhost/ ), y llamar a nuestros proyectos de la siguiente manera en nuestro navegador preferido:

http://localhost/tiperu ,
http://localhost/willyblog ,
http://localhost/bazar , entre otros por citar un ejemplo.

En cierto modo podemos trabajar de manera regularmente cómoda, pero quizá desearíamos usar el nombre del dominio real con el que trabajos estos proyectos en la Internet. Así podríamos hacer usar lo siguiente:

http://www.tiperu.com/ en lugar de http://localhost/tiperu ,
http://willy.tiperu.com/ en lugar de http://localhost/willyblog , o
http://www.bazarperu.com/ en lugar de http://localhost/bazar

Y cómo hacemos esto?, pues la respuesta es sencilla, configurando la directiva VirtualHost de nuestro servidor Apache y el archivo host de nuestro Sistema Operativo (Windows o Linux).

Configurando el archivo host

Lo primero que configuraremos será el archivo host de nuestro SO, para Linux lo podemos encontrar en el directorio /etc/ mientras que para Windows XP lo encontramos en C:/Windows/System32/Drivers/etc/. Este archivo lo que hace es asignar direcciones IP a los nombres de host, para que al colocar por ejemplo 127.0.0.1 o localhost en nuestro navegador nos redireccione al mismo contenido. No se sorprenda si encuentra el siguiente par en el archivo host: 127.0.0.1 localhost, dónde el primer valor es nuestra dirección IP local y el segundo el nombre del host.

Lo que haremos ahora es colocar tantas entradas cono deseemos para nuestros proyectos, relacionando la IP local con nuestros nombres de dominio. Para el ejemplo tomaremos las rutas que di anteriormente, las cuales se colocarán debajo del par 127.0.0.1 localhost:

#localhost
127.0.0.1 localhost
#TIPeru COM SAC (Mi empresa de hosting)
127.0.0.1 http://www.tiperu.com/
#Mi blog
127.0.01 willy.tiperu.com
#BazarPeru (Tienda Virtual)
127.0.0.1 http://www.bazarperu.com/

Nótese que he colocado el caracter “#” . Este carácter nos permite ingresar un texto a manera de comentario. Bueno, una vez hechos estos cambios procedemos a guardar el archivo.Para confirmar su funcionamiento abra su navegador y digite cualquiera de los nombres de host que ha agregado, recuerde de respetar el nombre completo, ya que una entrada del tipo tiperu.com no tendría efecto por carecer del www. que lo antecede.

Si al ingresar el nombre del host le muestra el contenido de su http://localhost/ significa que la asignación de IP para el nombre de host a tenido efecto. Nótese que aún su nombre de host no apunta a la carpeta en la que se guarda su proyecto. Este punto lo veremos a continuación.

Configurando el archivo httpd.conf del Apache

Ahora configuraremos nuestro servidor Apache para que acepte los nombres de dominio agregados al archivo host y los relacione con las carpetas que albergan los archivos de nuestros proyectos. Para ello abriremos el archivo conf/httpd.conf y nos dirigiremos a la siguiente sección:

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#

Notas:
1. Haga una copia de respaldo de sus archivos de configuración antes de realizar cualquier cambio en ellos.

2. Si no encuentra la sección Virtual Hosts en el archivo httpd.conf quizá lo pueda ubicar en la siguiente ruta conf/extra/httpd-vhosts.conf

Luego procederemos a quitar el comentario de ##NameVirtualHost *:80 dejándolo de la siguiente manera:

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#

Esta acción nos permisita trabajar con host virtuales basados en nombres. El * representa un número IP y puede ser reemplazado por uno de ellos si desee. Para el ejemplo déjelo tal y como esta.

Enseguida procederemos a configurar los host virtuales, agregándolos de la siguiente manera:

#localhost
<VirtualHost *:80>
DocumentRoot "C:/www"
ServerName localhost:80
</VirtualHost>

#TIPeru COM SAC
<VirtualHost *:80>
DocumentRoot "C:/wwww/tiperu"
ServerName www.tiperu.com
</VirtualHost>

#Mi Blog
<VirtualHost *:80>
ServerAdmin willy@tiperu.com
DocumentRoot "C:/wwww/willy"
ServerName willy.tiperu.com
</VirtualHost>

#BazarPeru
<VirtualHost *:80>
ServerAdmin webmaster@bazarperu.com
DocumentRoot "C:/wwww/bazar"
ServerName www.bazarperu.com
</VirtualHost>

Como se puede aprecia cada Virtual Host esta encerrado entre las etiquetas y que contiene el parámetro *:80 que es NameHostVirtual al cual se refiere. Dentro de estas etiquetas, 2 valores son esenciales para que funcionen correctamente nuestros host virtuales:

DocumentRoot. Que es la ruta en la cual se guarda nuestra página web; y
ServerName. Que es el nombre del host que previamente agregamos al archivo host de nuestro S.O.

Adicionalmente podemos agregar otros valores, tal como si cada host virtual fuera un host independiente (p.e. ServerAdmin).

Nótese algo muy importante. Si bien localhost es nuestro servidor local por defecto, debemos también agregarlo con un virtual host para que todo trabaje en orden, y debemos agregarle los mismos valores del DocumentRoot y ServerName que posee en su configuración global, de lo contrario no cargará el host.

Finalmente lo que haremos es para el servicio de nuestro servidor Apache y volverlo a iniciar. Si todo esta correctamente configurado podemos cargar en nuestro navegador uno de los nombres de host y ver los resultados (p.e. http://www.tiperu.com/). Si carga el contenido de la carpeta que le hemos asignado en el y no el directorio raíz del localhost quiere decir que todo esta correcto. Felicidades Ud. Ya tiene configurado su host virtual !!!

Autor

William Wong Garay
Gerente General de TIPeru COM S.A.C.
Webmaster de Negociando por Internet
Puedes ver el original de este artículo en este enlace

Comments

URL Amigables

Muchas gracias por el artículo Willy. URL Rewrite es muy poderoso y su aplicación para SEO es de gran utilidad.

Varios CMS ya permiten crear uURL de acuerdo al título de cada artículo o palabras que definamos, usando archivos .htaccess y URL Rewrite.

Alexis Bellido
Teletrabajo Hoy: Una comunidad para teletrabajadores

Gracias por el aporte Willy,

Gracias por el aporte Willy, siempre es bueno aprender algo nuevo cada dia :D

Salu2
Erik
http://porroa.com/erik

De na' muxaxos

Gracias x las gracias jeje, tengo otro artículo por subir, los que conocen mi blog ya lo habrán leído, tiene la temática de optimizar url extensas a url amigables... que Alexis ya lo debió haber revisado... ummm por eso el pequeño error de su comentario jeje (Man el articulo es sobre Host virtuales no sobre mod_rewrite :S) plop... pasa en las mejores familias XD

Ah... aunq este no sea el post... pues 1 voto para los WYSIWYG, al menos al momento de mandar un posteo o articulo no?

------------------------
William Wong Garay
Gerente General de TIPeru COM
Webmaster de Negociando por Internet
Blog: Willy Blog Site

Soy un taba

Tienes razón Willy, mea culpa :) , disculpen por la equivocación. En todo caso, Apache rocks!

Alexis Bellido
Teletrabajo Hoy: Una comunidad para teletrabajadores

Revisar ejemplos de código antes de enviar post

El Newbie al realizar las prácticas de éste artículo, tendrá resultados no deseable, debido a que los ejemplos no están completos. Por ejemplo: Debías de haber escrito <VirtualHost *:80>, lo hiciste, pero no te diste cuenta en cambiar < y > por &lt; y &gt;.
Aquí dejo un enlace similar al tema para Newbies: Servidores Virtuales en Apache.

Disculpas mil

Saludos djjamespeter:
Gracias por la observación, y disculpa a ti y a la comunidad por tal imprevisto. Ya se corrigieron los errores.

------------------------
William Wong Garay
Gerente General de TIPeru COM
Webmaster de Negociando por Internet
Blog: Willy Blog Site

No me resultan los VH

hey que tal!

para empesar estoy utilizando appserv para mi localhost, trate de configuurar todo cual ud me indican en este manual fui en porimera instancia a C:/Windows/System32/Drivers/etc/hosts

para siganar la direccion ip de mi localhost a la direccion que deseo probra como VH.
al no funcionar segui el siguiente paso de buscar en la carpeta conf/httpd.conf en apache para configurar los VH, pero no se encontraban aqui tonces fui al tercer paso que es en la ubicacion conf/extra/httpd-vhosts.conf pues aqui si los encontre y configure todo tal como indicas en el manual.

reinicio apache pero y en mi browser indique la direccion que deseaba para mi VH pero no funciona, el resultado era enviarme a una paguna que tenia esa direccion o de plano no me vinculaba nada.

ya no se que hacer, no se que pueda estar fallando, les agradeceria enormente poder ayudarme, el motivo para mi de crear esto es para probar en mi localhost la instalacion de wordpress MU

No me resultan los VH

bueno envio este post nuevamente por que me parece que el primero no lo envie correfctamente. o mas bien no llego :(.

mira he hecho todo loq ue has comentado en esta guioa por desgracia mia no me funciona los VH que he establecido en apache.

modifique el archivos

C:\Windows\System32\Drivers\etc\hosts.msn

con la sigueinte info:

127.0.0.1 localhost
127.0.0.1 http://www.idealista.com
127.0.0.1 http://www.blogs.com
127.0.0.1 http://www.mysql.com

modifique el archivo

C:\AppServ\Apache2.2\conf\extra\httpd-vhosts.conf

copn la siguiente info:

DocumentRoot "C:\AppServ\www\wordpress"
ServerName www.idealista.com

DocumentRoot "C:\AppServ\www\blogs"
ServerName www.blogs.com

DocumentRoot "C:\AppServ\www\phpMyAdmin"
ServerName www.mysql.com

y luego de realizar estos pasos reinicie apache para luego llamar del navegador las direcciones que le asigne a mis VH pero no ha sucedido nada, que remedio existe para mi enfermedad.

Dato:

estoy ocupando como localhost el Appserv 2.5.7 que inlcuye
Apache 2.2.3 (Win32)
PHP 5.1.6
CGI 1.1
MySQL 5.0.24a (phpAdmin)

ademas tengo instalado

Zend Version: 2.1.0

bajo sistema operativo windows XP

si pueden ayudarme se los agradecere eternamete gx.

PROBLEMAS

tengo un problema...utilizo una ip dinamica en mi pc de hogar...para ello utilizo cdmon para redireccion...resulta que tenog registradas 4 paginas con dominio .com.ar

ramiroreboiro.com.ar
valeriasuarez.com.ar
glamstore.com.ar
tomassaravalli.com.ar

resulta que 2 de ellas estan totalmente finalizados los tramites de registro y otras 2 estaran finalizados en varios dias..

resulta que cuando edito mi archivo HOSTS de windows solo me funciona el sitio que tengo registrado totalmente en nic.ar y los otros dos donde no finalizo el tramite no funciona la direccion "localhost"

alguien puede decirme porque pasa esto??

esto edite en HOSTS de windows

#localhost
127.0.0.1 localhost
#pag ramiroreboiro
127.0.0.1 http://ramiroreboiro.com.ar/
#pag vale
127.0.0.1 http://valeriasuarez.com.ar/

http://ramiroreboiro.com.ar/ funciona...el otro no..

debo probar esto con apache corriendo o debo apagarlo??

igualmente de ambas maneras no funciona http://valeriasuarez.com.ar/

espero alguien pueda ayudarme..

muchas gracias

Ramiro

Saludos Ramiro. Sería bueno

Saludos Ramiro.
Sería bueno si nos colocas la configuración que estás usando para tus host virtuales. Otro consejo, no coloques en el archivo host nombres de dominio que ya estén trabajando en la Internet, esto puede causar conflictos. Otro detalle, no coloques el "http://", solo coloca nombres de dominio o subdominio en el archivo host.

William Wong Garay
Gerente General de TIPeru COM
Webmaster de
Negociando por Internet y KarpaPeru
Blog: http://willy.tiperu.com

ips

hola como puedo saber el ip y dns un hosting gratis
eternal.hostinggratisargentina.com/

Usa whois

La mayoría de registradores de dominios te permiten ejecutar llamadas a whois desde sus sitios web o si corres Linux solo usa "whois dominio" desde la línea de comandos.

Allí podrás ver los servidores DNS que manejan el dominio. Para conocer el IP basta con un ping.

Saludos.

Alexis Bellido
Drupal en 15 gotas. Aprende a usar Drupal en 48 horas.

Eternal, es recomendable que

Eternal, es recomendable que si hay una sola pregunta que hacer entonces solamente envies un mensaje estableciendo tu pregunta.

Como te habras dado cuenta, en ambos lugares te han respondido pero acabas de desvirtuar este tema.

Procura no hacer lo mismo en futuras ocasiones.

Saludos.

Problemas con el servidor FOXSERV Bajo Windows

Link de descarga Foxser3.1 (Servidor de PHP, APACHE,MySql)

http://sourceforge.net/project/downloading.php?group_id=24751&use_mirror...

una ves instalado renombrar la carpeta origen FOXSERV por "EasyServ".

¿Porque? En realidad el servidor se llama EasyServ.. Pero no se porque lo renombraron como FOXSERV

*-*-*-*-*

Voy a mencionar un par de cosas y antes que nada tube leyendo montones de foros y no entiendo porque no anda lo que uds. postean.

note tambien unos detalles... como en el momento de declarar un Vhost algunos ponian "c:\www" (directorio origen) yo por lo que tenia entendido cuando instalar el server no es necesario poner el c:\

porque queda ya levantada la carpeta (en el servidor) Osea \www = a " \ " nose si me entienden....

ejemplos posteados aca...

#localhost

DocumentRoot "C:/www"
ServerName localhost:80

#TIPeru COM SAC

DocumentRoot "C:/wwww/tiperu"
ServerName www.tiperu.com

*-*-*-*-*-*-
ejemplo dentro del archivo del httpd.conf

ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common

*-*-*-*-*-*-*
cabe señalar que cada ves que entro a una pagina siempre veo variables osa... en algunos foros recomiendan poner asi (siendo el * un numero de ip) y el 80 el puerto.... luego sino tienen el asi.. poniendo el nºde dns o el dominio en ves del numero... pero Lei qe eso era para otras cosas... Igual probe de todo y no funciona lo de Virtual Host... y me toy matando leyendo material..

*-*-*-*-*-*-*-*

este link me despejo bocha de dudas...

http://httpd.apache.org/docs/2.0/es/vhosts/

Pero cabe aclarar que no me funciona mi server =( ASI que si me da una mano alguien... mande un mail y intercambiamos conocimiento... xD jaajaj o mas dudas ajajja ^^

*-*-*-

preguntas puntuales....

yo tengo 2 dominios registrados...

www.dominio1.com.ar
www.dominio2.com.ar

tengo 1 dns dinamico de no ip y un dns de zoneedit donde estan registrados los dominios. Ya que yo no tengo ip fija.

Problema....

Trate de hacer los virtualhost como estan en los ejemplos... y siempre me derivan al localhost..

Ej..
pongo localhost sale pantalla de directorios

pongo dominio1.com.ar > me muestra la pantalla del localhost..
asigno directorio al dominio1.com.ar y me sigue derivando al localhost.. :$ no entiendo porque

bueno si ahy alguien qe sepa grax por la ayuda.. espero que estas dudas qe tengo le sirvan a otras personas.

atte.ORION

no funciona

incorpore los parametros efectivamente como dices en el post y no funciona.
incorpore en el archivo de hosts de windows asi:
# inmobiliariaprogsaperu
127.0.0.1 http://www.inmobiliariaprogsaperu.com/

en httpd-vhosts de apache asi:
#inmobiliaria

DocumentRoot "C:/wwww/index.html"
ServerName www.inmobiliariaprogsaperu.com

index.html es el archivo que está en la carpeta www en c:
el apache conecta en localhost sin problemas pero no carga el virtual host que hice. Di desconectar y conectar y nada.
sin embargo desconecto apache y activo el sitio determinado por windows y carga normal el archivo obviamente con el localhost por delante.
Podría decirme en donde está la falla?
Agradecería mucho

Ayuda a las victimas del terremoto