06/05/2019 | Julen Melgar | 91 Visitas

Cómo crear Multisites en Drupal 8

Cuando hablamos de multisite o multisitio, nos referimos a la opción de poder crear multitud de sitios web a partir de una única instancia del core de nuestro CMS (sistema de gestión de contenido o content management system), compartiendo el mismo código base, pero corriendo cada site en su propia base de datos.

drupal multisite

 

Diferencia entre multisitio y multidominio

Desde el punto de vista del desarrollo las diferencias entre un multisite y un multidominio son muchas y se puede reducir a estos aspectos:

Arquitectura multisitio

Una instalación multisite permite más flexibilidad y es especialmente útil para compartir código (módulos, temas, configuraciones…) entre todos los sites. Nos ayuda a la hora de hacer instalaciones ya que simplemente los tenemos que hacer en un único sitio. Esto también reduce los esfuerzos de pruebas y testing.

Arquitectura multidominio

Una instalación multidominio es especialmente útil a la hora de compartir usuarios y contenido entre múltiples sitios web. Para crear nuestro multidominio necesitaremos el módulo Domain Access de Drupal. Este módulo tiene un gran impacto en nuestra instalación, lo que hace que nuestro sistema sea más frágil y propenso a errores.

¿Para qué sirve un Drupal 8 multisite?

Muchas veces nos encontramos ante la problemática de tener sitios web parecidos en estructura pero diferentes en contenido. Una posible solución ante esta situación podría ser la creación de un sitio base que posteriormente clonemos tantas veces como sea necesario. Pero… ¿y si necesitamos añadir un nuevo módulo, cambiar una configuración o crear un nuevo estilo genérico? ¿Lo hacemos tantas veces como sites tengamos?. En estos casos es en los que entra en juego la idea de crear nuestro multisite.

Un Drupal 8 multisite nos permite tener una instancia de Drupal como raíz, lo que nos permitirá compartir toda la lógica de negocio que necesitemos entre los hijos.

Por supuesto, también tenemos la posibilidad de incluir algunos módulos, temas o configuraciones que solo se encontrarán disponibles para uno de los hijos. Con lo cual, si necesitamos un desarrollo custom para uno de los sites, no tendremos que ensuciar las demás instancias.

Ventajas de un Drupal 8 multisite

Las principales ventajas de Drupal 8 multisite son:

  • Costes de desarrollo más económicos: Al configurar tu web como multisite, ahorrarás en costes de desarrollo al no crear sitios relacionados desde cero.
  • Generación de nuevos sitios más dinámicos: Podrás crear sitios nuevos rápidamente.
  • Consistencia de marca: Con la arquitectura multisite, es mucho más fácil atenerse a las pautas de la marca en el diseño de los sitios web.
  • Gestión de sitios web con menos esfuerzo: Necesitará menos tiempo, esfuerzos y costos para la administración de su sitio web, ya que puede realizar ciertas acciones sólo en una sin repetirlas en todas las demás (actualizaciones del core, compartir contenido, maquetaciones genéricas…).

Estructura de un Drupal 8 multisite

La diferencia entre un Drupal 8 y un Drupal 8 multisite son mínimas. Como hemos hablado anteriormente un multisite necesita un site raíz que hará de instancia principal, por lo que la estructura base de nuestro multisite sera identica a la de una web Drupal normal.

Entonces, ¿dónde están las diferencias?. Las principales diferencias las encontraremos en la carpeta sites. En esta carpeta crearemos tantos sitios nuevos como necesitemos. Para ello, crearemos un directorio con el nombre del site hijo.

Un ejemplo de una estructura multisite podría ser la siguiente:

-- core -- modules    -- contrib    -- custom
-- themes    -- contrib    -- custom
-- sites    -- site1       -- modules          -- custom          -- contrib       -- themes          -- custom          -- contrib       -- files    -- site2       -- modules          -- custom          -- contrib       -- themes          -- custom          -- contrib       -- files

¿Cómo crear un multisite en Drupal 8?

Una vez decidido que un multisite es la mejor opción para nuestras necesidades, lo primero que haremos será la creación de una instancia de Drupal 8.

 

