Busindre » Blog Archive » Virtual host, en Apache 2.0

Virtual host, en Apache 2.0

April 3rd, 2006 by Busindre

Los host virtuales (VirtualHost), son dominios con una sintaxis: http://virtualhost.host.com. Si vuestro servidor es www.host.com, podréis crear el host virtual antes mencionado simplemente indicándole a Apache que, en el caso de que sea convocado el virtualhost y no el host directamente, vaya a leer los archivos en otro directorio que no sea DocumentRoot (/var/www/), y consecuentemente los mande al navegador de quien lo haya pedido. De esta manera se puede con un solo Apache tener "varios servers virtuales". Esto en Apache2 es muy fácil de realizar, como en sus anteriores versiones, pero no hay mucha documentación al respecto para novatos.

Veremos un ejemplo para tener dominios dyndns por cada usuario (virtual host), lo voy a hacer de manera que cada usuario tenga su directorio en su home, pero se puede hacer con cualquier directorio como es lógico:

Creamos el directorio en el home del usuario (invitado)

$ mkdir /home/invitado/public_html/

Realizamos el enlace para que este operativo el host virtual

$ ln -s /etc/apache2/sites-available/invitado /etc/apache2/sites-enabled/invitado

Creamos logs personalizados para esa cuenta:

# mkdir /var/log/apache2/invitado/error.log

Editamos: /etc/apache2/sites-available/invitado

NameVirtualHost *
<virtualhost *>
ServerAdmin invitado@gmail.com
ServerName busindre.is-a-geek.com
DocumentRoot /home/invitado/public_html/
Options Indexes FollowSymLinks MultiViews
ErrorLog /var/log/apache2/invitado/error.log

<Directory /home/invitado/public_html/>
Options ExecCGI FollowSymLinks
AddHandler cgi-script .cgi
AllowOverride all
Allow from all
Order allow,deny
</Directory>

</virtualhost>

NOTA: busindre.is-a-geek.com es el dynds asociado a la cuenta invitado
Si tenemos más dominios pues añadimos mas ficheros como invitado con su correspondiente enlace (/etc/apache2/sites-available/invitado).Recordar reiniciar el server /etc/init.d/apache2 restart

Si vas a estar en una red local, tengamos dominio comprado o simplemente en /etc/hosts nos hemos creado uno para nuestras pruebas o actividades de la red LAN, debemos ponerlo virtualhost.host.com. Siendo host.com nuestro dominio, como el anterior, pero con "ServerName" como www.virtual.host.com:

www.host.com ---> La web default, no virtual
www.virtual_1.host.com --> La web del virtual host 1
www.virtual_2.host.com --> La web del virtual host 1

Para verlo desde local debemos editar /etc/hosts.
127.0.0.1 localhost
127.0.0.1 www.busindre.com
127.0.0.1 www.invitado.busindre.com

Estos nombres deben estar en la configuración del virtual host como ServerName. Luego creamos los enlaces de la misma manera que antes y reiniciamos el server.

Posted in Internet |

