Magento2 - स्थानीय / मचान / उत्पादन परिनियोजन और gitignore


11

यह एक सवाल से ज्यादा एक तरह की चर्चा हो सकती है।

मैं जानना चाहता हूं कि Magento2 और स्थानीय > स्टेजिंग > उत्पादन वातावरण के साथ आप कौन सी परिनियोजन नीति का पालन करते हैं

कुछ कोशिशों के बाद हमने सबसे अच्छा (या कम से कम, सबसे ठोस) दृष्टिकोण तय किया है, यह gitignore फ़ाइल होगी जिसमें git में विक्रेता फ़ोल्डर भी शामिल होगा ।

.DS_Store
/.buildpath
/.cache
/.metadata
/.project
/.settings
atlassian*
/nbproject
/sitemap
/sitemap.xml
/.idea
/.gitattributes
/app/config_sandbox
/app/etc/config.php
/app/etc/env.php
/app/code/Magento/TestModule*
/lib/internal/flex/uploader/.actionScriptProperties
/lib/internal/flex/uploader/.flexProperties
/lib/internal/flex/uploader/.project
/lib/internal/flex/uploader/.settings
/lib/internal/flex/varien/.actionScriptProperties
/lib/internal/flex/varien/.flexLibProperties
/lib/internal/flex/varien/.project
/lib/internal/flex/varien/.settings
/node_modules
/.grunt
/pestle.phar
/pub/media/*.*
!/pub/media/.htaccess
/pub/media/catalog/*
!/pub/media/catalog/.htaccess
/pub/media/customer/*
!/pub/media/customer/.htaccess
/pub/media/downloadable/*
!/pub/media/downloadable/.htaccess
/pub/media/import/*
!/pub/media/import/.htaccess
/pub/media/theme/*
/pub/media/theme_customization/*
!/pub/media/theme_customization/.htaccess
/pub/media/wysiwyg/*
!/pub/media/wysiwyg/.htaccess
/pub/media/tmp/*
!/pub/media/tmp/.htaccess
/pub/media/captcha/*
/pub/static/***
!/pub/static/.htaccess

/var/*
!/var/.htaccess

.unison*
/sync.sh

इसलिए हम संगीतकार को केवल स्थानीय वातावरण में चलाते हैं: किसी भी नए विस्तार के रूप में, या स्थानीय स्तर पर सॉफ्टवेयर अपग्रेड का परीक्षण किया जाता है, फिर उसे मान्य और प्रतिबद्ध किया जाता है। हम शायद तब git में भी app / etc / config.php फ़ाइल शामिल करेंगे, लेकिन उस फ़ाइल को फिर से लिखना होगा जब चल रहा है setup:upgrade, ठीक है?

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

bin/magento setup:upgrade
bin/magento setup:di:compile (optional)
bin/magento setup:static-content:deploy

संबं धत लं क भी दे

देखें कि हम वैकल्पिक Magento 2 - सेटअप: di: संकलन के रूप में संकलन कमांड क्यों चुनते हैं ?

अपडेट करें

सच्चाई यह है कि हमारे प्रकाशित Magento 2 परियोजनाओं में कोड परिवर्तन को लागू करते समय हमें कुछ समस्याएं हो रही हैं

परिवर्तन स्थानीय और स्टेजिंग में काम करते हैं (दोनों मोड में जाँच की गई: डेवलपर और उत्पादन ... हालांकि हम वैचारिक रूप से डेवलपर मोड में उस वातावरण को कॉन्फ़िगर करते हैं), लेकिन उनमें से कुछ उत्पादन वातावरण (उत्पादन मोड में), आदि में काम नहीं करते हैं ... इसलिए मुझे यकीन नहीं है कि हम सही रणनीति का पालन कर रहे हैं। मैं देखना चाहता हूं कि विनियोग आदेश अनुक्रम, और उस आदेश में आदेश की प्रासंगिकता क्या है

वास्तव में, हर दिन मैं Magento 2 उत्पादन मोड की उपयोगिता के बारे में कम आश्वस्त हूं, जब तक कि आप परियोजना में कुछ भी नहीं बदलने जा रहे हैं। क्या तुम मेरा मन बदल सकते हो?


मैं एक ही रास्ता जा रहा हूँ: मेरे git रेपो में सब कुछ। प्रोडक्शन मशीन के पास कंपोजर नहीं है इसलिए मेरे लिए कोई दूसरा रास्ता नहीं है। मैं पूछ सकता हूँ कि आप विक्रेता फ़ोल्डर के अंदर .it रिपॉजिटरी से कैसे निपटते हैं? जब मैं अपने रेपो के लिए प्रतिबद्ध हूं, तो उन्हें सबमॉड्यूल माना जाता है और इसलिए मेरे रेपो के अंदर खत्म नहीं होता है।
ओमस्टा

जवाबों:


18

वास्तव में, हर दिन मैं Magento 2 उत्पादन मोड की उपयोगिता के बारे में कम आश्वस्त हूं, जब तक कि आप परियोजना में कुछ भी नहीं बदलने जा रहे हैं। क्या तुम मेरा मन बदल सकते हो?

मुझे यकीन नहीं है कि अगर मैं आपको सही समझ रहा हूं, लेकिन यह वही है जो उत्पादन मोड के लिए है: उत्पादन प्रणाली जहां आप कुछ भी नहीं बदलते हैं (कोड वार)। अगली तैनाती तक, यानी।

मुझे Git आधारित परिनियोजन मिल रहा है जो आप Magento 2 के लिए कम उपयुक्त का उपयोग कर रहे हैं क्योंकि यह सभी Magpro 1 के लिए Magento 1 के लिए था। बिल्ड और परिनियोजन अधिक जटिल है और IMHO एक स्वचालित बिल्ड प्रक्रिया के आसपास कोई रास्ता नहीं है

मैं क्या सुझाऊंगा:

  • है repeatable तैनाती, यानी आप यह सुनिश्चित करें कि होना चाहिए ठीक उसी कोड उत्पादन है कि मचान में था, में समाप्त होता है उत्पन्न फ़ाइलों सहित
  • इसे प्राप्त करने के लिए, तैनाती से अलग निर्माण करें और निर्माण प्रक्रिया में निम्नलिखित करें:

    • composer install( vendorइसके बजाय रिपॉजिटरी में जोड़ना भी संभव है, लेकिन यदि आपने तैनाती के दौरान सर्वर पर कंपोज़र चलाने से बचने के लिए ऐसा किया है, बल्कि इसे बिल्ड स्टेप में करें और केवल composer.lockरिपो में रखें )
    • कोड पीढ़ी (YMMV):

      bin/magento setup:di:compile
      bin/magento setup:static-content:deploy
      
    • एक संग्रह (बनाने का निर्माण विरूपण साक्ष्य पूर्ण Magento निर्देशिका से), को छोड़कर mediaऔर var, लेकिन सहित vendor, pub, var/generatedऔर var/di। के साथ शुरू , var/generatedऔर var/diकरने के लिए ले जाया जाता है generated/codeऔर generated/metadataजो यह आसान उन्हें बाकी के से अलग करने के लिए बनाता है, varजो की तैनाती के लिए अनदेखा किया जाना चाहिए।

  • परिनियोजन में, बिल्ड विरूपण साक्ष्य को लक्ष्य सर्वर पर कॉपी करें, इसे एक नई निर्देशिका में निकालें और:

    • इसे में लगातार निर्देशिका लिंक ( media, var/session, var/log, ...)
    • रखरखाव मोड सक्षम करें
    • स्विच डॉक्यूमेंट रूट (आमतौर पर डॉकरॉट अंतिम रिलीज के लिए एक सिम्बल है, इसे नई रिलीज में बदलें)
    • कैश फ्लश करें
    • Daud setup:upgrade
    • अक्षम रखरखाव मोड
  • इस तैनाती प्रक्रिया को आसानी से डिप्लॉयर के साथ लागू किया जा सकता है , जो कैपिस्ट्रानो की तरह है लेकिन पीएचपी में है। Magento 2 के लिए तैनाती पर आधारित एक पूर्ण तैनाती समाधान यहां पाया जा सकता है: https://github.com/mwr/magedeploy2 (netz98 के लिए धन्यवाद!) और यहां एक और है जिसका हम उपयोग करते हैं: https://github.com/staempgli! / magento2 तैनाती उपकरण

  • रखते हुए app/etc/config.phpभंडार में सक्षम है और विकलांग मॉड्यूल का ट्रैक रखने के लिए अच्छा है।

यह कदम से कदम निर्देश नहीं है, लेकिन यह आपको अपनी वर्तमान प्रक्रिया के लिए अधिक मजबूत विकल्प के लिए एक सिंहावलोकन देना चाहिए। लिंक किए गए टूल पर एक नज़र डालें कि कैसे एक पूर्ण समाधान दिख सकता है।


बहुत बहुत धन्यवाद फबियन अधिक प्रतिक्रिया
राउल सांचेज़

@ फैबियन-शेंगलर बहुत स्पष्ट करते हैं कि हम क्या करते हैं। हम स्टेजिंग वातावरण में सब कुछ उत्पन्न करते हैं और हम इसे उत्पादन मोड में परीक्षण करते हैं, फिर हम स्टेजिंग पर्यावरण से उत्पादन पर्यावरण तक यह सुनिश्चित करने के लिए उत्पादन कोड को स्थानांतरित करते हैं कि उत्पादन वातावरण में समाप्त होने वाला कोड ठीक उसी तरह है जैसे हम मचान में रखते हैं।
डियाजवाटसन

स्पष्टीकरण के लिए धन्यवाद। आपके उत्तर में gitignore फ़ाइल की सामग्री होना अच्छा होगा।
मेहदी

@ .gitignoreफ़ाइल वास्तविक समस्या के लिए प्रासंगिक नहीं है। आप बस डिफ़ॉल्ट एक का उपयोग कर सकते हैं।
फैबियन शेंगलर

@FabianSchmengler, मेरे पास समान समस्या है, सभी सिस्टम में प्रत्येक परिनियोजन के बाद सभी फ़ाइल प्रतिबद्ध परिवर्तन प्रतिबिंबित होंगे, लेकिन व्यवस्थापक किसी भी विषय कॉन्फ़िगरेशन को कॉन्फ़िगर नहीं करेगा, किसी भी विषय पर समान सेटिंग्स को कई बार कॉन्फ़िगर करने से बचने के लिए कोई समाधान नहीं है?
जफ़र पिंजर

4

मेरे दिमाग में, मैगेंटो 2.2 का इंतजार करें या एक समान दृष्टिकोण लागू करने का प्रयास करें।

Magento 2.2 उदाहरण के लिए उत्पादन सर्वर के साथ बिल्ड सर्वर को अलग करके पाइपलाइन परिनियोजन का परिचय देता है।

यहाँ आधिकारिक दस्तावेज है: http://devdocs.magento.com/guides/v2.2/config-guide/deployment/pipeline/

इसके अलावा, वर्तमान में मैं विन्यास टेम्पलेट्स और कई पर्यावरण सेटअप के साथ स्वचालित तैनाती का प्रबंधन करने के लिए Ansible का उपयोग कर रहा हूं।

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