9 de octubre de 2012

Alojar varios dominios en un hosting con Apache

En muchas ocasiones, desearemos alojar varias sitios web con diferentes dominios en el mismo Hosting. La mayoría de los servicios de Hosting usan a Apache como servidor web, el cual permite alojar múltiples dominios sobre una misma IP.
El proceso de configuración usa los denominados VirtualHost de Apache y se hace del siguiente modo...

En este mini tutorial se considerará que Apache está instalado sobre un sistema Linux (Ubuntu), pero si desea hacer lo mismo cuando Apache se encuentra instalado en Windows el proceso tendrá algunas similitudes.

Configurando VirtualHost

Apache tiene la capacidad de reconocer múltiples dominios bajo un misma IP.
Esta característica permite alojar múltiples sitios web en el mismo Hosting o Servidor, usando en cada uno de esos sitios web un dominio distinto. Esta característica de Apache, ofrece una opción económica de mantener varias websites sin aumentar el costo del servicio de Hosting, naturalmente si las condiciones de tráfico agregado no afecten el servicio.

Esta es. la configuración de múltiples dominios, una tarea habitual para un desarrollador de páginas web en los Servicios de Alojamiento del tipo:
  • En modalidad de VPS (servidor virtual dedicado) hasta los Servidores Dedicados. Donde es permitido un mayor control sobre las opciones de configuración del servidor.
En los servicios de Alojamiento Compartido (shared hosting), en general, esta operación se hace desde un panel de administración basado en web (ej: cPanel).

Apache dispone de las directivas de configuración denominadas VirtualHost para desarrollar esta tarea.

Apache en Linux (Ubuntu) maneja la configuración de los distintos Dominios (sitios web), convenientemente en archivos separados que se localizan en el directorio: /etc/apache2/sites-available .

Para conocer la estructura de los archivos de configuración de dominios, sólo basta revisar algunos de los archivos bajo ese directorio:
cd /etc/apache2/sites-available

Ahí encontraremos dos (2) archivos de configuración de nombres: "default" y "default-ssl", que contienen la estructura de configuración típica, tanto para sitios web tradicionales, como en sitios web con acceso seguro (SSL) respectivamente.

Acá sólo requerimos, conocer la estructura de un sitio web tradicional. Por lo tanto, ejecutamos el comando:
cat default | more

Ahora se tomará como plantilla el archivo "default", y se hará una copia de él con un nuevo nombre, que llamaremos por conveniencia: "dominio1.com" (podría ser cualquier nombre), este proceso se hace con:
sudo cp default dominio1.com

Luego, editamos el archivo "dominio1.com", usando cualquier editor de textos, preferiblemente editores de modo texto (ej: nano, vi, vim).
Se deben modificar y/o agregar las directivas referentes al DocumentRoot y ServerName. Así, las primeras líneas del archivo "dominio1.com", debiera quedar:
<VirtualHost *:80>
 DocumentRoot /var/www/dominio1
 ServerName www.dominio1.com
 ...

El "DocumentRoot" identifica el directorio de publicación que usará Apache para el dominio www.dominio1.com especificado en el "ServerName".

Finalmente, para dejar el dominio disponible sólo nos restan dos (2) pasos:
  • Hacer el sitio disponible.
  • Crear el directorio de publicación del nuevo dominio (/var/www/dominio1).
  • Reinicializar Apache (restart)o hacer que sólo lea la nueva configuración (reload) sin reiniciar el servicio.
Para hacer el sitio disponible, sólo es necesario crear un enlace simbólico en el directorio "sites-enables", esta es una característica de configuración muy practica de Apache, pues en el caso que se desea desactivar un sitio, sólo hay que eliminar el enlace simbolico y no se requiere de eliminar o mover el archivo de configuración del dominio. Para activar el dominio, se hace con la instrucción:
sudo a2ensite dominio1

Nota: Si desearamos desactivar el dominio, se recurre a la instrucción "a2dissite".

Ahora la creación del directorio de publicación del dominio y al menos un archivo index de ejemplo:
sudo mkdir /var/www/dominio1
cd /var/www/dominio1

sudo touch index.html
sudo chmod 777 index.html 

sudo echo "Dominio OK!" > index.html

Finalmente, se hace que Apache vuelva a leer sus archivos de configuración sin detener el Servicio:
sudo /etc/init.d/apache2 reload
(o usando: sudo service apache2 reload)
Si se desea habilitar un segundo dominio "dominio2", se deberá volver a repetir el proceso.

En el caso, que se desea configurar múltiples dominios sobre un servidor de desarrollo local, se debe indicarle al Sistema Operativo la ruta del nuevo dominio para impedir que las búsquedas se hagan en la internet, haremos un tutorial explicando los detalles necesarios bajo esa configuración.

Otros artículos relacionados