20 Responses

  1. Victor Says:

    Bien bien, me sacó de un apuro. Gracias ;)

  2. Manel Says:

    Hola
    Bueno he siguido los pasos, tan solo que he seguido dejando el directorio dentro de var/www/ y no tengo el public_html que se pone en el tutorial.
    Y e da el siguiente error cuando reinicio el server:

    root@server:/etc/apache2/sites-available# /etc/init.d/apache2 restart
    * Forcing reload of apache 2.0 web server... apache2: Could not determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
    [Tue Sep 19 00:59:43 2006] [warn] NameVirtualHost *:0 has no VirtualHosts
    [Tue Sep 19 00:59:43 2006] [warn] NameVirtualHost *:0 has no VirtualHosts

    Porque no sale bien? donde me equivoco? ademas pongo el dominio fuera de la lan y me da el que me daba antes de hacerlo virtual, o sea que lo ve como si no fuera virtual

    Saludos
    Gracias
    Manel

  3. Busindre Says:

    Intenta hacerlo como dice el tutorial (Atentamente) y luego nos dices.

  4. Manel Says:

    gracias por la contestacion tan rapida.
    ya he conseguido que un dominio se vea puse esto en el archivo :
    root@server:/etc/apache2/sites-available# cat default
    NameVirtualHost *

    ServerAdmin susero@gmail.com
    ServerName www.virtual.host.com
    DocumentRoot /home/pruebas/public_html/
    Options Indexes FollowSymLinks MultiViews
    ErrorLog /var/log/apache2/mgandreu/error.log

    Options ExecCGI FollowSymLinks
    AddHandler cgi-script .cgi
    AllowOverride all
    Allow from all
    Order allow,deny

    Pero el segundo dominio que esta en el mismo sitio, no hay forma de verlo, uso la web http://www.the-cloak.com fuera de mi red.

    Cuando reinicio el apache2 me da este mensaje:

    root@server:/etc/apache2/sites-available# /etc/init.d/apache2 restart
    * Forcing reload of apache 2.0 web server... apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
    [Wed Sep 20 02:01:18 2006] [warn] NameVirtualHost *:0 has no VirtualHosts
    [Wed Sep 20 02:01:18 2006] [warn] NameVirtualHost *:0 has no VirtualHosts
    [ ok ]
    root@server:/etc/apache2/sites-available#

    No se lo que hago mal, pues que se vea uno y el otro no, no lo entiendo, me podiais ayudar?
    Saludos
    Manel

  5. Busindre Says:

    Mira, si haces uno bien, algo raro debes hacer con el otro, o no se si intentas hacer algo que no puedes, porque eso de

    -"Pero el segundo dominio que esta en el mismo sitio, no hay forma de verlo, uso la web http://www.the-cloak.com fuera de mi red".

    No lo entiendo muy bien. Porque si esta igual debe funcionar (eso es de cajon). Miralo atentamente porque algo debes tener mal, el que? no lo sabemos, pero si miras atentamente encontraras el error.

    Esos errores pueden ser por mil historias. Fijate en tus preguntas porque estas preguntando otra vez por el mismo error que resolviste anteriormente y no sabemos si lo que quieres hacer ahora es lo mismo o no. Es muy dificil enterarnos de que haces mal. suerte y miralo calmadamente, probando despacito y con buena letra. Si aun asi no te sale, te recomiendo que preguntes en algun foro dando una explicacion detallada de todo lo que haces,como lo estas haciendo, que quieres hacer,... aqui todo eso no tiene cabida, solo es para cosas puntuales. Pero supongo que en tu próximo comentario ya la habras apañado. enga lo dicho, mucha suerte.

    Un saludo

  6. dajul Says:

    Prueba a añadir el puerto:

    NameVirtualHost *:80

  7. lafk Says:

    No entendi nada podrian explicarmelo con un poco mas de detalle por fa no sean gachos. :oops: :!: :?:

  8. Busindre Says:

    jaja el post es el que es, si tienes duda mira otros manuales y foros donde lo explican mas detenidamente y si aun asi no te queda claro, pues pregunta en algun foro. Lo siento :| . Un saludo

  9. parmas Says:

    Hola. Yo tengo un problema con un servidor apache que estoy montando como práctica. Necesito tener 2 hosts virtuales. Estoy haciendo todo esto en fedora.

    Primero edité el archivo de httpd.conf donde agregué los dos host virtuales y modifiqué el puerto por el cual estaremos escuchando, poniendolo como el 8080. Después cree las carpetas referenciadas por DocummentRoot que están en www/httpd/docs/paloma y /www/httpd/docs/secundario

    Finalmente reinicié el servicio en /init.d/ con httpd restart

    A la hora que quiero checar que esté funcionando, abro un browser y pongo como direccion http://localhost:8080/ y me sale un mensaje de "unable to connect", la verdad estoy en el hoyo y no sé que es lo que estoy haciendo mal. Espero que alguien pueda ayudarme, lo agraecería infinitamente

  10. Busindre Says:

    Son vuestras configuraciones que al cambiarlas con respecto al post algo haceis mal. Mira si tienes un firewall o mira en que te confundiste. Con esa info que nos das poco se puede ayudar. Lo siento

  11. SirJn Says:

    Necesito Ayuda Para Hacer Lo Siguiente:

    Descripción general:

    Suponer que vas a iniciar una empresa que proporcione servicios de hosting y alojamiento de páginas web a otras empresas y organizaciones. Para lo cual cuentas con un solo servidor, en el cual tendrás que configurar todos los servicios de red necesarios para poder ofrecer tus servicios, usando un sistema operativo Linux.

    Los servicios de red que se configurarán son los siguientes:

    Servicios LAMP (Linux-Apache-MySQL-PHP)
    Servidor de correo electrónico, usando Sendmail ó Postfix u otro MTA; de igual manera se configurará los protocolos de acceso a correo POP3 o IMAP.
    Servicio de correo electrónico vía cliente de correo como Outlook Express.
    Servicio de correo electrónico vía Web, configurando Squirrelmail.
    Servicio de transferencia de archivos FTP.
    Servicio SAMBA para compartir archivos y directorios entre Linux y Windows.
    Servicios CUPS como servidor de impresión en Linux.
    Servicios de acceso remoto TELNET y SSH.
    Servicio DHCP.
    Servidor Proxy Squid.
    Considerar 3 dominios, 1 principal y 2 dominios virtuales, con sus servicios correspondientes como DNS, servidor Web, servicio LAMP, servidor de correo y servidor FTP por cada uno de los dominios.

  12. Busindre Says:

    Buenas, Lo que tu dices, cuando contratas un server por norma te ofrecen un panel de control como puede ser plesk, directadmin y demás (De pago). Con ese panel das de alta ususarios, limite de transferencia, creacion de correos, espacio web, etc...

    Lo que tu pones ahi de telnet, cups y demas,.. si es un server que ofreces hosting,... te sobran cups, telnet,.. y lo de outlook con que tengas el pop3 puesto ya te vale,.. eso tambien se activa en el centro de control que contrates,...

    Resumiendo: O te lo montas tu todo y configuras manualmente todo o pones un Panel de control y lo administras (Mas rapido, comodo,... pero de pago), hay alguno gpl pero por ahora no llega a la calidad de plesk por ejemplo.

    NOTA: No todas las distros son compatibles con los paneles de control.

    Espero haberte orientado un poco :)

  13. mm Says:

    Más de uno quiere sacar tajada de la buena fe por aquí :roll: (ejem montar empresa, linux para temas internos y windows para los clientes...)

  14. Pepe Jimenez Says:

    Saludos a todos ¡¡

    Tengo una gran duda, a ver si me podeis ayudar, quiero crear un servidor apache, q tenga instalado php y mysql, y conectarle una maquina como cliente, de manera q si yo tecleo en el internet explorer

    http://localhost/prueba.php

    tanto del servidor como del cliente, me muestre el resultado el resultado del archivo prueba.php.

    Se puede hacer esto??

    Nota: Todo es en una red local, sin tener acceso a internet, es para hacer mis pininos. Actualmente tengo una maquina con apache, mysql y php.

    Gracias¡¡

  15. Busindre Says:

    Hombre,.. el problema es que localhost es el nombre que se le da a la dirección ip local, es decir tu maquina en si. Pero puedes cambiarlo fácilmente en el archivo /etc/hosts, es mas con ese archivo puedes aparentar tener tu dominio (Solo para ese ordenador claro esta)

    Ejemplo:

    192.168.1.34 localhost
    127.0.0.1 www.busindre.com
    127.0.0.1 www.mascachapas.com
    127.0.0.1 miputopc
    192.168.1.38 tuxpc

    En el primero estoy diciéndole que localhost es otra maquina, tu por defecto lo debes tener en 127.0.0.1 (Tu maquina). Los demás es el ejemplo de dominio ficticio.

    Pues eso, saludos

  16. Peps Says:

    Muchas gracias Busindre ¡¡

    Voy a intentarlo, ya q tenga tiempo, ya q ahorita llega la family de lejos y hay q atenderlos, pero muchas gracias¡¡, la pregunta q te hice fue x q estoy haciendo una pagina, pero quiero dividirla en varias partes, en un servidor quiero colocar mi base de datos y a lo mejor uno q otro archivo php, pero en mi 2o servidor quiero colocar mis funciones y procedimientos, y en un 3er servidor quiero colocar imagenes.

    Hay te va otra pregunta maestro, como le hago para hacer un tipo link,o un include q me muestre de un servidor ya sea una imagen o procedimientos o funciones de mis servidores( 2o y 3o), y si es seguro??, es por eso q te hice la pregunta de armar una red local, para poder trabajar con archivos remotos.

    Gracias ¡¡

  17. Busindre Says:

    Pues eso puedes hacerlo de varias maneras, ponerlas en red sería necesario ya sea por ssh, ntsf, samba,.. Pero realmente yo pondría las funciones en la misma máquina que tiene instalado el php, es más rápido, cómodo y seguro.

    Si sigues con tu idea lo mejor es meter las funciones en carpetas y compartirlas como prefieras montandolas en local... Pero ya te digo, mejor que no. En re pon la base de datos si quieres pero no código php.

    Saludos

  18. Mauricio Says:

    Me funcionó...gracias.

  19. NIPHOE Says:

    No administro servidores, llegué aqui porque mi conexión de Personal al enviar un MMS me da el siguiente error "Could not connect to proxy (unable to locate host)", quisiera saber si es un error del servidor o me está indicando que yo no estoy llegando por un firewall.
    Slds!

  20. Busindre Says:

    Esto no tiene mucho que ver con el artículo, pero simplemente te dice que no conecta con el servidor. Puede ser por los parámetros de configuración, que no estén los correctos o un firewall que no te deje conectar. Como mensaje de error no identifica la causa, pero posiblemente sea tema de parámetros de configuración.

    Saludos

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.