Magento / संगीतकार / तैनाती का प्रबंधन


18

इसलिए, मैं हैकाथॉन मैगेंटो कम्पोजर इंस्टॉलर का उपयोग करने का आनंद ले रहा हूं, लेकिन मैं यह समझने के लिए संघर्ष कर रहा हूं कि अन्य लोग एक तैनाती सेवा के संबंध में इसका उपयोग कैसे करते हैं। वर्तमान में मैं DeployHQ का उपयोग कर रहा हूं, और हां, जब मैं रेपो को अपडेट करता हूं तो संगीतकार को तैनात करने और चलाने के लिए इसे सेट कर सकता हूं, लेकिन यह अब मेरे लिए कोई मतलब नहीं है।

मेरा मुख्य कम्पोज़र रेपो, जिसमें मैं अपने निर्माण में शामिल किए जाने वाले सभी पैकेजों की सिर्फ json फ़ाइल रखता हूँ, केवल तभी अपडेट होता है जब मैं सूची में एक नया पैकेज जोड़ता हूँ।

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

तो दूसरे इसे कैसे प्रबंधित करते हैं? क्या मुझे केवल स्थानीय रूप से संगीतकार चलाना चाहिए और अपने रेपो में विक्रेता फ़ोल्डर को शामिल करना चाहिए?

किसी भी जवाब बहुत सराहना की जाएगी।


4
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि यह संगीतकार के बारे में है।
मबलपर्धा

1
नमस्ते, विशेष रूप से, यह संगीतकार के साथ Magento का उपयोग करने से संबंधित है, और अधिक विशेष रूप से Magento हैकथॉन कार्यक्षमता के साथ। इसलिए मुझे लगता है कि आप उस खेद पर कुछ समय से पहले हैं!
जेम्सऑलवुड

यह वास्तव में समझाने के लिए जटिल है, लेकिन मैं कोशिश करूँगा: क्योंकि मुझे लगता है कि यह सवाल मैगेंटो से संबंधित नहीं है और आपको लगता है कि यह है, मैंने इसे ऑफ विषय के रूप में चिह्नित किया है। यदि कोई मॉडरेटर या अन्य 4 सदस्य यह तय करते हैं कि इसे बंद करना होगा। यदि नहीं, तो यह खुला रहेगा। संदेश स्वचालित है जब आप प्रश्न को विषय के रूप में चिह्नित करते हैं। और यह निश्चित रूप से विषय से हटकर है क्योंकि मुख्य विषय संगीतकार है, जो Magento से बंधा है लेकिन इसे किसी अन्य सॉफ़्टवेयर इंस्टॉलेशन पर लागू किया जा सकता है और यह सर्वर / परिनियोजन के बारे में किसी साइट से संबंधित हो सकता है और मेरी राय में Magento SE में नहीं।
मबलपर्धा

1
दोस्तों, इस सवाल को 2 वोट और एक पसंदीदा मिला है। निश्चित रूप से किसी को इस सवाल का जवाब देने की अनुमति देने से कोई नुकसान नहीं हो सकता है? यह
मैग्नेटो

@JamesAllwood आप इसके साथ कैसे गए?
jharrison.au

जवाबों:


13

मैंने अपनी एजेंसी में एक संरचना स्थापित की है जो हमें हमारे सभी मैगनेटो साइटों को तैनात करने के लिए संगीतकार का उपयोग करने की अनुमति देती है। यह आपके द्वारा पूछे गए प्रश्न के लिए थोड़ा अधिक हो सकता है, लेकिन यहाँ संरचना का एक बुनियादी अवलोकन वैसे भी है:

रिपोजिटरी संरचना

नीचे 'पैरेंट' रिपॉजिटरी का फोल्डर स्ट्रक्चर है। इसमें कंपोजर JSON और लॉक फाइलें और तैनाती के लिए आवश्यक अन्य कॉन्फ़िगरेशन शामिल हैं।

- code
   - magento
- deployment
- environmental
   - local
       - local.xml
       - robots.txt
   - staging
       - local.xml
       - robots.txt
   - production
       - local.xml
       - robots.txt
- provisioning
- public
   - index.php
- vendor
- composer.json
- composer.lock
  • सभी क्लाइंट-विशिष्ट कस्टमाइज़ेशन को एक अलग "कस्टमाइज़ेशन" मॉड्यूल में संग्रहीत किया जाता है जो संगीतकार का उपयोग करके स्थापित हो जाता है
  • मैगेंटो कोर को गिट सबमॉड्यूल ( code/magento) के रूप में शामिल किया गया है
  • एक कस्टम index.phpऔर अन्य फ़ोल्डर जैसे मीडिया और त्रुटियां Magento रूट के बाहर एक सार्वजनिक फ़ोल्डर के अंदर बैठती हैं
  • पर्यावरण विशिष्ट फ़ाइलें (local.xml, robots.txt, आदि) परिनियोजन प्रक्रिया के दौरान Magento रूट में सिमिलिंक हो जाती हैं
  • विक्रेता फ़ोल्डर को Git से बाहर रखा गया है, लेकिन कंपोज़र .lock फ़ाइल शामिल है।

तैनाती

  • हम कैप्सट्रानो का उपयोग करते हुए तैनात करते हैं जो कई ऐप सर्वर और वातावरण (स्टेजिंग / उत्पादन) के लिए अनुमति देता है
  • Capistrano एक नए फ़ोल्डर में सर्वर पर पूरे कोडबेस का निर्माण करता है, और फिर बहुत अंत में वेबरोट सिमिलिंक स्वैप करता है जिसका अर्थ है कि आपकी वेबसाइट के लिए कोई डाउनटाइम नहीं है।
  • कैपिस्ट्रानो composer installनिर्माण के दौरान चलाता है और मैगेंटो सबमॉड्यूल में सभी मॉड्यूल को तैनात करता है।

