Multisite Drupal 8
Le guide suivant couvre les étapes nécessaires à la configuration d’un multisite Drupal 8. Ce guide est en cours de développement, seuls quelques exemples de configurations sont présentés. D’autres options sont disponibles, telles que HTTPS, d’autres serveurs web et bases de données, ainsi que des configurations de virtual hosts plus avancées, etc.
Cependant, il convient de noter que l’utilisation du système d’hébergement Aegir est recommandée. Il effectue tout le travail lourd pour vous, en utilisant des pratiques modernes sécurisées, incluant la configuration automatique des virtual hosts pour Apache et Nginx, l’ajout du support HTTPS, l’exécution de commandes Composer, etc. Voir la documentation sur la configuration des « plateformes », terme Aegir pour base de code multisite.
Vue d’ensemble du processus :
1. Installez une instance Drupal 8 qui servira de site racine pour votre instance multisite. Dans notre exemple, le site racine s’appellera d8multisite, sera accessible via d8multisite.com et sera installé dans /var/www/d8multisite.
2. Créez un site multisite nommé site1, accessible via site1.d8multisite.com
3. Configurez site1 pour qu’il dispose de ses propres modules en dehors du site racine.
Étape 1 : créer le site maître
Pour commencer, installez une copie de Drupal 8 sur votre serveur. Consultez les documents d’installation de Drupal 8 si vous n’êtes pas familier.
Dans cet exemple, nous installons Drupal avec les étapes suivantes :
1.1 : Créez une base de données pour le site racine multisite, par exemple : d8multisite.
1.2 : Téléchargez et extrayez une copie de Drupal 8 dans votre répertoire web.
1.3. Créez une définition de virtual host pour le site racine. Lisez à propos des configurations de virtual hosts. Exemple de configuration Apache VirtualHost : pour Nginx, voir la recette officielle.
<VirtualHost *:80> # Configuration du virtual host pour le site racine multisite 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 : Installez Drupal en visitant d8multisite.com et en suivant l’interface d’installation.
Étape 2 : configurer le premier site multisite
Maintenant que le site racine est configuré, nous pouvons commencer à configurer notre premier site nommé site1. Voici les étapes :
2.1. Créez un dossier pour site1 dans votre multisite : /d8multisite/sites/site1.d8multisite.com
2.2 : Créez une base de données pour site1, par exemple : d8multisite_site1
2.3. Copiez /d8multisite/sites/example.sites.php en /d8multisite/sites/sites.php
2.4 : Modifiez sites.php pour que la fin du fichier ressemble à ceci :
# faire connaître le site racine Drupal au site1 : $sites['site1.d8multisite.com'] = 'site1.d8multisite.com';
2.5 : Créez un virtual host pour site1. Notez que ce virtual host doit pointer vers le site racine, pas vers son sous-répertoire. Notez également que vous pouvez ne pas créer une nouvelle configuration virtual host et simplement utiliser site1.d8multisite.com comme ServerAlias du site racine. Dans cet exemple Apache, nous créons cependant un virtual host séparé pour 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_access.log combined </VirtualHost>
2.6. Copiez /d8multisite/sites/default/default.settings.php dans le répertoire du nouveau site sous le nom settings.php :
# depuis le dossier racine Drupal cp sites/default/default.settings.php sites/site1.d8multisite.com/settings.php
2.7 : Terminez l’installation Drupal pour site1 en visitant le domaine du site.
Vous pouvez répéter ces étapes chaque fois que vous souhaitez créer un site dans votre multisite. Vous pouvez également utiliser des domaines tels que example.com et site1.anotherdomain.com. Pour en savoir plus sur les domaines, URL et noms de sous-répertoires des sites.
Étape 3 : activer des modules pour chaque site
Dans certains cas, vous pouvez vouloir qu’un de vos sites multisites ait ses propres modules. Pour ce faire, il suffit de créer les dossiers correspondants dans le dossier du site ciblé. Voir Structure des dossiers multisite dans Drupal 8.
Dans cet exemple, nous permettons à site1 d’avoir ses propres modules :
1. Créez un dossier « modules » dans le sous-répertoire site1 : /d8multisite/sites/site1.d8multisite.com/modules
2. Donnez à Apache un accès en écriture sur ce dossier avec la commande chown www-data /d8multisite/sites/site1.d8multisite.com/modules
3. Testez ceci :
1) Depuis le sous-répertoire site1 (donc dans le site racine), installez le module Pathauto avec Drush : drush dl pathauto
2) Allez dans le sous-répertoire site1 et installez le module ds avec Drush : drush dl ds
3) Visitez les deux sites et vérifiez :
- Pathauto est disponible sur les deux sites
- Display Suite est disponible uniquement sur site1
Note : on suppose que cela fonctionne aussi avec les thèmes, bibliothèques et fichiers. Un test et une documentation supplémentaires sont nécessaires ici.
Utilisation de Drush dans un multisite
Vous pouvez utiliser l’option -l :
drush -l example.com commande
ou un alias de site :
drush @alias commande
Pour vérifier les alias disponibles, exécutez :
drush site:alias
Un exemple de sortie pourrait être :
@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»
Une commande Drush appropriée pourrait être :
drush @sub1 updb
Note : nous ne mettons pas « .dev » dans l’alias.