GIT और परिनियोजन रणनीति Magento2 परियोजनाएं


91

मैगेंटो 1 के साथ मैंने जीआईटी रेपो में खींचे जाने वाले एक उपकरण का इस्तेमाल किया, जैसे कमांड चलाया modman deploy-allऔर यह सुनिश्चित किया कि varनिर्देशिका लिखने योग्य थी। के लिए .gitignoreमैं इस्तेमाल किया यह एक जो बहुत अच्छी तरह से काम किया।

लेकिन Magento 2 के बारे में क्या ?

Gitignore सबसे अच्छा काम करता है, आप अपनी परियोजना को कैसे लागू करते हैं और कमांड को पूर्व और पोस्ट कमांड को कैसे चलाना चाहिए। समुदाय से कुछ अंतर्दृष्टि सुनने के लिए उत्सुक हैं।

प्रश्न काफी समय तक खुला रहेगा


Mangel @sander अच्छा प्रश्न
अमित बेरा

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

@ एफिलविंक यह व्यापक हो सकता है लेकिन स्पष्ट रूप से बहुत व्यापक नहीं है क्योंकि पहले से ही 3 उत्तर दिए गए थे। जैसा कि यहां चर्चा की गई है: meta.magento.stackexchange.com/questions/745/… मेटा का उपयोग MageSE के बारे में प्रश्नों के लिए किया जाना है, न कि यादृच्छिक पोस्ट / प्रश्न यदि आप इसे हटाना चाहते हैं तो मैं आपको रोक नहीं सकता, लेकिन यह बहुत लगता है लोगों को सवाल में दिलचस्पी है और मेरी राय में यह एक मान्य है, यह सब बहुत विशिष्ट नहीं है।
Sander Mangel

दो चीजें: सबसे पहले, सैंडर मेटा के बारे में सही है - इसका उपयोग केवल एसई प्लेटफॉर्म के बारे में सवालों के लिए किया जाना चाहिए क्योंकि यह मैगेंटो एसई से संबंधित है (एनबी: हमने शायद मेटा को इस नियम को मजबूत करने के लिए पर्याप्त रूप से पॉलिश नहीं किया है)। दूसरा, "बहुत से लोग [एक सवाल में रुचि रखते हैं] का इस बात से कोई लेना-देना नहीं है कि किसी प्रश्न का उत्तर कैनोनिक रूप से दिया जा सकता है या नहीं (और इसलिए स्टैकएक्सचेंज प्रारूप में एक प्रश्न की उपयुक्तता के साथ)। यह सुनिश्चित करने के लिए निराशाजनक है (मैं खुद इसके खिलाफ आया हूं)। मैं यह देखने के लिए इच्छुक हूं कि यह Q / A थ्रेड कहां जाता है। शायद एक एक अच्छी तरह से विशेष रूप से "सही" के लिए पर्याप्त कहा जा सकता है ...
benmarks

उस मामले में @benmarks मैंने इनाम के लिए गलत कारण या विषय उठाया है, इसके पीछे मेरी प्रेरणा यह थी कि जिसने भी इसके लिए पूर्ण उत्तर लिखने के लिए समय लिया उसे पुरस्कृत किया जाए। यदि यह धागा यहाँ पर नहीं है, तो मैं इसे कॉपी करूँगा और इसे लेखकों को ऑनलाइन जमा करने के बाद कहीं और पोस्ट कर दूंगा क्योंकि मुझे लगता है कि इसका अभी भी मूल्य है। कृपया मुझे सूचित हटाने से पहले अगर
Sander Mangel

जवाबों:


55

नीचे दिए गए चरणों का वर्णन है कि कस्टम मॉड्यूल विकास के लिए वातावरण कैसे सेट किया जाए, उत्पादन के लिए नहीं।

प्रोजेक्ट इनिशियलाइजेशन

  1. संगीतकार होम डायरेक्टरी में Cort.json को repo.magento.com क्रेडेंशियल्स और जीथब एक्सेस टोकन जोड़ें
  2. निम्नलिखित कमांड का उपयोग करके प्रोजेक्ट बनाएं:

    composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .

  3. इसे .gitignore लें और अपने प्रोजेक्ट रूट में डालें। लगभग सभी कोर फाइलें / निर्देशिकाएं पहले से ही रूट में जोड़ दी गई हैं .gitignore, लेकिन निम्नलिखित 2 को भी जोड़ना बेहतर है /updateऔर /phpserver(बस। 2 2 पंक्तियों को .ignignore में जोड़ें)।

  4. प्रोजेक्ट रूट में नए गिट रिपॉजिटरी को आरम्भ करें
  5. सभी अनटैक की गई फ़ाइलों को git में जोड़ें और उन्हें कमिट करें
  6. हमेशा की तरह अपने मॉड्यूल का विकास शुरू करें (उन्हें नीचे रखें app/code/VendorName/ModuleName), अब आपके पास आपके गिट रिपॉजिटरी में केवल आपका कस्टम कोड होगा

