9.9. Gestion de la configuration dans Drupal. Configuration active, synchronisation, transfert des configurations de DEV vers LIVE.
La configuration dans Drupal est la base de tous les réglages des types de contenu, des champs, des formulaires de configuration et des variables. Grâce à la configuration, nous pouvons transférer des modifications d’un site à un autre, développer différentes fonctionnalités en même temps sans qu’elles interfèrent les unes avec les autres.
Les configurations peuvent être exportées dans des fichiers YML et ajoutées au dépôt Git, ce qui vous permet de valider vos modifications dans les paramètres du site et de transférer ces changements vers l’environnement Dev ou Live. L’idée de la configuration dans Drupal est similaire à celle du module Features :
https://www.drupal.org/project/features
Seulement, les Features ne sont pas intégrées avec tous les modules et il n’a pas toujours été possible de transférer tous les réglages du site via Features. La configuration dans Drupal fonctionne avec tous les paramètres et permet d’exporter tout dans des fichiers.
Lors de l’installation, Drupal crée un dossier pour l’export des configurations. Par défaut, c’est un dossier avec un nom long, situé dans sites/default/files :
Le nom du dossier est généré aléatoirement car il se trouve dans le domaine public du dossier files, qui a des droits d’accès 777. Un nom aussi long empêche de faire correspondre facilement le nom du dossier avec les configurations à télécharger. En effet, les configurations peuvent contenir des accès API, Solr, SMTP et ces informations doivent rester cachées. Nous pouvons spécifier le chemin vers le dossier de configuration via le fichier settings.php :
$config_directories['sync'] = 'sites/default/files/config__RPFDnw0- VygzmxgHiXPoXGNKYmjVi3mDZmP5exZX8tRleV9jXG6ZECaPRaxekelYsMCF42HwA/sync';
Le dossier Sync sera utilisé pour transférer les configurations entre les sites. Par défaut, Drupal stocke les configurations dans la base de données et utilise la configuration active. Vous pouvez aussi stocker la configuration active dans des fichiers ainsi que dans le dossier sync, mais il est préférable de laisser la configuration active dans la base de données pour que Drupal fonctionne plus rapidement. Vous pouvez consulter la table config avec les configurations via PhpMyAdmin ou Adminer :
Les tableaux sérialisés avec les configurations y sont stockés.
En général, le dossier sync avec les configurations est stocké en dehors de sites/default/files, car le dossier files n’est pas versionné dans Git. Changeons le chemin vers le dossier de configuration :
$config_directories['sync'] = 'config/sync';
Maintenant, nous pouvons ajouter nos configurations à git. Vous pouvez exporter la configuration manuellement :
/admin/config/development/configuration/full/export
Configuration → Synchronisation de la configuration → Exporter
En cliquant sur le bouton Exporter, Drupal affichera une archive avec toutes les configurations. Vous pouvez maintenant ajouter ces configurations à git :
L’export manuel des configurations via le site ne fonctionne pas toujours. Quand vous avez beaucoup de configurations, l’export peut être interrompu. Il est donc préférable d’exporter via drush :
drush config-export
ou via la console Drupal :
drupal config:export
Il en va de même pour l’import, qui peut être fait via drush :
drush config-import
et via la console Drupal :
drupal config:import
Il n’est pas conseillé de garder les configurations à la racine du site. Il est préférable de stocker les configurations dans un dossier hors site en modifiant le settings.php :
$config_directories['sync'] = '../config/sync';
Pendant que vous apprenez Drupal, vous pouvez laisser le dossier des configurations tel quel à la racine du site.
Maintenant que vous avez exporté la configuration et ajouté celle-ci à git, vous pouvez l’importer sur un autre site. Modifiez n’importe quel paramètre du site, par exemple le nom du site :
/admin/config/system/site-information
Puis rendez-vous sur la page de synchronisation de la configuration :
/admin/config/development/configuration
Drupal compare la configuration active actuelle dans la table config avec la configuration sync, et s’il y a des différences, vous pouvez les voir sur cette page. En cliquant sur le bouton Importer tout, vous serez invité à charger votre configuration sync dans la configuration active de la table config. Ainsi, vous pouvez appliquer vos modifications.