Multisitio Drupal 8
La siguiente guía cubrirá los pasos necesarios para configurar un multisitio en Drupal 8. Esta guía está en desarrollo y solo se presentan algunos ejemplos de configuraciones. Existen otras opciones disponibles, como HTTPS, otros servidores web y bases de datos, así como configuraciones más avanzadas de hosts virtuales, etc.
Sin embargo, cabe destacar que el uso de el sistema de hosting Aegir es preferido. Este realiza todo el trabajo pesado por ti, utilizando prácticas seguras y avanzadas, incluyendo la configuración automática de hosts virtuales para Apache y Nginx, añadir soporte para HTTPS, ejecutar comandos Composer, etc. Consulta la documentación para configurar “plataformas”, término de Aegir para la base de código multisitio.
Resumen del proceso:
1. Instala una instancia de Drupal 8 que actuará como sitio raíz para nuestra instancia multisitio. En nuestro ejemplo, el sitio raíz se llamará d8multisite, estará disponible en d8multisite.com y se instalará en /var/www/d8multisite.
2. Crea un sitio en el multisitio llamado site1, accesible en site1.d8multisite.com.
3. Configura site1 para que tenga sus propios módulos fuera 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.
En este ejemplo instalamos Drupal con los siguientes 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 la definición de host virtual para el sitio raíz. Lee sobre configuraciones de hosts virtuales. Ejemplo de configuración de host virtual 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 asistente de instalación.
Paso 2. Configura el primer sitio para el multisitio
Ahora que tenemos configurado el sitio raíz, podemos proceder a configurar nuestro primer sitio llamado site1. Estos son los pasos en este proceso:
2.1. Crea una carpeta para site1 en tu multisitio: /d8multisite/sites/site1.d8multisite.com
2.2: Crea una base de datos para site1, por ejemplo: d8multisite_site1
2.3. Haz una copia de /d8multisite/sites/example.sites.php con el nombre /d8multisite/sites/sites.php
2.4: Edita sites.php para que la parte final del archivo luzca así:
# hacer que el sitio raíz de Drupal reconozca site1: $sites['site1.d8multisite.com'] = 'site1.d8multisite.com';
2.5: Crea un host virtual para site1. Nota que este host virtual debe apuntar al sitio raíz, no a su subdirectorio. También puedes optar por no crear una configuración de host virtual nueva para este sitio y usar un ServerAlias para el sitio raíz. Sin embargo, en este ejemplo de Apache crearemos un host virtual separado para site1:
<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_error.log combined </VirtualHost>
2.6. Copia /d8multisite/sites/default/default.settings.php al directorio del nuevo 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 el dominio del sitio.
Puedes repetir estos pasos cada vez que quieras crear un sitio en tu multisitio. También puedes usar dominios como example.com y site1.anotherdomain.com. Más información sobre dominios, URLs y nombres de subdirectorios de sitios.
Paso 3. Habilita módulos para cada sitio
En algunos casos, puede que desees que uno de tus sitios en el multisitio tenga sus propios módulos. Para habilitar esto, solo necesitas crear las carpetas correspondientes dentro de la carpeta del sitio objetivo. Consulta la estructura de carpetas multisitio en Drupal 8.
En este ejemplo permitiremos que site1 tenga sus propios módulos:
1. Crea una carpeta "modules" dentro del subdirectorio de site1: /d8multisite/sites/site1.d8multisite.com/modules
2. Da permisos de escritura a Apache para esta carpeta con chown www-data /d8multisite/sites/site1.d8multisite.com/modules
3. Verifica esto:
1) Desde el subdirectorio site1 (es decir, en el sitio raíz) instala el módulo Pathauto usando drush drush dl pathauto
2) Ve al subdirectorio site1 e instala el módulo ds usando drush drush dl ds
3) Visita ambos sitios y confirma:
- Pathauto está disponible en ambos sitios
- Display Suite está disponible solo en site1
Nota: Se asume que puedes hacer esto también con temas, bibliotecas y archivos. Esto requiere pruebas y documentación adicionales.
Uso de drush en multisitio
Puedes usar la opción -l:
drush -l example.com command
o el alias del sitio:
drush @alias command
Para verificar qué alias están disponibles, ejecuta:
drush site:alias
Un ejemplo de su 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 podría ser:
drush @sub1 updb
Nota: no usamos “.dev” en el alias.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.