Magento विकास सेटअप


23

यह सवाल विकास के माहौल को स्थापित करने की दिशा में निर्देशित है। मेरी कुछ विशिष्ट आवश्यकताएं हैं:

  1. मैं लिनक्स, विंडोज और मैक ओएस के तहत अपने समाधान का उपयोग करने में सक्षम होना चाहता हूं, क्योंकि हमारी टीम के लोग इन सभी ओएस का उपयोग करते हैं (जैसे फ्रंट एंड डेवलपर्स विंडोज / मैक का उपयोग करते हैं, बैक एंड डेवलपर्स ज्यादातर लिनक्स का उपयोग करते हैं)
  2. मुझे मॉडमैन का उपयोग करने की आवश्यकता है
  3. मुझे संगीतकार का उपयोग करने की आवश्यकता है
  4. मुझे Github के साथ-साथ अपने निजी Git रिपॉजिटरी का उपयोग करने की आवश्यकता है
  5. मुझे Netbeans या PHP तूफान की तरह एक उचित IDE की आवश्यकता है
  6. मैं बहुत अच्छा प्रदर्शन चाहता हूं

मेरा वर्तमान सेटअप वर्चुअलबॉक्स के भीतर एक वर्चुअलाइज्ड उबंटू इमेज है। सभी तीन ओएस वर्चुअलबॉक्स चला सकते हैं, इसलिए अंक 1) - 5) सभी संतुष्ट हैं।

हालांकि, वर्तमान में, मैं 6 से पूरी तरह से संतुष्ट नहीं हूं)। Ubuntu 12.04 के भीतर से समाधान चलाते समय यह विशेष रूप से सच है। विंडोज 7 के तहत वर्चुअलबॉक्स अधिक स्थिर और उत्तरदायी लगता है। हालांकि, हमारी टीम में कई लोग लिनक्स का उपयोग कर रहे हैं, इसलिए मैं समाधान में सुधार करना चाहूंगा।

क्या किसी के पास VMWare या शायद docker.io में एक तुलनीय सेटअप है और यह रिपोर्ट कर सकता है कि क्या यह अधिक स्थिर है? या किसी के पास अन्य तुलनीय समाधान / विचार हैं?


अच्छा प्रश्न! हम भी एक समान सेटअप पर काम कर रहे हैं, लेकिन इसे अभी तक हमारे नियमित वर्कफ़्लो में नहीं रखा है। जवाबों की प्रतीक्षा में।
अन्ना वोक्कल

बस एक त्वरित विचार: क्या लिनक्स पर वीएम के बिना काम करना संभव नहीं होगा और वीएम में चलने वाली हर चीज को सीधे इंस्टॉल करना होगा? या आप एक परियोजना के लिए एक वीएम का उपयोग करते हैं?
अन्ना वोक्कल

क्या आप VM को हेडलेस या GUI के साथ चला रहे हैं? और आप VM इमेज फाइल सिस्टम को होस्ट सिस्टम के साथ कैसे सिंक्रोनाइज़ कर रहे हैं? सांझे फ़ोल्डर? सांबा? (मैं मान रहा हूं कि IDE होस्ट पर चल रहा है, VM नहीं)। जो एक बड़ा बदलाव ला सकता है।
विनाय

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

1
जैसा कि अन्ना ने कहा: हम भी कुछ इस तरह से काम कर रहे हैं। हम VM इमेज बनाने के लिए वैग्रंट का उपयोग कर रहे हैं और यह काफी अच्छा काम कर रहा है। जैसा कि आप कहते हैं, प्रदर्शन (साझा फ़ोल्डरों में फ़ाइल I / O की गति के बारे में) मुख्य बात यह है कि हमें स्विच करने से पहले काम करना होगा। लिनक्स होस्ट सिस्टम के लिए एनएफएस शेयर मदद कर सकते हैं। हमारी बड़ी समस्या यह है कि हमारे अधिकांश डेवलपर्स विंडोज होस्ट सिस्टम का उपयोग करते हैं और लिंक के विपरीत विंडोज का प्रदर्शन बिल्कुल अच्छा नहीं है। मैंने इसे अब अलग-अलग लोगों से सुना है, यह सिर्फ हम नहीं हैं।
मथायस ज़ीस

जवाबों:


8

मैं फिंग पर योनि, गिट और कुछ बिल्ड स्क्रिप्ट का उपयोग करता हूं। योनि मशीन चलाने वाला डेटाबेस और वेब सर्वर, मेरे एक्सटेंशन में परिवर्तन को ट्रैक करने के लिए स्थानीय रूप से इस्तेमाल किया गया और /var/wwwमेरी योनि मशीन पर निर्देशिका को अद्यतन करने के लिए उपयोग की जाने वाली स्क्रिप्ट का निर्माण (अच्छी तरह से वास्तव में इसका उपयोग हर जगह जहां मुझे एक वातावरण बनाने की आवश्यकता है)।

Phing

