बिना डंप के मैं एक अद्वितीय प्रोफ़ाइल से समान साइटों को कैसे तैनात / प्रबंधित करता हूं?


15

मैं "की तरह नहीं है क्लोनिंग वेबसाइट" समाधान है जिसका मतलब है डंपिंग एक डेटाबेस और एक अन्य वातावरण में इस डंप का आयात। यह एक ही वेबसाइट (मंचन / ठेस / देव / आदि) के कई उदाहरणों को तैनात करने के वास्तविक दुनिया के तरीके की तरह नहीं दिखता है ।

D7 के साथ, हम आमतौर पर कस्टम प्रोफाइल का उपयोग करते थे और इन प्रोफाइल से वेबसाइटों को स्थापित करने के लिए ड्रश का उपयोग करते थे (और शायद बाद में साइट सिंक्रनाइज़ेशन के लिए सुविधाओं का उपयोग करके)। इसने हमें नई स्थापनाएं दीं, कोई परीक्षण सामग्री नहीं, लेकिन महत्वपूर्ण सेटिंग्स साझा कीं। उदाहरण के लिए, आम सामग्री सिंक्रनाइज़ेशन को माइग्रेट के साथ किया जाएगा।

मैंने एक ही इंस्टॉल प्रोफाइल को साझा करते हुए कई डी 8 इंस्टैंस को मैनेज करने की कोशिश की। जहां अंतिम लक्ष्य साइट कॉन्फ़िगरेशन को साझा करना और सिंक करना होगा। और हर स्थापना का एक अलग साइट है UUID। मुझे system.site uuidस्थापित समय पर निश्चित रूप से कॉन्फ़िगरेशन चर को लागू करने में कोई सफलता नहीं है (बेशक मैं बाद में मूल्य को बदल सकता हूं, लेकिन मुझे लगता है कि यह बहुत देर हो चुकी है, और सभी ऑब्जेक्ट पहले से ही अलग-अलग यूयूआईडी के साथ बनाए गए हैं, जो पहले सिंक्रनाइज़ेशन को एक बुरा सपना बनाता है। , जहां कुछ डिफ़ॉल्ट सामग्री को हटाया जाना चाहिए, या डिफ़ॉल्ट भाषा सिंक को दुर्घटनाग्रस्त कर सकती है क्योंकि इसे हटाया नहीं जा सकता है, आदि)।

इस यूयूआईडी को लागू करने के लिए मैंने एक उत्पन्न सेटिंग्स का उपयोग करने की कोशिश की। फ़ाइल एक $config['system.site']['uuid']मान के साथ , बड़ी असफलता (साइट स्थापना के बाद भी सेटिंग पूरी तरह से अनदेखा कर दी गई थी)।

मैंने कॉन्फ़िगरेशन इंस्टॉलर प्रोफ़ाइल को भी देखा है , जो मुझे पूरी तरह से समझ में नहीं आता है, विशेष रूप से इस समाधान को किसी अन्य स्थापित प्रोफ़ाइल के साथ मिलाने का तरीका।

तो सवाल यह है कि, एक स्थापित प्रोफ़ाइल से ताजा साइटों को तैनात करने का सबसे अच्छा तरीका क्या है:

  • "क्लोनिंग वेबसाइट्स" के बिना और साइट निर्माण पर एसक्यूएल डंपों में हेरफेर करना (जैसे कि क्लोन किए गए साइट सवाल क्या हैं )।
  • केवल निर्यात किए गए कॉन्फ़िगरेशन और कोड का उपयोग करके एक ताजा क्लीन इंस्टॉल (डेवलपर्स सामग्री कचरा के बिना) के साथ
  • जो दोनों कॉन्फ़िगरेशन डिफॉल्ट्स और बाद में सिंक्रोनाइज़ेशन को प्रबंधित कर सकता है

जवाबों:


3

सुविधाएँ UUID समस्या को दरकिनार कर मदद कर सकती हैं। यह अभी भी छोटी गाड़ी है, जो हमें पूरी तरह से प्रक्रिया को स्वचालित करने से रोकती है, लेकिन हम कम से कम बदलाव कर सकते हैं और मैन्युअल रूप से कॉन्फ़िगरेशन बनाए रख सकते हैं।