multisite drupal

 

Esta instancia será el raiz de nuestro proyecto. Se encargará de almacenar todos los módulos, temas y configuraciones genéricas entre los demás sites.

Una vez configurado nuestro Drupal raíz, crearemos un sitio hijo. Como hemos visto en el apartado anterior, la estructura para crear un tema hijo es la siguiente:

-- sites
   -- site1
      -- modules
         -- custom
         -- contrib
      -- themes
         -- custom
         -- contrib
      -- files

En nuestro caso quedará algo similar a esto:

 

multisite drupal estructura

 

Para finalizar, crearemos una base de datos para cada uno de los sites y lanzaremos la instalación de todos los nuevos sitios.

¿Como hacer un site diferente al resto?

Continuando con el ejemplo anterior. ¿Cómo podríamos hacer que uno de nuestro sites tenga un módulo o tema diferente? Actualmente, todos nuestros sites comparten tanto módulos como temas, pero esto no siempre es necesario. Podríamos tener la necesidad de que uno de nuestros sites tuviese un módulo que los demás sites no necesiten (y no queramos “ensuciar” la instalación genérica).

Para dar solución a este problema lo único que tendremos que hacer es meter este nuevo módulo dentro de la carpeta sites/siteX/modules (si es un módulo de la comunidad irá dentro de la carpeta contrib, de lo contrario en la carpeta custom).

multisite drupal estructura

Si entramos a el site genérico y a el site1 podremos ver como efectivamente solo el site hijo dispone de este nuevo módulo.

 

modulo microsites drupal

modulo microsites drupal

 

En el caso de los temas, la metodología de creación de un tema solo para un site hijo será la misma.

¿Qué módulos me pueden ayudar en mi multisite?

Domain Access

El módulo Domain Access es un suit (conjunto) de módulos que proporcionan funcionalidad para ejecutar un grupo de sites desde una única instalación de Drupal. Todo este grupo de sites correrán bajo una misma base de datos compartida.

El módulo nos permitirá compartir usuarios, contenidos, configuraciones…

Domain Menu Access

Domain Menu Access es un módulo que trabaja conjuntamente con el módulo Domain Access. Permite a los administradores configurar acceso a los elementos del menú que seleccionemos según el dominio del que estén visitando nuestra web.

Apache Solr Multisite

Este módulo se integra con la búsqueda Solr de nuestro Drupal para buscar entre múltiples sitios. Esta búsqueda es posible al tener muchos sitios compartiendo un mismo índice.

El facetado de búsqueda de un multisite es diferente al de un buscador Solr normal. Este facetado nos permite hacer una búsqueda en nuestro sitio A y luego filtrar sus resultados solo para los del sitio B.

RobotsTxt

RobotsTxt es un módulo muy interesante a la hora de gestionar multisites. Nos permite generar archivos robots dinámicamente y da la oportunidad de editarlos directamente desde la interfaz de usuario.

Muchas son las empresas que deciden una arquitectura multisite para sus paginas web. En Hiberus somos expertos en Drupal y en la creación de arquitecturas multisitio. Si quieres saber cómo podemos ayudarte a hacer tu CMS multisite, escríbenos. Estaremos encantados de ayudarte.

 

Somos el proveedor líder en desarrollo de proyectos Drupal

Drupal constituye actualmente la mejor opción para desarrollar su portal en Internet con tecnología opensource. Su capacidad funcional y escalabilidad permiten desplegar desde el portal más sencillo hasta el más complejo.

Hemos desarrollado los proyectos más importantes de Drupal en España.

¿Te ayudamos?

Comentar

Su dirección de correo electrónico no será publicada.Los campos necesarios están marcados *

*

¡Contacta con nosotros!

¿ALGUNA DUDA?

Llámanos y nuestros expertos realizarán un asesoramiento personalizado sin compromiso

902 87 73 92

SOLICITAR INFORMACIÓN

* Campos Obligatorios

Afirmo que he leido el aviso legal y acepto la Política de privacidad
Permito el tratamiento de mis datos personales con la finalidad informada