Multisitio en Drupal 8
El siguiente tutorial cubre los pasos necesarios para configurar un sitio multisitio en Drupal 8. Esta guía está en desarrollo y presenta solo algunos ejemplos de configuración. Existen otras opciones, como HTTPS, otros servidores web y bases de datos, así como configuraciones de hosts virtuales más avanzadas, etc.
Sin embargo, es importante tener en cuenta que usar el sistema de alojamiento Aegir es la opción preferida. Este sistema realiza todo el trabajo pesado por ti, aplicando prácticas seguras y modernas, incluyendo la configuración automática de hosts virtuales para Apache y Nginx, soporte para HTTPS, ejecución de comandos Composer, etc. Consulta la documentación sobre la configuración de “plataformas”, que en el lenguaje de Aegir se refiere a una base de código multisitio.
Descripción general del proceso:
1. Instalar una instancia de Drupal 8 que servirá como el sitio raíz de nuestra instalación multisitio. En este ejemplo, el sitio raíz se llamará d8multisite, será accesible en d8multisite.com y estará instalado en /var/www/d8multisite.
2. Crear un sitio dentro del multisitio llamado site1, que será accesible en site1.d8multisite.com.
3. Configurar site1 para que tenga sus propios módulos independientes del sitio raíz.
Paso 1: Crear el sitio maestro
Para comenzar el proceso, instala una copia de Drupal 8 en tu servidor. Lee la documentación de instalación de Drupal 8 si no estás familiarizado con el proceso.
En este ejemplo, instalaremos Drupal siguiendo estos pasos:
1.1: Crea una base de datos para el sitio raíz multisitio, por ejemplo: d8multisite.
1.2: Descarga y extrae una copia de Drupal 8 en tu directorio web.
1.3: Crea una definición de host virtual para el sitio raíz. Consulta la documentación sobre configuraciones de host virtual. Ejemplo de configuración de Apache: Para Nginx, consulta la receta oficial.
<VirtualHost *:80> # Configuración del host virtual para el sitio raíz multisitio de Drupal 8 ServerAdmin me@domain.com DocumentRoot /var/www/d8multisite ServerName d8multisite.com ServerAlias www.d8multisite.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/d8multisite> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/d8multisite_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/d8multisite_access.log combined </VirtualHost>
1.4: Instala Drupal visitando d8multisite.com y siguiendo el instalador.
Paso 2: Configurar el primer sitio del multisitio
Ahora que el sitio raíz está configurado, podemos crear el primer sitio llamado site1. Los pasos son los siguientes:
2.1: Crea una carpeta para site1 en tu instalación multisitio: /d8multisite/sites/site1.d8multisite.com
2.2: Crea una base de datos para el sitio1, por ejemplo: d8multisite_site1
2.3: Copia /d8multisite/sites/example.sites.php como /d8multisite/sites/sites.php
2.4: Edita el archivo sites.php para que al final contenga lo siguiente:
# Hacer que el sitio raíz de Drupal reconozca a site1: $sites['site1.d8multisite.com'] = 'site1.d8multisite.com';
2.5: Crea un host virtual para site1. Ten en cuenta que este host debe apuntar al sitio raíz, no a un subdirectorio. También puedes simplemente agregar un ServerAlias al host virtual existente, pero en este ejemplo crearemos un host separado:
<VirtualHost *:80> ServerAdmin me@domain.com DocumentRoot /var/www/d8multisite ServerName site1.d8multisite.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/d8multisite> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/site1-d8multisite_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/site1-d8multisite_access.log combined </VirtualHost>
2.6: Copia /d8multisite/sites/default/default.settings.php dentro del nuevo directorio del sitio como settings.php:
# Desde la carpeta raíz de Drupal cp sites/default/default.settings.php sites/site1.d8multisite.com/settings.php
2.7: Completa el proceso de instalación de Drupal para site1 visitando su dominio.
Puedes repetir estos pasos cada vez que desees crear un nuevo sitio dentro del multisitio. También puedes usar dominios como example.com y site1.anotherdomain.com. Consulta más sobre dominios, URL y nombres de subdirectorios de sitios.
Paso 3: Habilitar módulos para cada sitio
En algunos casos, podrías querer que uno de tus sitios dentro del multisitio tenga sus propios módulos. Para hacerlo, basta con crear las carpetas adecuadas dentro de la carpeta del sitio. Consulta Estructura de carpetas multisitio en Drupal 8.
En este ejemplo, permitiremos que site1 tenga sus propios módulos:
1. Crea la carpeta modules dentro del subdirectorio de site1: /d8multisite/sites/site1.d8multisite.com/modules
2. Concede permisos de escritura a Apache: chown www-data /d8multisite/sites/site1.d8multisite.com/modules
3. Comprueba lo siguiente:
1) Desde la carpeta raíz (fuera del subdirectorio site1), instala el módulo Pathauto con Drush: drush dl pathauto
2) Desde el subdirectorio de site1, instala el módulo Display Suite con Drush: drush dl ds
3) Visita ambos sitios y confirma:
– Pathauto está disponible en ambos sitios.
– Display Suite solo está disponible en site1.
Nota: también puedes aplicar esto a temas, bibliotecas y archivos. Se requiere más documentación y pruebas al respecto.
Uso de Drush en un multisitio
Puedes usar la opción -l:
drush -l example.com command
O usar un alias de sitio:
drush @alias command
Para verificar los alias disponibles, ejecuta:
drush site:alias
Un ejemplo de salida podría ser:
@sub1.dev:
root: /var/www/mydomain.com/web
uri: “https://sub1.mydomain.com”
@default.dev:
root: /var/www/mydomain.com/web
uri: “https://sub2.mydomain.com”
@third.dev:
root: /var/www/mydomain.com/web
uri: “https://thirddomain.com”
Y el comando Drush correcto sería:
drush @sub1 updb
Nota: no usamos “.dev” en el nombre del alias.