संभवतः सबसे दिलचस्प हिस्सा फिंग है, जो मेरे लिए मॉडमैन + कंपोजर की तरह काम करता है। इसमें बिल्ड, सेटअप और इंस्टॉल सहित कुछ लक्ष्य निर्धारित हैं।

निर्माण आंतरिक वेबसर्वर से लक्ष्य डाउनलोड (निर्माण config में निर्दिष्ट) Magento के कुछ संस्करण और निर्माण निर्देशिका में निकालें। फिर अन्य लक्ष्य चलाएं जो फाइलों के लिए सेटअप अनुमतियों और कैश को साफ करते हैं। फिर यह स्रोत निर्देशिका में सभी फ़ाइलों के लिए सहानुभूति पैदा करता है। परिणाम में मुझे अपनी बिल्ड डायरेक्टरी में उपयोग करने के लिए सभी फाइलें तैयार हैं। अगर मैगेंटो कोर फाइलें पहले से ही बिल्ड डायरेक्टरी में हैं तो इसे डाउनलोड करना छोड़ दें और सिर्फ़ सिम्लिंक को अपडेट करें, इसलिए मैं इस लक्ष्य का उपयोग पर्यावरण के पुनर्निर्माण के लिए करता हूं, जिससे मुझे सिमिलिंक को अपडेट करने की आवश्यकता होती है। योनि मशीन के लिए स्रोत निर्देशिका /vagrant/src(साझा फ़ोल्डर) में है और निर्माण निर्देशिका है /var/www

स्थापित कुछ Magento संस्करण के लिए लक्ष्य डाउनलोड और आयात डेटाबेस डंप। फिर सेटअप लक्ष्य चलाएं।

सेटअप लक्ष्य सिर्फ सभी सेटिंग्स के साथ एक local.xml फ़ाइल बनाएँ।

मेरी कंपनी में हम यूनिट टेस्टिंग और CI टूल्स का उपयोग करते हैं, इसलिए मैगनेटो एनवायरनमेंट बनाने का यह तरीका हमें मैग्नेटो के विभिन्न संस्करणों पर अपने एक्सटेंशन का परीक्षण करने की अनुमति देता है, और इसे स्थापित किए बिना और इसके साथ चलाता है।

मैंने योनि मशीन पर एक "शॉर्टकट" बनाया है जो निर्माण के लिए पहुंच को आसान बनाता है। उदाहरण के लिए परियोजना के पुनर्निर्माण के लिए मुझे सिर्फ टाइप करने की आवश्यकता है vagrant ssh -c magebuildऔर यह स्वचालित रूप से फिंगिंग चलाएगा/vagrant निर्देशिका ।

तब मैंने अपने PHPStorm IDE में कुछ प्रमुख संयोजन के लिए इस कमांड को सौंपा है और अब मैं अपनी IDE में Alt + B दबाकर प्रोजेक्ट को फिर से बना सकता हूं। लेकिन जब से मैं सिम्बलिंक का उपयोग करता हूं, यह वास्तव में अक्सर ऑपरेशन नहीं होता है।

आवारा

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

GIT

Git में मैं केवल अपनी एक्सटेंशन फ़ाइलों को ट्रैक करता हूं, build.xmlफ़िंग के लिए और Vagrantfile। तो हर कोई जो एक वातावरण बनाना चाहता है, वह सिर्फ रिपॉजिटरी को क्लोन कर सकता है, और योनि को चला सकता है। फिर वह वीएम को तैयार करेगा और काम करने के लिए तैयार होगा। इस सारी प्रक्रिया में 1-2 मिनट का समय लगता है। यदि आप स्थानीय रूप से (वीएम का उपयोग किए बिना) प्रोजेक्ट बनाना चाहते हैं, तो आप चला सकते हैं phing build install


2

वर्तमान में मेरे विकास का माहौल उबंटू v12.04 VMWare के साथ है। मैं पूरी तरह से वीएम के अंदर, पूर्ण GUI के साथ काम करता हूं और केवल उबंटू के भीतर सांबा फाइल शेयरिंग का उपयोग करता हूं अगर मुझे अपने होस्ट ओएस से फाइलें प्राप्त करने की आवश्यकता होती है जो कि विंडोज 7 है। मैं सामान्य रूप से आंतरिक आईपी के माध्यम से नेटवर्क ड्राइव का उपयोग और मैप करता हूं। VM के लिए नेटवर्किंग के लिए NAT के माध्यम से VM। अन्य समाधानों का उपयोग करना VMWare के साझा फ़ोल्डर की तरह बहुत धीमा साबित हुआ। मैंने अपनी VMWare छवि सेटिंग में इसे अक्षम कर दिया है। हालाँकि मैं अपने होस्ट मशीन और वाइस वर्सा के लिए आसान कॉपी / पास्ता की अनुमति देने के लिए VMWare टूल स्थापित करता हूं।