सुविधाएँ अभी भी मॉड्यूल बनाती हैं, यह दिए गए फ़ीचर मॉड्यूल के कॉन्फ़िगरेशन / इंस्टॉल निर्देशिका में कॉन्फ़िगरेशन का निर्यात करती है। जब आप फीचर इंस्टॉल करते हैं, तो इसे उठाया जाएगा, और आप अपनी साइट के कॉन्फ़िगरेशन को अपडेट करना जारी रख सकते हैं (इसी तरह पुराने ड्रूव फीचर्स-रिवर्ट ने जो किया) आपकी सुविधाओं के निर्यात में बदलाव करता है।

आप कॉन्फ़िगरेशन को सीधे ड्रश के माध्यम से भी आयात कर सकते हैं, कॉन्फ़िगरेशन फ़ोल्डर में नहीं ओवरराइडिंग कॉन्फ़िगरेशन से बचने के लिए --पारंपरिक ध्वज का उपयोग करना सुनिश्चित करें । --Source का उपयोग करके आप एक कस्टम कॉन्फ़िगरेशन फ़ोल्डर स्थान भी परिभाषित कर सकते हैं, ताकि आप कुछ ऐसा कर सकें drush cim --partial --source=docroot/modules/features/myfeature/config/install


ठीक है, अगर मैं इसे अच्छी तरह से समझता हूं, तो आप soime कीज़ सुविधाओं पर वेबसाइट कॉन्फ़िगरेशन को सिंक्रनाइज़ करने के लिए सुविधा का उपयोग करते हैं । क्लोन की गई वेबसाइटों के पूर्ण विन्यास-सिंक की अनुमति के बिना।
रेगिलेरो

2
बिल्कुल सही। हमारे लिए फुल कॉन्फिग सिन्क के साथ मूलभूत समस्या यह है कि इसके लिए बस एक सेटिंग है कि प्रवेश बदल सकते हैं, और आप अब सिंक नहीं कर सकते, क्योंकि यह उनके परिवर्तन को वापस कर देगा। इसे फ़ीचर क्षेत्रों में तोड़कर हमें) एक कॉन्फ़िगरेशन सेट बनाए रखने की अनुमति देता है (आंशिक रूप से, क्योंकि हम समझते हैं कि यह क्या है) और बी) बाकी सुविधाओं पर लचीला रहता है और हम उनके कॉन्फ़िगरेशन को कैसे प्रबंधित करते हैं।
बालाज़्स डायनिस्का

ठीक है, यह शायद निश्चित जवाब नहीं है, लेकिन मैं आपको इनाम दूंगा। अगर कोई बाद में एक अद्यतन जवाब जोड़ना चाहता है (जैसा कि चीजें आगे बढ़ रही हैं) मैं शायद उसके लिए एक और इनाम फिर से खोल सकता हूं।
रेगिलो

1

एक अन्य विकल्प:

drush config-set system.site uuid 56974bf2-68c2-3453-a211-de8bc754cc23

1

@ इवान जारोस संकेत के आधार पर, आप एक प्रोफ़ाइल स्थापित करने पर कुछ निश्चित कॉन्फ़िगरेशन विकल्प सेट कर सकते हैं। जाहिर है, यह केवल इंस्टॉलेशन पर काम करता है न कि किसी साइट के पहले से इंस्टॉल होने के बाद।

अपनी प्रोफ़ाइल की स्थापना रद्द करें फ़ाइल में, आप डिफ़ॉल्ट कॉन्फ़िगरेशन सेटिंग्स में जोड़ सकते हैं hook_install():

\Drupal::configFactory()
  ->getEditable('system.site')
  ->set('uuid', 'this is my new uuid')
  ->save(TRUE);

मैंने स्थानीय स्तर पर इसकी कोशिश की है और यह काम करता है। मैं साइट को UUID drush csetबदलने के लिए उपयोग किए बिना उपरोक्त कोड (उचित UUID सेट के साथ) का उपयोग करके किसी अन्य साइट से कॉन्फ़िगर को नए सिरे से स्थापित स्थानीय साइट में खींचने में सक्षम था ।

संभवतः, आप अपने UUID को अपने पर्यावरण पर एक फ़ाइल, या एक पर्यावरण चर, या सेवा से ले जाने के लिए सेट कर सकते हैं, और इस प्रकार वे सभी उस प्रोफ़ाइल के साथ किसी भी साइट पर समान होंगे।

मैं से एक ऐसी ही बात करने के लिए आशा व्यक्त की settings.php, लेकिन ConfigFactoryवर्ग उस बिंदु पर उपलब्ध नहीं है और आप के माध्यम से इसे स्थापित करने के लिए अपने प्रश्न में बाहर बिंदु के रूप में $configमें settings.phpकोई प्रभाव नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.