9.9. Configuratiebeheer in Drupal. Actieve, Sync-configuratie, configuraties overdragen van DEV naar LIVE.
Configuratie in Drupal is de basis voor alle instellingen van inhoudstypen, velden, configuratieformulieren en variabelen. Met behulp van configuratie kunnen we wijzigingen van de ene site naar de andere overdragen, verschillende functies tegelijkertijd ontwikkelen zonder elkaar te storen.
Configuraties kunnen worden geüpload naar YML-bestanden en toegevoegd aan de Git-repository, zodat je je wijzigingen in de site-instellingen kunt committeren en de wijzigingen naar Dev of Live kunt overdragen. Het idee van configuratie in Drupal is vergelijkbaar met hoe de Features-module werkt:
https://www.drupal.org/project/features
Alleen zijn features niet geïntegreerd met alle modules en was het niet altijd mogelijk om alle site-instellingen via Features over te dragen. Configuratie in Drupal werkt met alle instellingen en maakt het mogelijk alles naar bestanden te uploaden.
Bij de installatie maakt Drupal een map voor het uploaden van configuratie aan. Standaard is dit een map met een lange naam, die zich bevindt in sites/default/files:
De naam in de map wordt willekeurig gegenereerd omdat de map zich in het publieke domein bevindt in de bestandenmap, die 777-toegangsrechten heeft. Zo'n lange naam voorkomt dat je de naam van de map kunt afstemmen op de configuraties die je wilt downloaden. Het feit is dat configuraties API-, Solr- en SMTP-toegang kunnen bevatten en deze informatie moet verborgen blijven. We kunnen het pad naar de configuratiemmap specificeren via het settings.php-bestand:
$config_directories['sync'] = 'sites/default/files/config__RPFDnw0- VygzmxgHiXPoXGNKYmjVi3mDZmP5exZX8tRleV9jXG6ZECaPRaxekelYsMCF42HwA/sync';
De Sync-map wordt gebruikt om configuraties tussen sites over te dragen. Drupal slaat configuraties standaard op in de database en gebruikt de actieve configuratie. Je kunt de actieve configuratie zowel in bestanden als in de sync-map opslaan, maar het is het beste om de actieve configuratie in de database te laten, zodat Drupal sneller werkt. Je kunt de config-tabel met configuraties bekijken via PhpMyAdmin of Adminer:
Geconfigureerde, geserialiseerde arrays worden hier opgeslagen.
Normaal gesproken wordt de sync-map met de configuraties buiten sites/default/files opgeslagen, omdat de bestandenmap niet in de git wordt opgeslagen. Laten we het pad naar de configuratiemmap wijzigen:
$config_directories['sync'] = 'config/sync';
Nu kunnen we onze configuraties toevoegen aan git. Je kunt de configuratie handmatig uploaden:
/admin/config/development/configuration/full/export
Configuratie -> Configuratiesynchronisatie -> Exporteren
Als je op de Exporteren-knop klikt, toont Drupal een archief met alle configuraties. Nu kun je deze configuraties toevoegen aan git:
Handmatige export van configuraties via de site werkt niet altijd. Wanneer je veel configuraties hebt, kan de upload onderbroken worden. Het is daarom het beste om via drush te uploaden:
drush config-export
of via de Drupal Console:
drupal config:export
Hetzelfde geldt voor importeren, dit kan gedaan worden via drush:
drush config-import
en de Drupal console:
drupal config:import
Het is geen goed idee om de configuraties in de root van de site op te slaan. Het is het beste om de configuraties op een externe locatie op te slaan door settings.php te wijzigen:
$config_directories['sync'] = '../config/sync';
Terwijl je Drupal bestudeert, kun je de map met configuraties voorlopig in de root van de site laten staan.
Nu je de configuratie hebt geüpload en deze aan git hebt toegevoegd, kun je deze naar een andere site overdragen. Laten we een instelling op de site wijzigen, zoals de sitenaam:
/admin/config/system/site-information
En ga naar de Configuratiesynchronisatie-pagina:
/admin/config/development/configuration
Drupal vergelijkt de huidige actieve configuratie uit de config-tabel met de sync-configuratie en als er verschillen zijn, kun je deze op deze pagina zien. Als je op de Importeren alles-knop klikt, krijg je de vraag om je sync-configuratie in je actieve configuratie in de config-tabel te laden. Op deze manier kun je je wijzigingen doorvoeren.