9.9. Drupal में कॉन्फ़िगरेशन प्रबंधन। Active, Sync कॉन्फ़िगरेशन, DEV से LIVE तक कॉन्फ़िगरेशन ट्रांसफर करना।
Drupal में कॉन्फ़िगरेशन सामग्री प्रकारों, फील्ड्स, कॉन्फ़िगरेशन फॉर्म्स और वेरिएबल्स के सभी सेटिंग्स का आधार है। कॉन्फ़िगरेशन की मदद से हम एक साइट से दूसरी साइट पर परिवर्तन ट्रांसफर कर सकते हैं, एक ही समय में विभिन्न विशेषताओं का विकास कर सकते हैं और बिना एक-दूसरे में हस्तक्षेप किए।
कॉन्फ़िगरेशन को YML फाइलों में अपलोड किया जा सकता है और Git रिपॉजिटरी में जोड़ा जा सकता है, ताकि आप साइट सेटिंग्स में अपने परिवर्तनों को कमिट कर सकें और परिवर्तनों को Dev या Live पर ट्रांसफर कर सकें। Drupal में कॉन्फ़िगरेशन का विचार Features मॉड्यूल के कार्य करने के तरीके से मिलता-जुलता है:
https://www.drupal.org/project/features
केवल Features सभी मॉड्यूल्स के साथ एकीकृत नहीं है और हमेशा सभी साइट सेटिंग्स को Features के माध्यम से ट्रांसफर करना संभव नहीं था। Drupal में कॉन्फ़िगरेशन सभी सेटिंग्स के साथ काम करता है और आपको सब कुछ फाइलों में अपलोड करने की अनुमति देता है।
Drupal इंस्टॉल करते समय कॉन्फ़िगरेशन अपलोड करने के लिए एक फोल्डर बनाता है। डिफ़ॉल्ट रूप से यह एक लंबा नाम वाला फोल्डर होता है, जो sites/default/files में स्थित होता है:
फोल्डर का नाम यादृच्छिक रूप से जनरेट किया जाता है क्योंकि यह फोल्डर सार्वजनिक डोमेन में स्थित होता है, और इसकी फ़ाइलों को 777 एक्सेस अधिकार मिलते हैं। इतना लंबा नाम फोल्डर के नाम को कॉन्फ़िगरेशन से मेल नहीं खाने देगा ताकि उन्हें डाउनलोड किया जा सके। दरअसल, कॉन्फ़िगरेशन में API, Solr, SMTP एक्सेस और अन्य जानकारी हो सकती है, जिसे छुपाना आवश्यक है। हम settings.php फाइल के माध्यम से कॉन्फ़िगरेशन फोल्डर का पथ निर्दिष्ट कर सकते हैं:
$config_directories['sync'] = 'sites/default/files/config__RPFDnw0- VygzmxgHiXPoXGNKYmjVi3mDZmP5exZX8tRleV9jXG6ZECaPRaxekelYsMCF42HwA/sync';
Sync फोल्डर का उपयोग साइटों के बीच कॉन्फ़िगरेशन ट्रांसफर करने के लिए किया जाएगा। Drupal डिफ़ॉल्ट रूप से कॉन्फ़िगरेशन को डेटाबेस में स्टोर करता है और सक्रिय कॉन्फ़िगरेशन का उपयोग करता है। आप सक्रिय कॉन्फ़िगरेशन को फाइलों में भी स्टोर कर सकते हैं जैसे कि sync फोल्डर, लेकिन सबसे अच्छा है कि सक्रिय कॉन्फ़िगरेशन को डेटाबेस में ही रखें, ताकि Drupal तेज़ी से काम करे। आप PhpMyAdmin या Adminer के माध्यम से config टेबल को देख सकते हैं:
यहां कॉन्फ़िगरेशन के साथ सीरियलाइज्ड एरेज़ स्टोर होते हैं।
सामान्यतः, sync फोल्डर को sites/default/files के बाहर स्टोर किया जाता है, क्योंकि फ़ाइलों का फोल्डर गिट में स्टोर नहीं होता। अब हम कॉन्फ़िगरेशन फोल्डर के पथ को बदलते हैं:
$config_directories['sync'] = 'config/sync';
अब हम अपने कॉन्फ़िगरेशन को git में जोड़ सकते हैं। आप कॉन्फ़िगरेशन को मैन्युअली अपलोड कर सकते हैं:
/admin/config/development/configuration/full/export
Configuration -> Configuration synchronization -> Export
यदि आप Export बटन पर क्लिक करते हैं, तो Drupal सभी कॉन्फ़िगरेशन के साथ एक आर्काइव प्रदर्शित करेगा। अब आप इन कॉन्फ़िगरेशन्स को git में जोड़ सकते हैं:
साइट के माध्यम से मैन्युअल रूप से कॉन्फ़िगरेशन का अनलोडिंग हमेशा काम नहीं करता। जब आपके पास बहुत सारे कॉन्फ़िगरेशन होते हैं, तो अपलोड बीच में ही रुक सकता है। इसलिए, सबसे अच्छा है कि आप इसे drush के माध्यम से अपलोड करें:
drush config-export
या Drupal Console के माध्यम से:
drupal config:export
इसी तरह, इम्पोर्ट भी drush के माध्यम से किया जा सकता है:
drush config-import
और Drupal Console के माध्यम से:
drupal config:import
कॉन्फ़िगरेशन्स को साइट के रूट में रखना एक अच्छा विचार नहीं है। सबसे अच्छा है कि आप कॉन्फ़िगरेशन्स को एक ऑफ-साइट फोल्डर में स्टोर करें और settings.php को बदलें:
$config_directories['sync'] = '../config/sync';
जब आप Drupal का अध्ययन कर रहे हैं, तो आप कॉन्फ़िगरेशन्स को साइट के रूट में फोल्डर के रूप में छोड़ सकते हैं।
अब जब आपने कॉन्फ़िगरेशन अपलोड कर लिया है और उसे गिट में जोड़ लिया है, तो आप इसे दूसरी साइट पर अपलोड कर सकते हैं। आइए हम साइट पर कोई सेटिंग्स बदलते हैं, जैसे साइट नाम:
/admin/config/system/site-information
और Configuration Synchronization पेज पर जाएं:
/admin/config/development/configuration
Drupal वर्तमान सक्रिय कॉन्फ़िगरेशन को config टेबल से sync कॉन्फ़िगरेशन के साथ तुलना करता है और यदि उनमें अंतर होते हैं, तो आप उन्हें इस पेज पर देख सकते हैं। यदि आप Import all बटन पर क्लिक करते हैं, तो आपको अपना sync कॉन्फ़िगरेशन सक्रिय कॉन्फ़िगरेशन में लोड करने के लिए प्रेरित किया जाएगा। इस तरह आप अपने परिवर्तनों को भर सकते हैं।