Magento की स्थापना

  1. सुनिश्चित करें कि सभी फ़ाइल सिस्टम अनुमतियाँ आधिकारिक गाइड में उल्लिखित हैं
  2. कमांड लाइन का उपयोग करके Magento स्थापित करें, उदाहरण के लिए:

    ${project_root}/bin/magento setup:install \ --db-host=localhost \ --db-name=magento \ --db-user=root \ --backend-frontname=admin \ --base-url=http://base.url.goes.here/ \ --language=en_US \ --timezone=America/Chicago \ --currency=USD \ --admin-lastname=Admin \ --admin-firstname=Admin \ --admin-email=admin@example.com \ --admin-user=admin \ --admin-password=123123q \ --cleanup-database \ --use-rewrites=1

  3. Ubuntu पर उदाहरण के लिए, इंडेक्स क्रोन जॉब सक्षम करें:

    echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -

  4. Magento defaultमोड में चलेगी और पहले अनुरोध पर सभी अनुपलब्ध सामग्री स्वतः उत्पन्न हो जाएगी। इसलिए संकलक या स्थिर सामग्री को चलाने की आवश्यकता नहीं है
  5. [वैकल्पिक] अगर PHP स्टॉर्म का उपयोग कर रहे हैं, तो XSD सपोर्ट को सक्षम करने के लिए निम्नलिखित कमांड चलाएँ:

    bin/magento dev:urn-catalog:generate .idea/misc.xml


नमस्ते एलेक्स। प्रोजेक्ट इनिशियलाइज़ेशन स्टेप 3 - क्या आप इसे थोड़ा बढ़ा सकते हैं? क्या आपको लगता है कि आपको मैन्युअल रूप से उस उपनिर्देशिका को रूट में कॉपी करना था? (मैं सोच रहा हूं कि क्या कुछ सही ढंग से काम नहीं कर रहा है - मैं उस कदम की उम्मीद नहीं कर रहा था।)
एलन केंट

@AlanKent वर्तमान में आपको सभी Magento से संबंधित फ़ाइलों को डाउनलोड करने के लिए मिलता है vendor, जिसमें शामिल हैं magento2-base, जो एक नई परियोजना के लिए सिर्फ एक कंकाल है। निश्चित नहीं है कि यह चरण संगीतकार द्वारा स्वचालित रूप से किए जाने के लिए कॉन्फ़िगर क्यों नहीं किया गया है, यह पता लगाने की कोशिश करेंगे। .gitignoreएक और रेपो से नकल के बारे में , यह पहले से ही चर्चा की जा रही है कि इस कदम को कैसे समाप्त / सरल बनाया जाए।
एलेक्स पालिरुष

चरण 3 की आवश्यकता नहीं है। फ़ाइलें / फ़ोल्डर के marshaling कदम 2. दौरान किया जाता है
मैडी

धन्यवाद @ मैडी। @AlanKent, magento2-baseरूट पर कॉपी करना अब आवश्यक नहीं है (केवल सत्यापित), हाल ही में तय किया गया लगता है। इस कदम को जवाब से हटा दिया।
एलेक्स पालीरश

1) मैंने अपने सभी कोड रेपो पर डाले, पहले से ही अनस्टाल्ड और सब कुछ, जब मैं उस रेपो से खींचता हूं और सेटिंग्स को बदल देता हूं तो एडमिन pangel और db क्रेडेंशियल्स को किले में डाल देगा, क्या सब कुछ सही से काम करेगा? 2) चूंकि मैं पुश के दौरान var / pub / folder को बाहर करना भूल गया, क्या मैं उन्हें पूरी तरह से हटा सकता हूं, इसलिए वे रिमोट रेपो पर डिलीट कर सकते हैं, क्या वे वापस रीजनरेट करेंगे? धन्यवाद।
लाचेज़र रेचेव

25

प्रारंभिक और स्थापना के लिए एलेक्स के कदमों के बाद से अधिकांश चरणों के लिए अपने जवाब का पालन करें, केवल उन मतभेदों की मैं सिफारिश करूंगा:

गिट विन्यास

