Multisite con Domain Access

21/03/2016
Multisite con Domain Access

El módulo Domain access nos permite configurar Drupal de forma que podamos construir múltiples sitios web con una única instalación del core. Estos múltiples portales se obtienen en base al acceso al portal a través de diferentes URLs con lo que realmente solo tendremos un único sitio web que gestionar (al contrario que la funcionalidad del core de Drupal solo tendremos un sitio web y una sola base de datos).

El público al que va dirigido este manual son aquellas personas que conozcan el funcionamiento de las DNS (conocimiento básico). En cuanto a Drupal, va dirigido a cualquier público ya que se explica el procedimiento desde interfaz. Una de las ventajas de este módulo es la facilidad que aporta al gestionar la configuración de los diferentes dominios, por contra todos los “portales” acceden a la misma base de datos, pudiendo afectar al rendimiento general de los portales.

Domain access basa su funcionalidad en el acceso al portal a través de diferentes dominios, es decir, si accedemos por el dominio ‘domain.com’ cargará la configuración determinada para ese dominio, y si entramos en ‘subdomain.com’ cargará otra configuración diferente a la anterior. A priori puede parecerse al funcionamiento del multisite de Drupal por defecto, pero en este caso, no tendremos ni diferentes ficheros para los sitios ni bases de datos adicionales. Además de la configuración del módulo en Drupal, se deberán configurar correctamente tanto el servidor que sirve el portal como el servidor DNS para que todas las URLs apunten a la misma instalación de Drupal.

En primer lugar, vamos a detallar el escenario desde el que partiremos para llevar a cabo la correcta configuración del módulo:

  • Un virtualhost de apache configurado apuntando a la ruta donde hayamos descargado Drupal
  • Una instalación limpia de Drupal 7.43
  • El módulo Domain access (7.x-3.12) descargado en: sites/all/modules

Para poder probar correctamente la configuración del módulo, lo primero que debemos hacer será modificar el virtualhost creado y añadir los siguientes parámetros:

ServerName domain.local
ServerAlias subdomain.local

Una vez añadidos estos parámetros tendremos que reiniciar el servidor web (en este caso apache):

sudo service apache2 restart

El siguiente paso sería configurar el servidor DNS para que tanto domain.local como subdomain.local apunten hacia el mismo sitio. Para poder ver el funcionamiento de esta prueba (y como no disponemos de un servidor DNS en el entorno local) modificaremos el archivo hosts para que estas URLs apunten a nuestro entorno. Para ello, abrimos el archivo hosts (/etc/hosts en ubuntu) y añadimos las siguientes líneas:

127.0.0.1  domain.local
127.0.0.1  subdomain.local  

Una vez hecho esto, tendremos configurado nuestro servidor local para poder servir a ambas URLs.


Llegados a este punto, ya tenemos nuestro servidor correctamente configurado y, aunque de forma ficticia, las URLs apuntando a dicho servidor. Ahora es el momento de pasar a configurar Drupal para tener los dos dominios funcionando con Domain access. Para ello debemos tener el módulo descargado en sites/all/modules. Antes de activar el módulo, será imprescindible modificar el settings.php (sites/default/settings.php) de Drupal añadiendo las siguientes líneas de código:

/**
 * Add the domain module setup routine.
 */
include DRUPAL_ROOT . '/sites/all/modules/domain/settings.inc';

Esto hará que cuando se cargue el bootstrap de Drupal, se cargue además la configuración del módulo Domain. Una vez que añadimos las líneas anteriores, procedemos a activar el módulo Domain access (para habilitar el módulo a través de Drush habrá que indicarle como argumento el dominio actual por defecto: drush pm-enable domain --uri=domain.local) a través de interfaz (se recomienda hacerlo de esta forma):

enable.png 

Una vez habilitado el módulo, el sistema nos solicitará volver a reconstruir los permisos mostrando el siguiente mensaje (también podemos hacerlo desde la URL admin/reports/status):

rebuildperms.png

Pinchamos en el enlace que se ve en la imagen, confirmamos la acción y ya tendremos el módulo habilitado. El siguiente paso será generar la configuración para el segundo dominio. Para realizar esto debemos ir a la siguiente URL:

admin/structure/domain

Una vez accedemos a la configuración del módulo, podremos ver una interfaz como la siguiente:

createdomain.png

En este momento pinchamos en el enlace ‘Create domain’ y configuraremos las opciones para el segundo sitio web con otro dominio.

creatingdomain.png

Las opciones que debemos configurar para los dominios configurados en nuestro virtualhost son:

  1. El nombre del dominio. Este es el que hemos configurado anteriormente en el virtualhost y en el archivo hosts.
  2. Nombre identificativo. Será el nombre que le demos al dominio a la hora de identificarlos.
  3. Esquema de URL. Aquí debemos indicar si dicho dominio utiliza o no https.

El resto de opciones las podremos dejar por defecto, aunque podemos modificar, como vemos en la imagen, tanto el estado del nuevo dominio como su peso respecto a los demás y si será el dominio por defecto o no. Aplicamos los cambios y ya tendremos ambos dominios o portales funcionando. A continuación veremos las diferencias en la página principal de cada sitio:

domain.png
subdomain.png

Aunque la configuración del módulo para dar soporte a dos dominios ya está completada, habrá que tener en cuenta un último aspecto de configuración, con el fin de no llevarnos sorpresas a la hora de testear ambos portales con usuarios administradores. Para que los cambios en cuanto a contenido no lo veamos reflejados en ambos “portales”, por defecto el módulo hace que los usuarios administradores vean el contenido en ambas páginas, aunque esto se puede modificar a golpe de click. Para ello accedemos a la siguiente URL:

admin/structure/domain/settings

Y a continuación modificamos la opción ‘Enforce rules on administrators’ como vemos en la siguiente imagen:

admins.png

Aplicamos los cambios y ya tenemos los dos portales totalmente aislados tanto para usuarios anónimos y logados como para administradores (este cambio es opcional).