Nota: Las siguientes indicaciones fueron probadas pro mi en Linux Crunchbang 11 (32-bit) alías Waldorf.
Si tu deseas tener más de un dominio en un solo servidor Web, es muy probable que necesites hacer uso de Virtual Hosts para ello. Virtual Hosts, te da la posibilidad de tener más de un sitio Web (o dominio) en un solo servidor. En este artículo te explicaremos como hacerlo.
Para este articulo crearemos dos dominios: dominio1.com y dominio2.com
Creando el Layout
Si usas Debian o Crunchbang, vete a /var/www, y create el sigiuente conjunto de carpetas:
mkdir -p dominio2.com/{public,private,log,cgi-bin,backup}
Archivo para Probar los Dominios
Para probar que los dos dominios trabajan, crearemos un archivo sencillo en HTML llamado index.html, el cual contendra dentro de el, lo siguiente:
Nota: Recuerde crear estos archivos en la ruta dominio#.com/public/index.html y reemplazar el símbolo # por 1 y 2 para cada dominio respectivamente.
Ya hecho esto, tenemos la estructura para crear los Virtual Hosts.
Configurando los Permisos
Con el fin de que el servidor Apache pueda servir tus dominios, este deberá tener permisos de lectura para varios archivos que componen tus sitios. Para asegurarnos que tenemos los permisos de la manera correcta, debemos ejecutar los siguientes comandos para ambos dominios:
Este comando establece que todo en su directorio dominio#.com debe ser legible y accesible por todos los usuarios del sistema.
Si agrega más directorios de dominios virtuales adicionales posteriormente, ejecute el comando de nuevo para asegurarse de que los nuevos directorios son accesibles.
NameVirtualHost
Para cada interfaz y puerto, Apache está configurado para escuchar una directiva NameVirtualHost. Algo a tener en cuenta es que sólo se puede definir de una vez por puerto.
En el diseño de configuración de Apache hay una directiva NameVirtualHost por defecto que se encuentra en el archivo "ports.conf".
Vamos a echar otro vistazo a los contenidos de "ports.conf":
La salida del comando anterior debería ser:
El ajuste predeterminado (por defecto) del NameVirtualHost satisface nuestras necesidades presentes. Apache aplicará la lógica de virtual host basada en nombres y los valores de peticiones HTTP realizadas en cualquier interfaz disponible (*) en el puerto 80.
Personalizando los Virtual Host
Para cada sitio Web, debemos crear un archivo conocido como vhost file. Estos son creados en la siguiente ruta: /etc/apache2/sites-available. Un ejemplo para el sitio o dominio1, sería:
Ahora como modelo general el vhost file debe contener lo siguiente (los valores pueden cambiar en base a lo que tu sitio Web debe contener):
Activando el Sitio
Ya tenemos el sitio disponible y debemos activarlo con el siguiente comando:
To activate the new configuration, you need to run:
service apache2 reload
Probando Nuestros Sitios
Para probar el dominio sin necesidad de crear una zona DNS y el registro (s) en algún servidor de nombres de Internet (s), he modificado el archivo "/etc/hosts" en mi equipo local para incluir algunas de las entradas de mapeo "dominio1.com", etc.:
Puede agregar entradas similares en su archivo "hosts", aunque su ubicación puede variar dependiendo de qué sistema operativo estes utilizando.
Ahora, probemos accediendo al sitio dominio1.com desde nuestro navegador preferido:
Tu deberías ver tu archivo index.html que configuramos para este virtual host.
ServerAlias
Nota que en el archivo vhost hemos agregado la sentencia ServerAlias. Si tu tienes los DNS configurados correctamente, tu podrías usar la dirección establecida en el ServerAlias para alcanzar tu sitio Web. Para próposito de prueba, tú puedes agregar otra línea en el archivo host (como hicimos arriba en este mismo artículo):
Repetir Pasos para el Dominio o Sitio Web 2
Para crear y activar el dominio2.com, simplemente has lo siguiente:
Archivos Logs
Como fue definido en los archivos vhost, cada dominio tiene sus propios Log files. Vamos a verlos:
La salida debería reflejar lo configurado en los vhost:
Observaciones
Este artículo se basa en su gran mayoría del siguiente artículo o enlace: http://articles.slicehost.com/2010/5/20/apache-virtual-hosts-on-debian-part-1
Si tu deseas tener más de un dominio en un solo servidor Web, es muy probable que necesites hacer uso de Virtual Hosts para ello. Virtual Hosts, te da la posibilidad de tener más de un sitio Web (o dominio) en un solo servidor. En este artículo te explicaremos como hacerlo.
Para este articulo crearemos dos dominios: dominio1.com y dominio2.com
Creando el Layout
Si usas Debian o Crunchbang, vete a /var/www, y create el sigiuente conjunto de carpetas:
mkdir -p dominio1.com/{public,private,log,cgi-bin,backup}
ymkdir -p dominio2.com/{public,private,log,cgi-bin,backup}
Archivo para Probar los Dominios
Para probar que los dos dominios trabajan, crearemos un archivo sencillo en HTML llamado index.html, el cual contendra dentro de el, lo siguiente:
<html>
<head>
<title>dominio#.com</title>
</head>
<body>
<h1>dominio#.com</h1>
</body>
</html>
Nota: Recuerde crear estos archivos en la ruta dominio#.com/public/index.html y reemplazar el símbolo # por 1 y 2 para cada dominio respectivamente.
Ya hecho esto, tenemos la estructura para crear los Virtual Hosts.
Configurando los Permisos
Con el fin de que el servidor Apache pueda servir tus dominios, este deberá tener permisos de lectura para varios archivos que componen tus sitios. Para asegurarnos que tenemos los permisos de la manera correcta, debemos ejecutar los siguientes comandos para ambos dominios:
sudo chmod -R a+rX /var/www/dominio#.com
Este comando establece que todo en su directorio dominio#.com debe ser legible y accesible por todos los usuarios del sistema.
Si agrega más directorios de dominios virtuales adicionales posteriormente, ejecute el comando de nuevo para asegurarse de que los nuevos directorios son accesibles.
NameVirtualHost
Para cada interfaz y puerto, Apache está configurado para escuchar una directiva NameVirtualHost. Algo a tener en cuenta es que sólo se puede definir de una vez por puerto.
En el diseño de configuración de Apache hay una directiva NameVirtualHost por defecto que se encuentra en el archivo "ports.conf".
Vamos a echar otro vistazo a los contenidos de "ports.conf":
cat /etc/apache2/ports.conf
La salida del comando anterior debería ser:
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
El ajuste predeterminado (por defecto) del NameVirtualHost satisface nuestras necesidades presentes. Apache aplicará la lógica de virtual host basada en nombres y los valores de peticiones HTTP realizadas en cualquier interfaz disponible (*) en el puerto 80.
Personalizando los Virtual Host
Para cada sitio Web, debemos crear un archivo conocido como vhost file. Estos son creados en la siguiente ruta: /etc/apache2/sites-available. Un ejemplo para el sitio o dominio1, sería:
sudo nano /etc/apache2/sites-available/dominio1.com
Ahora como modelo general el vhost file debe contener lo siguiente (los valores pueden cambiar en base a lo que tu sitio Web debe contener):
# Place any notes or comments you have here
# It will make any customization easier to understand in the weeks to come
# dominio: dominio1.com
# public: /var/www/dominio1.com/
<VirtualHost *:80>
# Admin email, Server Name (domain name) and any aliases
ServerAdmin webmaster@domain1.com
ServerName dominio1.com
ServerAlias domain1.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html
DocumentRoot /var/www/dominio1.com/public
# Custom log file locations
LogLevel warn
ErrorLog /var/www/dominio1.com/log/error.log
CustomLog /var/www/dominio1.com/log/access.log combined
</VirtualHost>
Activando el Sitio
Ya tenemos el sitio disponible y debemos activarlo con el siguiente comando:
sudo /usr/sbin/a2ensite dominio1.com
La salida del comando debe ser:
Site dominio1.com installed; run /etc/init.d/apache2 reload to enable.
En Kali Linux 1.0, el mensaje o salida es:
Enabling site domain1.com.To activate the new configuration, you need to run:
service apache2 reload
Y como dice la salida, reiniciamos el Apache:
sudo /etc/init.d/apache2 reload
En Kali Linux 1.0, en lugar de ejecutar a2ensite domain1.com, puedes correr: service apache2 reloadProbando Nuestros Sitios
Para probar el dominio sin necesidad de crear una zona DNS y el registro (s) en algún servidor de nombres de Internet (s), he modificado el archivo "/etc/hosts" en mi equipo local para incluir algunas de las entradas de mapeo "dominio1.com", etc.:
127.0.0.1 localhost
...
# entries related to the demo slice
123.45.67.890 dominio1.com
123.45.67.890 www.domain1.com
123.45.67.890 dominio2.com
...
Puede agregar entradas similares en su archivo "hosts", aunque su ubicación puede variar dependiendo de qué sistema operativo estes utilizando.
Ahora, probemos accediendo al sitio dominio1.com desde nuestro navegador preferido:
Tu deberías ver tu archivo index.html que configuramos para este virtual host.
ServerAlias
Nota que en el archivo vhost hemos agregado la sentencia ServerAlias. Si tu tienes los DNS configurados correctamente, tu podrías usar la dirección establecida en el ServerAlias para alcanzar tu sitio Web. Para próposito de prueba, tú puedes agregar otra línea en el archivo host (como hicimos arriba en este mismo artículo):
Repetir Pasos para el Dominio o Sitio Web 2
Para crear y activar el dominio2.com, simplemente has lo siguiente:
sudo nano /etc/apache2/sites-available/dominio2.com
...
# Entre los detalles para dominio2.com como en el ejemplo de arriba
Para activar el sitio y reiniciar el Apache:
sudo a2ensite dominio2.com
...
sudo /etc/init.d/apache2 reload
Finalmente adiciona una entrada a tu archivo host de tu computadora y navega al segundo dominio:
http://dominio2.com
or
http://www.dominio2.com
Si todo fue configurado bien, tú verás el archivo Index del dominio2.com.
Archivos Logs
Como fue definido en los archivos vhost, cada dominio tiene sus propios Log files. Vamos a verlos:
ls /var/www/dominio1.com/log/
La salida debería reflejar lo configurado en los vhost:
access.log error.log
Observaciones
- Recuerde que la máquina virtual predeterminada se encuentra todavía en su lugar.
- Ahora, si alguien accede a la dirección IP de su servidor verán al sitio definido por dicho archivo vhosts por defecto (siempre, claro está, que no hayan establecido un host virtual independiente para la dirección IP).
- ¿Por qué se sirve a partir de ese archivo host virtual?. Apache busca en los vhosts habilitados en orden alfabético, y si no puede encontrar uno que se aplica específicamente a la dirección IP o nombre de dominio solicitado, sólo sirve el primer host virtual que vio.
- Si hubiéramos deshabilitado o eliminado el host virtual predeterminado, se muestra el contenido de dominio1.com (siendo este antes que dominio2.com alfabéticamente).
- Esto es algo a tener en cuenta en la planificación de sus sitios web. ¿Quieres un dominio particular sea el dominio por defecto? ¿Desea que una dirección IP tenga un contenido completamente diferente?
Este artículo se basa en su gran mayoría del siguiente artículo o enlace: http://articles.slicehost.com/2010/5/20/apache-virtual-hosts-on-debian-part-1
Comentarios
Publicar un comentario