केवल अपनी गिट रिपॉजिटरी में निम्नलिखित फाइलों को स्टोर करें:

  • composer.json
  • composer.lock
  • एप्लिकेशन / आदि / config.php

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

तैनाती

विकास के दौरान आप कमांड के साथ अपने वातावरण (देव / परीक्षण) पर मॉड्यूल को अपडेट करते हैं:

composer update

यह उस संस्थापन पर संस्थापित संस्करण के साथ कंपोज़र.लोक फ़ाइल को अद्यतन करेगा।

चरणबद्ध / पूर्व-उत्पादन / उत्पादन पर आप कमांड के साथ एक ही सेटअप बना सकते हैं / स्थापित कर सकते हैं:

git pull
composer install

यह सभी समान मॉड्यूलों को स्थापित करेगा जैसा कि dev / test में उपयोग किया जाता है ताकि यह सुनिश्चित किया जा सके कि उत्पादन से प्रकाशन से पहले परीक्षण उसी मॉड्यूल संस्करणों के साथ किया जाता है जैसा कि इसके साथ विकसित किया गया है।

निम्न आदेशों को चलाने के लिए स्थापना के बाद:

bin/magento setup:upgrade
bin/magento setup:di:compile (or setup:di:compile-multi-tenant)
bin/magento setup:static-content:deploy

यह डेटाबेस (स्कीमा और डेटा अपग्रेड) को अपडेट करेगा, डीआई कॉन्फ़िगरेशन उत्पन्न करेगा और सभी स्थिर दृश्य फ़ाइलों को तैनात करेगा।


शायद यह जुड़नार उत्पन्न करने के बजाय नमूना डेटा का उपयोग करने के लिए समझ में आता है? फिक्स्चर केवल सबसे महत्वपूर्ण मॉड्यूल को आबाद करते हैं और केवल प्रदर्शन परीक्षण के लिए उपयोगी लगते हैं।
एलेक्स पालिरुष

धन्यवाद, उत्पादन में एक साइट का उपयोग करते समय इसकी आवश्यकता के रूप में उस हिस्से को हटा दिया गया।
व्लादिमीर केर्खॉफ

यह बहुत बारीकी से इस दृष्टिकोण का अनुसरण करता है जो मैं भी उपयोग कर रहा हूं। यह Magento 1 के साथ-साथ (कम जटिल बिल्ड प्रक्रिया के साथ) अच्छी तरह से काम कर रहा है। संगीतकार को अपना काम करने दें, यह मेरे अनुभव में वास्तव में अच्छी तरह से तैनाती के लिए काम करता है, और हमने आपके साथ .ignignore रणनीति के साथ जटिलताओं के अलावा कई डाउनसाइड नहीं देखे हैं। गिट में छोटे पदचिह्न का पालन न करें।
एपीपोड

यह इंस्टॉल 'इंटीग्रेटर' तरीके से दिखता है। यह विक्रेता / Magento / * में रिपोज जोड़ता है। कोई कोड ऐप / कोड / .. और अन्य डायर में नहीं होगा। मेरे पास .zip पुरालेख के रूप में Magento के 2 कोर डायर कैसे होंगे। क्या कंपोजर को एक मॉड्यूल (अन्य गिट रेपो) के माध्यम से जोड़ना और एप्लिकेशन / कोड / ... स्वचालित रूप से समाप्त करना संभव है?
अस्पष्ट

4
जोखिम भरा, संगीतकार एक परिनियोजन उपकरण नहीं है। प्रोडक्शन में चलने पर कंपोज़र इंस्टाल होने पर कुछ फेल हो जाता है ...
क्लॉडिया क्रैंग्ना

3

पुन: .ignignore, 2.2 के बाद आधिकारिक मैगेंटो का जवाब होगा "config.php git में जाता है, env.php" नहीं बनता है।

हम विस्तार विकास और ग्राहक साइटों के करीब आंतरिक देव को पाने के लिए मीडियाविकि जैसे संगीतकार प्लगइन्स देख रहे हैं। अभी भी खोज, अभी तक अंतिम नहीं है।

