9.9. Upravljanje konfiguracijom u Drupalu. Aktivna, sinhronizovana konfiguracija, prenos konfiguracija sa DEV na LIVE.
Konfiguracija u Drupalu je osnova za sva podešavanja tipova sadržaja, polja, konfiguracionih formi i promenljivih. Pomoću konfiguracije možemo prenositi izmene sa jednog sajta na drugi, razvijati različite funkcionalnosti paralelno i bez međusobnog ometanja.
Konfiguracije se mogu sačuvati u YML fajlovima i dodati u Git repozitorijum, tako da možete sačuvati izmene u podešavanjima sajta i preneti izmene na Dev ili Live. Ideja konfiguracije u Drupalu je slična načinu rada Features modula:
https://www.drupal.org/project/features
Samo što Features nije integrisan sa svim modulima i nije uvek bilo moguće preneti sva podešavanja sajta putem Features. Konfiguracija u Drupalu radi sa svim podešavanjima i omogućava da sve učitate u fajlove.
Kada se instalira Drupal, kreira se direktorijum za učitavanje konfiguracija. Podrazumevano je to direktorijum sa dugim imenom, koji se nalazi u sites/default/files:
Naziv foldera se generiše nasumično jer je folder u javnom domenu, u folderu files, koji ima pristupna prava 777. Takvo dugo ime neće vam dozvoliti da uskladite naziv foldera sa konfiguracijama za učitavanje. Stvar je u tome da konfiguracije mogu sadržati API pristupe, Solr, SMTP pristupe i te informacije treba sakriti. Putanju do foldera sa konfiguracijama možemo odrediti kroz settings.php fajl:
$config_directories['sync'] = 'sites/default/files/config__RPFDnw0-VygzmxgHiXPoXGNKYmjVi3mDZmP5exZX8tRleV9jXG6ZECaPRaxekelYsMCF42HwA/sync';
Sync folder će se koristiti za prenos konfiguracija između sajtova. Drupal podrazumevano čuva konfiguracije u bazi podataka i koristi aktivnu konfiguraciju. Aktivnu konfiguraciju možete čuvati i u fajlovima kao i folderu za sinhronizaciju, ali je najbolje ostaviti aktivnu konfiguraciju u bazi da bi Drupal radio brže. Možete pogledati config tabelu sa konfiguracijama putem PhpMyAdmin ili Adminer:
Ovde su sačuvane serijalizovane nizovi sa konfiguracijama.
Obično se sync folder sa konfiguracijama čuva van sites/default/files, jer se files folder ne čuva u Git-u. Promenimo putanju ka folderu za konfiguracije:
$config_directories['sync'] = 'config/sync';
Sada možemo dodati konfiguracije u git. Konfiguracije možete ručno izvesti:
/admin/config/development/configuration/full/export
Konfiguracija -> Sinhronizacija konfiguracije -> Izvoz
Klikom na dugme Export, Drupal će prikazati arhivu sa svim konfiguracijama. Sada te konfiguracije možete dodati u git:
Ručno izvoz konfiguracija putem sajta nije uvek pouzdan. Kada imate mnogo konfiguracija, izvođenje može biti prekinuto. Zato je najbolje koristiti drush za izvoz:
drush config-export
Ili putem Drupal Console:
drupal config:export
Isto važi i za uvoz, može se uraditi preko drush-a:
drush config-import
I Drupal Console:
drupal config:import
Čuvanje konfiguracija u korenu sajta nije dobra ideja. Najbolje je konfiguracije čuvati u folderu van sajta menjajući settings.php:
$config_directories['sync'] = '../config/sync';
Dok učite Drupal, možete ostaviti folder sa konfiguracijama kao što je u korenu sajta.
Sada kada ste izvezli konfiguracije i dodali ih u git, možete ih učitati na drugom sajtu. Promenite bilo koja podešavanja na sajtu, na primer ime sajta:
/admin/config/system/site-information
I odite na stranicu Sinhronizacije konfiguracije:
/admin/config/development/configuration
Drupal poredi trenutno aktivnu konfiguraciju iz config tabele sa konfiguracijom za sinhronizaciju i ukoliko postoje razlike, videćete ih na ovoj stranici. Klikom na dugme Import all, bićete upitani da učitate vašu konfiguraciju za sinhronizaciju u aktivnu konfiguraciju u config tabeli. Na ovaj način možete popuniti vaše izmene.