यह अभी भी एक निरंतर एकीकरण सेटअप नहीं है, लेकिन मुझे लगता है कि यह Magento साइटों के लिए अच्छी तरह से काम करता है। यदि आप अपने सेटअप के लिए कुछ और सलाह चाहते हैं तो मुझे एक संदेश भेजने के लिए स्वतंत्र महसूस करें।


1
यह पुराना उत्तर है, लेकिन आशा है कि आप इसका उत्तर दे सकते हैं। 1 उत्पादन का भंडारण नहीं है local.xml एक सुरक्षा समस्या? 2 किस स्तर पर और आप डेटाबेस को कैसे आयात करते हैं?
MployBy

5

एक और तरीका है कि मैगेंटो हैकाथॉन कॉपी तैनाती रणनीति का उपयोग करें, जो थोड़े आपके संगीतकार.जेसन फ़ाइल में इस तरह दिखता है:

"extra": {
    "magento-root-dir": "./",
    "magento-deploystrategy": "copy",
    "magento-force": true
}

उपरोक्त विधि का उपयोग करना वेंडर से वास्तविक इंस्टॉलेशन में स्थापित फ़ाइलों को कॉपी करता है, यह किसी भी कंपोज़र को इंस्टॉल किए बिना, Git में प्रतिबद्ध होने और सामान्य के अनुसार तैनात करने की अनुमति देता है।

जब आप एक लाइव परिनियोजन करने वाले हों, और जब आप अपने नेटवर्क के लिए किसी प्रकार की प्रॉक्सी कैश प्राप्त कर लेते हैं, तो तृतीय-पक्षीय रिपॉजिटरी से खींचने का कोई बड़ा प्रशंसक नहीं हूं, जब तक आप थर्ड-पार्टी रिपॉजिटरी पर निर्भर नहीं होते हैं, तब तक यह जोखिम भरा है ।

इस लेख को पढ़ें और यह आपको एक अलग दृष्टिकोण देगा: http://www.letscodejavascript.com/v3/blog/2014/03/the_npm_debacle

असल में, NPM नीचे चला गया (.. की तरह) और सभी की बिल्ड सिस्टम ने काम करना बंद कर दिया (महत्वपूर्ण तैनाती के लिए!) क्योंकि वे सीधे एनपीएम पर निर्भर थे। (एनपीएम जावास्क्रिप्ट के लिए पैकटैगिस्ट की तरह है, सिवाय इसके कि एनपीएम वास्तव में फाइल को होस्ट करता है और पैकटैगिस्ट सिर्फ मॉड्यूल के गीथब रिपोज को इंगित करता है - मुझे गलत होने पर सही करें)

संपादित करें: बस लाल fschmengler की प्रतिक्रिया .. यह उसके 1 दृष्टिकोण पर एक विस्तार है


4

यह समझना महत्वपूर्ण है कि संगीतकार एक परिनियोजन उपकरण नहीं है, बल्कि एक विकास उपकरण है।

सभी निर्भरताओं के साथ एक परिनियोजन तैयार करने के विभिन्न तरीके हैं:

  • वेंडर निर्देशिका (या जहाँ भी कंपोज़र स्रोतों को स्थापित करता है) प्रोजेक्ट रिपॉजिटरी के लिए प्रतिबद्ध है
  • निर्माण सर्वर का उपयोग करें composer installजो परिणाम के साथ एक संग्रह चलाता है और बनाता है, जिसे आप विभिन्न लक्ष्य प्रणालियों के लिए दोहराए जा सकते हैं
    • composer installसर्वर पर चल रहा है और फिर @ jharrison.au द्वारा सुझाए गए सिमिलिंक को स्विच करता है

एक तरफ, मैं हर एक मॉड्यूल के लिए संगीतकार का उपयोग करने की सलाह नहीं देता और केवल रखता हूँ composer.json और composer.lock परियोजना भंडार में। यह इसे अति कर रहा है और विकास को अनावश्यक रूप से जटिल बनाता है। यह कई परियोजनाओं पर पुन: उपयोग किए गए कोड के लिए एकदम सही समझ में आता है, लेकिन आप विशिष्ट कोड को अलग-अलग रिपॉजिटरी में क्यों डालेंगे?

मेरी वर्तमान परियोजना संरचना इस तरह दिखती है ( एओई द्वारा वैकल्पिक संगीतकार इंस्टॉलर का उपयोग करके) ):

  • srcसभी परियोजना विशिष्ट मॉड्यूल शामिल हैं। संगीतकार यहां किसी अन्य Magento मॉड्यूल को भी स्थापित करता है
  • .modman के लिए लिंक src ताकि modman आसानी से सहानुभूति को संभाल सके
  • wwwवेबरोट है। संगीतकार यहाँ Magento कोर स्थापित करता है

इस तरह मैं रिपॉजिटरी में बाहरी मॉड्यूल शामिल करता हूं। यदि आप ऐसा नहीं करना चाहते हैं, तो इसे इस तरह समायोजित करें:

  • srcसभी परियोजना विशिष्ट मॉड्यूल शामिल हैं। उन्हें शामिल करने के लिए .modmanताकि मोडमैन सहानुभूति पैदा करता है, उपयोग करेंmodman link
  • .modmanमें है .gitignore। संगीतकार यहाँ Magento मॉड्यूल स्थापित करता है
  • wwwवेबरोट है। संगीतकार यहाँ Magento कोर स्थापित करता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.