Les configurations
Introduction
Dans Drupal, la gestion des configurations est un élément crucial permettant de définir et de contrôler les aspects variés d’un site, de l’apparence à la fonctionnalité en passant par les paramètres d’administration. Les configurations sont des ensembles de paramètres qui définissent comment le site se comporte et sont généralement transportables entre différents environnements de développement.
1. Contenus et configurations
La principale différence entre les contenus et les configurations réside dans leur volatilité et leur portabilité. Les contenus sont souvent créés et gérés par les utilisateurs du site et changent fréquemment (comme les articles de blog, les comptes utilisateurs, etc.).
En revanche, les configurations sont des paramètres définis par les développeurs et les administrateurs du site pour en configurer les fonctionnalités, et elles sont généralement stables dans le temps. Cela inclut :
-
les paramètres de base tels que le nom du site ou l’adresse de contact par défaut ;
-
les entités de contenu telles que les types de contenus ou les entités personnalisées ainsi que la configuration des champs associés ;
le paramétrage des comptes utilisateurs (champs et méthodes...
Exporter des configurations
L’export des configurations via Drush est une pratique courante lors du développement de sites Drupal pour assurer que tous les environnements de développement, de test et de production partagent les mêmes configurations de base.
Pour exporter la configuration, vous pouvez utiliser la commande Drush suivante :
drush config:export
#Alias
drush cex
Cette commande exporte toutes les configurations actives du site dans le dossier de configuration synchronisée.
Ce dossier se trouve dans le répertoire que vous avez défini dans le fichier settings.php de votre installation Drupal (généralement web/sites/default) via le paramètre $settings[’config_sync_directory’].
Référez-vous au chapitre Préparation de l’environnement, section Répertoires spéciaux afin d’y suivre les recommandations concernant la mise en place du répertoire qui accueillera les configurations du site.
Pour rappel, voici le paramétrage recommandé :
// Define configuration files directory.
$settings['config_sync_directory'] = '../config/sync';
Ce paramétrage permet de stocker les configurations en dehors de la racine du site, renforçant la sécurité tout en restant versionnable avec des outils tels que GIT.
Voici ce que devrait afficher la commande drush config:export...
Importer des configurations
Après avoir exporté les configurations, vous pouvez également les importer dans un autre environnement de développement ou de production.
Cela garantit que tous les environnements fonctionnent avec les mêmes paramètres et comportements, ce qui est essentiel pour maintenir la cohérence à travers le cycle de vie du développement.
L’import de configuration peut aussi vous permettre de revenir en arrière lorsque dans votre phase de développement vous ne souhaitez plus conserver les modifications que vous avez apportées. Par exemple, vous pourriez annuler la création d’un champ pour un type de contenu qui, après réflexion, ne vous semble plus utile. Dans ce cas, il est recommandé de faire régulièrement des exports pour éviter un retour en arrière trop impactant.
Pour importer les configurations, utilisez la commande Drush suivante :
drush config:import
# Alias
drush cim
Cette commande lit les fichiers de configuration depuis le répertoire spécifié dans le fichier settings.php et les applique au site.
En cas de différence entre les configurations existantes et celles que vous souhaitez importer, Drush affichera des messages spécifiques indiquant les éléments qui seront impactés par votre import, vous invitant à valider votre...
Ignorer des configurations
Dans Drupal, il est possible de spécifier des modules dont les configurations ne doivent pas être exportées ou importées à travers les environnements en utilisant le fichier settings.php. Par exemple, le module devel (utilisé pour le développement) ne devrait pas être activé en production pour des raisons de sécurité et de performance.
Parfois il peut aussi être nécessaire d’ignorer certaines configurations si ces configurations sont spécifiques à un environnement de développement, de test ou de production. Ceci est essentiel pour éviter des comportements indésirés qui pourraient résulter de différences environnementales.
Pour exclure les configurations de certains modules, ajoutez la ligne suivante à votre fichier settings.php :
$settings['config_exclude_modules'] = ['devel', 'stage_file_proxy'];
Cette configuration empêchera Drupal d’exporter ou d’importer les configurations des modules listés.
Pour une gestion plus fine des configurations entre différents environnements, le module Configuration Split peut être extrêmement utile. Ce module permet de diviser les configurations en groupes qui peuvent être exportés ou importés indépendamment, selon l’environnement de développement...
Les états (states)
Les states dans Drupal sont utilisés pour stocker des informations qui ne sont pas des configurations et qui peuvent varier d’un environnement à l’autre sans nécessiter de synchronisation.
Par exemple, le mode de maintenance d’un site est un state parce qu’il peut être activé ou désactivé indépendamment dans chaque environnement. Pour ces mêmes raisons, la date du dernier passage du CRON est aussi un state.
Il est possible d’agir sur les states en code ou via drush.
Utilisation en code
// Write states.
\Drupal::state()->set('key','value');
// Read states.
$state_value = \Drupal::state()->get('key');
// Delete states.
\Drupal::state()->delete('key');
Utilisation via drush
// Write states.
drush state:set key "value"
// Read states.
drush state:get key
// Delete states.
drush state:del key
Voyons quelques cas d’utilisation de ces states.
1. Mise en maintenance du site
La mise en maintenance est contrôlée par le state system.maintenance_ mode nous permettant de définir sa valeur à 0 (site ouvert) ou 1 (site en maintenance). Lors d’une modification de cette valeur, il est recommandé de reconstruire le cache Drupal via la commande drush cr.
Lorsque vous mettez un site Drupal en mode maintenance...