जैसा कि मथायस ज़ीस ने बताया, अपने वीएम के साथ नेटवर्किंग / साझा किए गए फ़ोल्डरों के चयन में सावधान रहें क्योंकि कुछ समस्याग्रस्त साबित होंगे।

मैं वर्चुअलबॉक्स का पिछला उपयोगकर्ता था, लेकिन VMWare को अधिक स्थिर पाया और कम से कम (मेरे लिए कम से कम) प्रदर्शन करता है। लेकिन मैं आपकी आवश्यकताओं और आवश्यकताओं के अनुकूल अपने परीक्षण करूँगा, अर्थात। Vagrant VirtualBox का उपयोग करता है।

आईडीई: मैं अपनी पसंद के आईडीई के रूप में काफी बड़े पैमाने पर नेटबीन्स का उपयोग कर रहा था, लेकिन जब से सबमिशन पॉलिसी 2 के रूप में अधिक हल्के समाधान में स्थानांतरित हुआ है । मैं शायद ही कभी एक्स-डिबग उद्देश्यों और आसान रीफैक्टरिंग के लिए नेटबीन्स खोलूंगा। Netbeans, PHPStorm, Eclipse, आदि सभी जावा आधारित IDE हैं और बहुत ही भूखे हैं।

हार्डवेयर: अधिक जोड़ने के लिए, हार्डवेयर हमेशा प्रदर्शन में एक महत्वपूर्ण भूमिका होगी (स्पष्ट रूप से)। यदि आपके डेवलपर्स अभी भी प्लैटर एचडीडी का उपयोग कर रहे हैं तो मैं उनके लिए एसएसडी में निवेश करना चाहूंगा। चूंकि Magento के पास फ़ाइलों / फ़ोल्डरों की एक बहुत बड़ी मात्रा है, इसलिए यह डेवलपर्स के प्रदर्शन को बहुत तेज़ करेगा। विकास करते समय: सभी कैशिंग बंद करने के साथ, और एसवीएन / जीआईटी, या आपके आईडीई में केवल फ़ोल्डर ट्री का पता लगाने के लिए। अपने VM को पर्याप्त RAM देना भी उतना ही महत्वपूर्ण है।

मेरी होस्ट मशीन: सैमसंग SSD 512GB ड्राइव स्पेस, Win7 (64 बिट), 8GB रैम, i7 2.4GHz (8 कोर)

माई वीएम मशीन: सैमसंग एसएसडी, 30 जीबी ड्राइव स्पेस, उबंटू 12.04 (32 बिट), 3 जीबी रैम, आई 7 (4 कोरर आवंटित)।

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

यदि OS का प्रति प्रोजेक्ट चुना गया मार्ग है, तो OS, IDE, LAMP स्टैक, अपडेट / कॉन्फ़िगरेशन इत्यादि बनाए रखना एक राग बन सकता है। अंततः विकास के समय के लिए अग्रणी (और स्थानीय पर्यावरण सेटअप के लिए और भी अधिक बिल रहित समय)।

यह भी मददगार साबित हुआ है, क्योंकि मैं जल्दी से एक नया वीएम खोलने और अपने होस्ट हार्डवेयर को स्लाइस करने की आवश्यकता के बिना अन्य प्रोजेक्ट फ़ाइलों तक पहुंचने में सक्षम था। नकारात्मक पक्ष यह है कि मैं चाहता हूं कि प्रत्येक परियोजना को पर्यावरण के साथ किसी भी अप्रत्याशित मुद्दों को रोकने के लिए अन्य परियोजनाओं से चुप हो जाना चाहिए (यानी। php.ini, my.cnf, httpd.conf, आदि)। अब तक सभी परियोजनाओं के आसानी से सुलभ होने का व्यापार अधिक संसाधनपूर्ण साबित हुआ है।

फिर यह आपकी आवश्यकताओं पर निर्भर करता है और जरूरत है इसलिए हाथ से पहले उनका मूल्यांकन करें।

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

पोर्टेबिलिटी: मैंने अपने वीएम इमेज को ड्रॉपबॉक्स जैसी किसी चीज पर रखने के विचार के साथ खिलवाड़ किया है, ताकि मुझे किसी भी समय आसानी से पहुंच सके। चूँकि ड्रॉपबॉक्स जैसी सेवाओं की तुलना बिट के द्वारा की जाती है, इसलिए यह तर्कसंगत प्रतीत होता है कि केवल बिट्स जो मैंने बदला है, उसे सिंक किया जाएगा। हालाँकि यह साबित नहीं हुआ, क्योंकि मेरा मानना ​​है कि इसका इंटर्नल के साथ क्या करना है, छवि फ़ाइल को कैसे सहेजा जाता है, और मुझे अपने VM को सिंक करने के लिए पूरे दिन / रात इंतजार करना होगा।

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

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

उम्मीद है कि यह आपकी समस्या के सूचीबद्ध आइटम, # 6 के लिए अंतर्दृष्टि के साथ मदद करता है।

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