Lo que sigue es una breve nota técnica que me sirva (y a otros) como recordatorio para la próxima vez , dado que hoy he perdido un rato con la configuración de un host virtual en Ubuntu (en Fedora lo tenía todo ya hecho, y sólo era copiar y pegar 🙂
En /etc/apache2 disponemos de varios subdirectorios, dos de ellos importantes para nuestra tarea. El primero sites-available y el segundo sites-enabled.
Los ficheros de configuración de los hostings virtuales se configuran en sites-available. El segundo subdirectorio sólo contiene enlaces a aquellos virtulhost que queremos activar.
Queremos crear un virtualhost de nombre hackit. Es decir, cuando ponga en mi navegador http://hackit me debe de llevar a la página principal de ese host. Si pongo http://localhost me llevará al virtualhost por defecto (distinto del de hackit).
Lo primero, creo una nueva entrada en /etc/hosts (mantengo lo que había y añado lo siguiente):
127.0.0.1 hackit
Copio los archivos del nuevo site en /var/www/hackit.
Comienza el procedimiento de configuración del nuevo virtualhost en Apache2:
$ cd /etc/apache2/sites-available
Edito las dos primeras líneas del fichero default para que queden así:
NameVirtualHost *:80
<VirtualHost *:80>
$ cp default hackit
Edito hackit para que las primeras líneas queden así:
<VirtualHost *:80>
ServerAdmin webmaster@hackit
ServerName hackit
DocumentRoot /var/www/hackit
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/hackit>
$ cd /etc/apache2
El siguiente comando, a2ensite (available2enablesite) crea un enlace en sites-enable al site que le indiquemos (es decir, activa el virtualhost que acabamos de crear)
# a2ensite hackit
Comprobamos:
$ ls -al sites-enabled/
Recargamos apache2:
#/etc/init.d/apache2 force-reload
Listo!
Un detalle posterior. La aplicación que he instalado usa latin1 como charset y Apache está configurado para servir UTF-8 por defecto.
He cambiado el fichero /etc/apache2/sites-available/hackit para que tras ServerName ponga:
AddDefaultCharset latin1
Reload del Apache2 y funciona 🙂
Muchas gracias, excelente tip.
Saludos.
«Copio los archivos del nuevo site en /var/ww/hackit.»
Creo que falta una «w»… que bien tener este howto para no tener que escribir una nota de esas que se terminan perdiendo.
>> Copio los archivos del nuevo site en
>> /var/ww/hackit.”
> Creo que falta una “w”…
Arreglado!
> que bien tener este howto para no tener
> que escribir una nota de esas que
> se terminan perdiendo.
Pues sí 🙂 Ya es la 3ª vez que vuelvo a este post para recordar cómo se hacía (y eso que lo escribí yo!)
Felicitaciones, excelente tutorial… No sbes cuanto busqué esta explicación. Ahora jugaré un rato en mis servidores de pruebas. 🙂
Gracias!
Buenas, segui el tutorial y realmente es excelente, funciono perfecto solo que unicamente en local…
Ahora lo que quiero es poder terminar de montar mi intranet, hasta ahora funciona perfectamente pero usando la direccion ip de la maquina y no el host virtual. Mi pregunta es como hago para conectar a una de mis aplicaciones desde una maquina conectada a mi red local pero no usando la direccion IP sino el host que cree que le di como nombre «prueba», ya he intentado colocando http://prueba, en mi maquina funciona asi pero no en las de la red.
Takashi: para que funcione, dispones de 2 métodos. El mejor y que siempre funcionará independientemente del nº de máquinas que tengas: montar un servidor DNS. Todas las máquinas resolverán el nombre prueba por la dirección IP adecuada siempre que el DNS esté bien configurado. Tal vez configurar un DNS sea demasiado para tu caso, si por ejemplo, en tu red sólo tienes 3 o 4 máquinas. En ese caso, la segunda posibilidad que también funcionará será que en cada una de esas 4 máquinas, edites el fichero : /etc/hosts y pongas una línea como:
192.168.1.10 prueba
(asumiendo que prueba está en la máquina con esa IP)
Es decir, estamos sustituyendo el trabajo de un servidor DNS por un fichero . Si los clientes son máquinas Windows, has de modificar el fichero c:windowssystem32driversetchosts
Hola, muy buen tip, andaba buscando precisamente como hacer esto.
Una pequeña correción:
a2ensite: apache2 enable site
Saludos!
Estupendo trabajo!
Me ha sido de gran ayuda
Excelentes tips, me funcionaron de maravilla para direccionar el moodle, lo que necesito como Takashi es lograr montar un DNS, para que desde otras máquinas puedan ver esta página, es más lo que intento es configurar todo en un flash (espero lograrlo) es posible que pueda configurar mis virtualhost, un servidor DNS y que funcione en un flash como si fuera un CD-Live?
muy buena informacion todo!!
tema :Hosts Virtuales en Apache 2 (Ubuntu)
tengo el siguinte inconveniente
en en virtual hosting declarado en koha-httpd.conf cambie el nombre luisdk por la IP de la PC.
porque no puede funcionar con el nombre luisdk y si con la IP ???????????’
GRACIAS
y esto solamente funciona en modo local?
que tengo que hacer para que funcione en mi IP real y qu esalga a internet?
de antemano muchas gracias
Tengo un problema, cuando hago agrego
NameVirtualHost *:80
en el default y dps hago el restart me tira esto
[Wed Nov 19 20:51:05 2008] [warn] NameVirtualHost *:80 has no VirtualHosts
quizas es algo re boludo, pero soy un hiper novato! asi que perdon si es una tonteria.
Hola agradesco de ante mano a todas las personas, mi problema es el siguiente.
soy nuevo y estoy intentando instalar mi Wifislax – Vmware y ya llege a registrarme y todo pero para dar arranque me sale esta nota :
Esta máquina virtual está configurado para funcionar con 2 CPUs, pero el host tiene sólo 1 CPU (s). La máquina virtual no puede ser encendido.
como dije soy nuevo y no se como solucionarlo aver si e pueden echar na mano.
Gracias
mi correo es jorgecarlosz@yahoo.es
Tengo un problema y ya me estoy desesperando… No puedo cambiar la dirección ip de mi server para que me lo de por su nombre de dominio, es decir mientras introdusca en el navegador «http://xxx.xxx.xxx.xxx» si me sale la web pero si le porngo el nombre «http://misitio.net» no me muestra nada quiero aclararles que trato de montar una intranet, lo e echo con windows y es muy facil pero con linux ya me estoy desesperando. No se que es lo que tengo que hacer tenemos otro server con win 2003 no se si agragarlo a ese dominio o que onda ya e echo todo lo que esta en los blog y no me funciona al hacer lo que dices ahi arriba me dice que no ha sitios virtuales para apache…. Que hago
Después de no ser capaz de hacerlo con otros tutoriales éste me ha servido. Muchas gracias.
hola bueno yo he podido configurar los host virtuales con dirección pública y funcionan bien al acceder a los diferentes servidores de la intranet pero tengo el problema que quiero mostrar un archivo swf y no me muestra nada ya modifique el archivo mime.type. Alguien me puede ayudar?
Muy buen aporte, la verdad me he ahorrado unos minutos, quizá más en la configuración de mi Apache. Muchas gracias!!!
Hola me paso lo mismo q a daniel
root@sistemas9:/etc/apache2# /etc/init.d/apache2 force-reload
* Reloading web server config apache2 apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Apr 15 12:41:02 2010] [warn] NameVirtualHost *:80 has no VirtualHosts
[Thu Apr 15 12:41:02 2010] [warn] NameVirtualHost *:80 has no VirtualHosts
que sera O.o
cuado force reload pasa esto:
alguien sabe q hacer?
root@sistemas9:/etc/apache2# /etc/init.d/apache2 force-reload
* Reloading web server config apache2 apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Apr 15 12:41:02 2010] [warn] NameVirtualHost *:80 has no VirtualHosts
[Thu Apr 15 12:41:02 2010] [warn] NameVirtualHost *:80 has no VirtualHosts
Son warnings, avisos, y no errores.
En el archivo de configuración tendrás:
ServerName XXXXX
donde XXXX es nombre que quieras darle al virtual host. Ese nombre debe estar en /etc/hosts asociado a la IP 127.0.0.1
gracias admin por la informacion. pero sigo con problema.
en el archivo host tengo:
127.0.0.1 localhost
127.0.0.1 sitio1
si entro a local host desde url me pçmuestra la pagina index q esta pero si entro a sitio1, deveria mostrarme la pagina index PERO la q esta dentro de la carpeta var/www/sitio1
y me muestra la misma index q si pusiera lolcahost q es /var/www/
Para luis:
Debes indicar la ruta en las siguientes lineas:
DocumentRoot /var/www/sitio1
spero que te sirva…
saludos
no salio la segunda linea…
OJO va entre los simbolos menor que y mayor que «»
Directory /var/www/sitio1
Muchas gracias. Un post genial
hola q tal es muy bueno el tutorial ,,, solo q tengo un pqueñisimo detalle todo lo hago perfefctamente y cada uno de los paso y voy bien ,, pero al llegar al paso de recargar apache2 me aparece en terminal esto:
Syntax error on line 1 of /etc/apache2/sites-enabled/000-default:
Invalid command ‘NameVirtualHost*:80’, perhaps misspelled or defined by a module not included in the server configuration
…fail!
espero alguien me pueda ayudar!!!! xfas!!
@gus: puedes borrar la línea
NameVirtualHost *:80
y todo debería de seguir funcionando OK.
muchisimas gracias!!!
lo q pasa esq soy un poco nuevo en esto y espero aprender muchisimo mas y esta manera la vdd es muy agradable
espero seguir en contacto!!
cuidate q estes bien y gRaX por contestaR!!! : )
q tal amigo amigo admin!!!!
Oie ps molestandote ,, no se si me pudieras ayudar??,, ps comenzare a trabajar en LAMP con IDE eclipse helios y necesito debbuguear con xdebug pero no se como conectar el xdebug con el eclipse( o dar de alta xdebug en eclipse ), el xdebug ya esta instalado como herramienta en mi servidor virtual q he creado con tu tutorial!!!
EspeRo de vDD me puedas ayudar!! xfavoR xD
SaludoS a TodoS
Hola, segui el procedimiento sin embargo no accedo por: http://hackit, solo pude acceder por http://localhost/hackit, quisiera me ayude alguien porfavor…GRACIAS!!
Gracias por el post, tras mirar en otros 7 u 8, este es el unico que siguiendo los pasos fucniona!
Gracias me fue de mucha utilidad perdi media mañana tratando de echarlo andar… todo funciona perfectamente
bueno he aqui un problema en el tutorial espero corregir bien en las lines donde se edita el hackit
ServerAdmin webmaster@hackit
ServerName hackit
DocumentRoot /var/www/hackit
Options FollowSymLinks
AllowOverride None
deberia quedar en la ruta /var/www/hackit/ con el «/» al final haci entrara a la carpeta entonces quedara asi
ServerAdmin webmaster@hackit
ServerName hackit
DocumentRoot /var/www/hackit/
Options FollowSymLinks
AllowOverride None
[warn] NameVirtualHost XXX.XXX.XXX.XXX:80 has no VirtualHosts
[warn] NameVirtualHost XXX.XXX.XXX.XXX:80 has no VirtualHosts
[warn] NameVirtualHost XXX.XXX.XXX.XXX:80 has no VirtualHosts
No hay manera de arreglar este «warning»…
Muy groso el post. La verdad que me sirvió bastante. Y pude sacar andando el servidor con los virtualhost que necesitaba. Se agradece.
Soy super novata y estoy intentando hacer esto que ya se lo vi hacer a un colega.
Descargué esto:
sudo apt-get install php5 libapache2-mod-php5 php5-mysql mysql-server phpmyadmin
Bajé el drupal y lo moví al directorio /var/www
pero como no lo tenía, lo cree (el www)
Modifiqué hosts con la ip y el nombre
Cuando fui a mover la página a sites-available vi que no tenía este directorio en etc/apache2 y lo cree y lo moví allí
Cuando he ido a habilitar la página con a2ensite me ha dicho
a2ensite: no se encontró la orden
He visto que tampoco tenía sites-enabled, así que lo he creado (todo dentro de etc/apache2). Sigue sin encontrar la orden y no sé si desde el principio tendría que haber tenido estos dos directorios y es que he hecho algo mal desde el principio o falta algo para que entienda esta orden.
Como es casi la primera vez que escribo en la consola estoy bastante perdida, jeje, y supongo que habré hecho un lío todo, pero a ver si alguien se anima a entenderlo…
Gracias!
Marta, no has instalado el apache. Revisa la línea verás que falta.
Compañeros!, yo he configurado el virtual host tal cual aparece en el tutorial y cuando intento ir al sitio en el navegador me envia este mensaje:
Mientras se intentaba traer el URL: http://localser/
Ha ocurrido el siguiente problema:
Incapaz de determinar la dirección IP a partir del nombre de la máquina: localser
El programa dnsserver ha devuelto el siguiente mensaje:
Name Error: The domain name does not exist.
Esto significa que:
El caché no ha sido capaz de resolver el nombre de máquina
presente en la URL.
Compruebe que la dirección sea correcta.
Si alguie me puede ayudar?, es que ya no se que hacer!, pues se supone que todo esta correctamente configurado..
¿Qué te responde este comando?:
$ ping localser
Yo diría que en tu fichero /etc/hosts falta la línea que hace referencia a localser…
Un post genial. Muchas gracias.