Hosts Virtuales en Apache 2 (Ubuntu)

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!

44 comentarios sobre “Hosts Virtuales en Apache 2 (Ubuntu)”

  1. 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 🙂

  2. “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.

  3. >> 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!)

  4. 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.

  5. 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

  6. 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?

  7. 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

  8. 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.

  9. 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

  10. 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

  11. 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?

  12. 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

  13. 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

  14. 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

  15. 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/

  16. 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!!

  17. 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!!! : )

  18. 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

  19. 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

  20. [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”…

  21. 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!

  22. 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..

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.