lunes, 10 de octubre de 2016

Como crear multisites en Drupal 8

Drupal 8 nos proporciona la capacidad de ejecutar múltiples sitios desde una única instancia del core de Drupal. Esta característica se conoce como multisite o multisitio.

Cada sitio tendrá una base de datos independiente, pero los archivos que se encuentren guardados en la carpeta modules, profiles y themes serán compartidas entre todos los sitios pertenecientes a la red multisitios. Esto es una gran ventaja a la hora de hacer nuevas instalaciones de Drupal y de actualizar los módulos o themes que tengamos en la red.

Por supuesto, también tenemos la posibilidad de incluir algunos módulos y themes que solo se encontrarán disponibles para un sitio en concreto. Con lo cual, si necesitamos una característica especial pero solo para uno de los sitios, no necesitamos "ensuciar" las demás instalaciones que tenemos bajo la red multisite.

¿Qué necesitas para trabajar con multisites?


A la hora de trabajar con multisitios es necesario crear un host virtual para cada dominio. No voy a mostrar todo el proceso para crear un virtual host, ya que la forma de crearlo es diferente si estas usando Apache o Nginx. Aparte pfff hay miles de tutoriales que te lo explican al detalle.

Importante: Todos los hosts virtuales deben apuntar a la carpeta del sitio base. Básicamente donde se encuentra el index.php. Drupal se encarga de mapear los dominios de manera automática.

En este tutorial vamos a usar 2 subdominios: site1.drupal.dev y site2.drupal.dev. Obviamente también es posible usar dominios como por ejemplo: drupal1.dev y drupal2.dev, el proceso es el mismo.

¡Manos a la obra!


Lo primero que debes hace es dirigirte a la carpeta sites. Dentro de dicha carpeta encontramos un archivo llamado example.sites.php y debemos renombrarlo a sites.php

Dentro de sites debemos crear una carpeta con el nombre de dominio que tendrá cada sitio de la red mutisite. En mi caso voy a crear 2 carpetas con los nombres site1.drupal.dev y site2.drupal.dev.

Ahora copiamos el archivo sites/default/default.settings.php dentro de las 2 carpetas que acabamos de crear y lo renombramos como settings.php.

Ya puedes visitar el primer subdominio site1.drupal.dev y realizar todo el proceso de instalación.

Importante: Debes crear una nueva base de datos para cada sitio de la red multisitio. Por ejemplo, yo cree una base de datos con el nombre site1drupaldev y otra site2drupaldev.




Si en estos momentos nos dirigimos al segundo sitio site2.drupal.dev, deberíamos poder realizar la instalación del segundo sitio.



De esta misma forma podemos agregar la cantidad de sitio que deseemos o que soporte el servidor jeje.

Módulos y Themes específicos.


Además de los instalados en los "módulos" estándar y directorios "temas", cada sitio puede tener sus propios módulos y temas específicos.

Para que un sitio tenga módulos o temas específicos, basta con crear una carpeta "modules" y "themes" dentro del directorio de configuración del sitio. Por ejemplo, si site1.drupal.dev requiere un tema personalizado y un módulo que no debe ser accesible a otros sitios, la configuración se vería así:

sites/site1.drupal.dev/settings.php 
sites/site1.drupal.dev/themes/custom_theme 
sites/site1.drupal.dev/modules/custom_module


¿Cómo funciona este sistema de mutisite en Drupal 8?


El archivo sites.php es que realiza todo el trabajo y por lo general no es necesario modificar su contenido. La tarea de sites.php es mapear los diferentes alias de URL a una carpeta especifica. En el mismo archivo podemos encontrar la documentación necesaria para modificar su comportamiento.

¿Es seguro usar multisites?


Hay que tener en cuenta que el código PHP que se ejecuta bajo la instalación de un sitio de la red puede llegar a afectar a otros sitios que compartan el mismo core.

Si bien en Drupal 8 se eliminó la posibilidad de ejecutar código PHP desde la interface de administración del sitio con el módulo PHP Filter, existen algunas formas de poder ejecutar codigo php desde la interface. De hecho, el módulo PHP Filter se encuentra como un módulo contribuido y se puede instalar como cualquier otro.

Bueno espero que el post te haya ayudado a usar multisitios con Drupal 8.

¡Nos vemos la próxima!