मुझे ../othergitrepo/app/code/*/*मॉड्यूल लेने के लिए पथ के साथ कम्पोजर "पाथ" रिपॉजिटरी प्रकार का उपयोग करना बहुत पसंद है , लेकिन यह सिमिलिंक का उपयोग करता है जो यूनिसन या समान का उपयोग करके देव वातावरण के साथ इतनी अच्छी तरह से काम नहीं करता है।


3

हम एक अलग दृष्टिकोण चलाते हैं जिसमें एक अलग बिल्ड-सर्वर / प्रक्रिया शामिल नहीं है , हम स्थानीय रूप से उत्पादन में जैसे विकसित होते हैं

हम तो उत्पादन के लिए आवश्यक सभी फाइलों को प्रतिबद्ध करते हैं । हम तो बस सर्वर में बदलावों को तैनात करते हैं और अपग्रेड कमांड चलाते हैं।

एक ऐसा संस्करण प्राप्त करना जो विकास के लिए उपयुक्त है, लेकिन उत्पादन मोड में भी चलता है, यह मुश्किल हिस्सा था और अभी भी सही नहीं है, लेकिन अब हमें एक नुस्खा मिल गया है जो काम करता है।

कारण यह है कि हम चाहते हैं कि 100% नियंत्रण किस कोड के उत्पादन में जाता है। चूंकि magento2 कोड का एक टन उत्पन्न करता है, इसलिए हमें इसे सभी प्रभावों को समझने में सक्षम होने के लिए स्थानीय रूप से चलाना चाहिए और उत्पादन में जैसे डिबग करने में सक्षम होना चाहिए।

मुझे पता है कि यह वह नहीं है जो कई लोग करने की सलाह देते हैं लेकिन हमारे लिए यह सबसे अच्छा काम करता है।

फ्रंटएंड-सेटअप स्टेप्स

इन लिपियों को काम करने के लिए अपनी दुकान को अपने env.php में उत्पादन मोड पर सेट करने के लिए और अपने विषय को सेटअप करने के लिए dev/tools/grunt/configs/themes.js। (निम्नलिखित कदमों को एक खेल की किताब में डाल दिया गया)

  1. हटाना var/cache
  2. हटाना var/view_preprocessed
  3. हटाएं pub/static/*(.htaccess को न हटाएं)
  4. हटाना var/composer_home
  5. Daud php bin/magento cache:flush
  6. Daud php bin/magento setup:static-content:deploy %your_languages%
  7. उन सभी विषयों / भाषाओं को हटा दें जिन्हें आप वास्तव में पब / स्टेटिक / फ्रंटेंड से उपयोग नहीं करते हैं
  8. कम फ़ाइलों की हार्ड-कॉपी निकालें pub/static/frontend
  9. Daud php bin/magento dev:source-theme:deploy --locale="%your_language%" --theme="%your_theme%" css/styles-m css/styles-l css/email css/email-inline
  10. वैकल्पिक: हम चरण 9 में बनाए गए पूर्ण सिम्बलिंक को बदलने के लिए एक बैश-स्क्रिप्ट का उपयोग करते हैं, रिश्तेदार में, यह vm के बाहर से ग्रंट को चलाने के लिए संभव बनाता है।
  11. Daud grunt less:your_theme

बैकएंड / डाय-सेटअप चरण

  1. हटाना var/cache
  2. हटाना var/generation
  3. हटाना var/composer_home
  4. हटाना var/di
  5. Daud php bin/magento cache:flush
  6. Daud php bin/magento setup:di:compile

इस @ ग्रीनोन83 के लिए धन्यवाद, यह वह तरीका है जिसे मैंने मूल रूप से अपनाया है हालांकि मैं अपने बैकएंड को फ्रंट एंड के हिस्से के रूप में उत्पन्न करता हूं। मैं सेटअप का उपयोग कभी नहीं: di: संकलन के रूप में मुझे लगता है कि यह चीजें ऊपर शिकंजा! एक बात मुझे समझ में नहीं आती है कि सेटअप क्यों है: स्थैतिक-सामग्री: तैनाती उत्पन्न / कोड में फ़ाइलें बनाती है (स्थान आपके पोस्ट से बदल गया है)? मैंने पाया है कि अगर मैं उत्पादन साइट में अपनी साइट के साथ उत्पन्न / कोड के सभी को हटा देता हूं, तो जब मैं साइट के चारों ओर ब्राउज़ करता हूं तो ये फाइलें स्वचालित रूप से बनाई जाती हैं।
पेड्रोकेटीएफसी

2

आप इन फ़ाइलों को भी अनदेखा कर देना चाहिए
/app/etc/config.php
/app/etc/env.php
/.idea/workspace.xml // phpstorm


2
यदि आप config.php को अनदेखा करते हैं, तो आपको दूसरे वातावरण में धकेलने के बाद फिर से नए एक्सटेंशन को सक्षम करने की आवश्यकता होगी, इसलिए इसे अपने रिपॉजिटरी में शामिल करना बेहतर है।
व्लादिमीर केर्खॉफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.