Hay 2 maneras distintas, depende de la distribución
VirtualHosts en distribuciones para Debian, Ubuntu, etc...
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!
VirtualHosts en distribuciones para Fedora, Red Hat, etc...
Supongamos que queremos instalar la web de Bulma en un Linux, donde el Apache ya está sirviendo un website. Es decir, en la URL http://www.midominio.com tenemos unas páginas, que queremos mantener, pero también queremos instalar Bulma. La solución más evidente pasa por instalarla en un directorio de nuestra web, pero veremos que con muy poco esfuerzo podemos tener la web de Bulma en http://bulma.midominio.com. Para empezar, daré por sentado que has leído el artículo de Instalacion de bulmita en Red Hat 6.2 (Actualización) de DaniRC y que has seguido sus instrucciones. La única diferencia es que instalaremos la web en '/home/httpd/bulma' (Esto va a gusto del consumidor ;-)
Ahora editaremos el fichero de configuración del Apache con nuestro editor de textos favorito:
# vi /etc/httpd/conf/httpd.conf
Nos dirigiremos hacia el final de dicho fichero y añadiremos las siguientes lineas:
NameVirtualHost 192.168.0.1
<VirtualHost 192.168.0.1>
ServerAdmin webmaster@midominio.com
DocumentRoot /home/httpd/html
ServerName www.midominio.com
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
<VirtualHost 192.168.0.1>
ServerAdmin webmaster@midominio.com
DocumentRoot /home/httpd/bulma
ServerName bulma.midominio.com
ErrorLog logs/bulma-error_log
CustomLog logs/bulma-access_log common
</VirtualHost>
Con la directiva NameVirtualHost dirección IP, le estamos diciendo al Apache que activamos los Hosts virtuales para esa dirección IP, y los siguientes grupos <VirtualHost 192.168.0.1>...</VirtualHost> definen los hosts virtuales de nuestro servidor. En cada uno de estos bloques, le indicamos al Apache el DocumentRoot del host especificado en ServerName: si miramos el segundo bloque veremos que le estamos diciendo al Apache que cuando reciba una petición dirigida bulma.midominio.com, obtenga los archivos de '/home/httpd/bulma', tal y como queríamos.
Supongo que a estas alturas te estarás preguntando como se lo hace el Apache para saber si una petición va dirigida a uno u otro host virtual. La respuesta esta en las cabeceras del HTTP/1.1: cuando un navegador envía una petición al servidor usando el protocolo HTTP/1.1 envía una cabecera del tipo host: nombre_de_un_host con la que el Apache puede discriminar las peticiones de los distintos hosts virtuales. El problema viene cuando el navegador es muy antiguo y utiliza el protocolo HTTP/1.0, en este caso el Apache servirá siempre la página del host por defecto.
Ahora ya hemos configurado el servidor web para que responda adecuadamente a las peticiones que vayan dirigidas a un host virtual pero aún nos falta otra cosa: debemos configurar nuestro servidor DNS para que las peticiones dirigidas a los hosts virtuales lleguen al servidor. En este caso, nos basaremos en el artículo Como configurar un servidor de DNS (revisado), que también escribió DaniRC. Lo que tenemos que hacer es añadir la siguiente linea en el fichero de configuracion para la zona de vuestro dominio, que en el ejemplo de DaniRC es el fichero 'arch/ibiza-programacion.com':
bulma CMANE www
Así le estamos diciendo al servidor de DNS que el nombre bulma es un alias de www. De esta manera los clientes ya podrán obtener la dirección IP de bulma.midominio.com. En vuestro caso, debereis añadir el alias en el fichero de configuracion para la zona de vuestro dominio.
Y para aquellos que no tengais servidor de DNS, editais el '/etc/hosts' y en la linea de vuestro ordenador, añadis el alias bulma.midominio.com.
192.168.0.32 www.midominio.com bulma.midominio.com
Para finalizar, reiniciaremos los servidores named y apache para que la nueva configuración tenga efecto,
No hay comentarios:
Publicar un comentario