Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

स्टेजिंग एनवायरमेंट को सेट अप करना

by
Read Time:18 minsLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

एक प्रोजेक्ट पर लोकल रूप से काम करना और प्रोडक्शन सर्वर में संशोधन को पुश करना एक आम बात है, लेकिन जिस काम को लोग अक्सर छोड़ देते हैं वह स्टेजिंग सर्वर होता है. एक स्टेजिंग सर्वर प्रोडक्शन और डेवलपमेंट का एक मिश्रण है; आप अपने एप का टेस्ट करते हैं जैसे कि यह प्रोडक्शन में था। आइए इन मुद्दों में से कुछ की समीक्षा करें जिन पर आपको विचार करना होगा, साथ ही एक प्रोडक्शन Platform as a Service (PAAS) के रूप में प्लेटफार्म को दोहराने के लिए कुछ आवश्यक कदम भी देखें।

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

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

आप किन मुद्दों को ढूंढ सकते हैं और ठीक कर सकते हैं क्योंकि स्टेजिंग एरिया में आपके प्रोडक्शन एनवायरमेंट के जैसा ही सॉफ्टवेयर है। यह आपकी लोकल मशीन के उलट है, जहां आप के पास सॉफ्टवेयर के बहुत सारे वर्जन हो सकते हैं (e.g. PHP 5.3 vs PHP 5.4) या यहां तक की अलग अलग फीचर्स भी। मैंने कोड को पुश किया है जिसमें file_get_contents को केवल यह पता लगाने के लिए कॉल किया गया है कि प्रोडक्शन सर्वर उस फंक्शन को सपोर्ट नहीं करता है।

तो आप एक स्टेजिंग सर्वर को सेट करने के बारे में कैसे आगे बढ़ते हैं? खैर, पहला स्टेप थोड़ी सी टोह लेने के लिए है।


यह सब कुछ डिटेल में है (ज्यादातर)

हर किसी के साथ समस्याएं होती हैं, खासतौर पर जब आप डेडलाइन पर पहुंचते हैं।

एक स्टेज एनवायरमेंट बनाना आपके प्रोडक्शन एनवायरमेंट के लिए स्पेसिफिक है। कोई भी मैजिक समाधान नहीं है जो हर स्थिति में काम करता हो। लेकिन ज्यादातर मामले एक जैसे पेटर्न को फॉलो करते हैं, और मैं सभी महत्वपूर्ण बिंदुओं को कवर करूंगा जैसे-जैसे हम इसके साथ आगे बढ़ते हैं।

यह मानना उचित है कि अधिकांश लोग अपने ऐप्स को किसी प्रकार के वर्जनिंग टूल (जैसे GIT) के साथ डेप्लॉय करते हैं। अजीब मोको पर जिस पर आप एक पुराने प्रोजेक्ट पर काम कर रहे हैं जो अभी भी FTP का उपयोग करता है, ftploy.com या deployHQ.com जैसी साइटें GIT और आपके सर्वर के बीच बफर के रूप में कार्य कर सकती हैं। Jeffrey Way ने एक इन्फोर्मटिव वीडियो को एक साथ रखा है कि इसे कैसे सेटअप किया जाए।

GIT के अलावा, आपको अपने प्रोडक्शन सर्वर द्वारा ऑफर की जाने वाली लैंग्वेज, सॉफ्टवेयर, और “special” फीचर्स के बारे में सोचना होगा। मैं एक PHP पर आधारित PAAS का उपयोग करता हूं, जिसका नाम Fortrabbit है, क्योंकि वह अप-टू-डेट PHP-Apache, और GIT का सपोर्ट ऑफर करते हैं। वह आप के GIT कमिट मैसेज में एक कीवर्ड जोड़ने की क्षमता भी प्रदान करते हैं जो आप के प्रोजेक्ट की डिपेंडेंसीज को इंस्टॉल करने के लिए कंपोजर को ट्रिगर करता है।

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

तो किसी और बात के बिना, आइए इसके अंदर कूदते हैं।


सर्वर बनाना

एक स्टेजिंग एनवायरमेंट बनाना आपके प्रोडक्शन एनवायरमेंट के लिए स्पेसिफिक है।

बहुत सारे ऑपरेटिंग सिस्टम है जिन्हें आप सर्वर पर चला सकते हैं। Fortrabbit अपने सर्वर्स पर Debian Squeeze को चलाता है, और क्योंकि हम उन्हें मैच करने की कोशिश कर रहे हैं, मैंने भी उसे चलाने का भी निर्णय लिया।

मैं इसे सेट अप करने के लिए Vagrant का उपयोग करूंगा। चिंता ना करें अगर आपने कभी भी Vagrant का उपयोग नहीं किया है; हम कुछ भी एडवांस नहीं करेंगे। सुनिश्चित करें कि आपके पास VirtualBox और Vagrant इंस्टॉल हो (Vagrant VirtualBox के लिए एक CLI है; इसलिए VirtualBox की आवश्यकता है)।

वगरेंट एक ऑपरेटिंग सिस्टम का बेस ‘box’ के रूप में वर्चुअल स्नैपशॉट लेता है, और फिर आप उसकी इमेज से कई VMs बना सकते हैं। तो सबसे पहले हमें Debian Squeeze के लिए बेस बॉक्स डाउनलोड करने की आवश्यकता है। मुझे बिल्कुल यकीन नहीं है कि मेरी कॉपी कहां से आती है, इसलिए मैंने उसे डाउनलोड और उपयोग करने के लिए DropBox में अपलोड किया। इंस्टॉल करने के लिए, टर्मिनल विंडो खोलें और टाइप करें:

यह Vagrant में ‘debian’ नाम से एक बॉक्स जोड़ता है। अब हम अपने स्टेजिंग एरिया के लिए इस बॉक्स का एक इंस्टेंस बना सकते हैं। सबसे पहले, आइए एक नया फोल्डर बनाते हैं:

इसके बाद, Vagrant कॉन्फ़िग फाइल को बनाएं यह टाइप करके:

यह एक कॉन्फ़िग फाइल बनाता है, जिसका नाम “VagrantFile” है, जिसमें आपके सर्वर के लिए सभी सेटिंग्स शामिल है। जब आप इसे खोलते हैं तो यह बहुत भरा हुआ लगता है, लेकिन अधिकतर लाइंस कमैंट्स वाली होती हैं। आपको केवल उस लाइन को अन-कमेंट करने की जरूरत है जो कहती है: config.vm.network :bridged। अन्य सभी कमेंट को हटाने से आपको ऐसी फाइल मिलती है जो इस तरह दिखती है:

यह ऑप्शन Vagrant को हमारे Debian Squeeze बेस बॉक्स के आधार पर एक नई वर्चुअल मशीन बनाने के लिए बताता है। फिर यह नेटवर्क मोड को ‘bridged’ पर सेट करता है। एक bridged नेटवर्क वाला VM आपके राउटर में एक नई फिजिकल मशीन के रूप में दिखाई देता है, इसलिए यह ऑटोमेटिक रूप से अपना अपने स्वयं IP एड्रेस रिट्रीव करता है। यह आपको अपने नेटवर्क पर किसी भी डिवाइस से मशीन तक पहुंचने देता है (संभवत यदि आप अपने राउटर कॉन्फ़िगर करते हैं तो आपके नेटवर्क के बाहर)।

अब, हम अपने VM को कमांड के साथ लॉन्च कर सकते हैं: “vagrant up” (quotes के बिना)

आपको अपने VM बना Vagrant के आउटपुट को देखना चाहिए। यदि आपके कंप्यूटर में नेटवर्क से जुड़े कई NIC है, तो Vagrant आप को NIC को चुनने के लिए prompt करेगा।

हम लॉग इन करने के लिए SSH  का उपयोग करेंगे, लेकिन हमें लॉगइन करने के लिए Vagrant की बिल्ट-इन “vagrant ssh” कमांड का उपयोग करना होगा। Vagrant की बेस्ट प्रैक्टिस के अनुसार, सभी बॉक्सेस में “vagrant” नाम का यूज़र होना चाहिए, दोनों रूट और vagrant, “vagrant”। Vagrant यूजर sudo यूजर के रूप में जोड़ा जाता है जिसे पासवर्ड एंटर करने की आवश्यकता नहीं होती है ताकि आप sudo कमांड का उपयोग कर सकें।

आइए आगे बढ़े और सरवर के सॉफ्टवेयर को सेट करें।


सॉफ्टवेयर

Fortrabbit के सेटअप में शामिल हैं:

  • Apache 2.2
  • PHP 5.4
  • Composer

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

हम शुरू करने के लिए तैयार हैं। सुनिश्चित करें कि आपके टर्मिनल विंडो SSH के द्वारा सरवर में खुली है और लॉगइन है। सबसे पहले sources.d डायरेक्टरी में एक नई फाइल जोड़ कर APT ( पैकेज मैनेजर) को dotdeb रेपो में जोड़ें:

यह vim (एक टेक्स्ट एडिटर) में dotdeb.list नाम की एक नई फाइल खोलता है। नाम महत्वपूर्ण नहीं है क्योंकि यह डायरेक्टरी में सभी फाइलें APT मैं पढ़ी जाती हैं। हमें इस फाइल में चार लाइनों को जोड़ने की जरूरत है। यदि आपने VIM क कभी भी उपयोग नहीं किया है, तो बस इंसर्ट मोड में प्रवेश करने के लिए “i” टाइप करें और अगली चार लाइनों को कॉपी/पेस्ट करें:

सेव करने के लिए, esc key दबाएं और टाइप करें :wq। यह लिखने और क्विट करने की कमांड है, जिसका मूल रूप से अर्थ है सेव करें और बाहर निकले।

एंटर दबाना फाइल को सेव करता है और आपको कमांड लाइन पर रिटर्न करता है।

हमने अब रेपो को जोड़ा है, लेकिन  हम उन्हें उपयोग कर सके इससे पहले सिग्नेचर जोड़ने की जरूरत है। GNU key जोड़ने के लिए निम्न में टाइप करें:

यह dotdeb key डाउनलोड करता है और इसे सिग्नेचर सोर्स के रूप में जोड़ता है। टाइप खींचने के लिए अब APT को अपडेट करें:

इसमें एक मिनट या इससे भी अधिक का समय लग सकता है, लेकिन आपके पास यह समाप्त होने पर APT में लिस्टेड सभी dotdeb पैकेज होंगे। Dotdeb को कैसे सेट किया गया है और APT डिपेंडेंसी को कैसे लोड किया जाता है, इस प्रकार हम टाइप करके एक ही समय में Apache और PHP को इंस्टॉल कर सकते हैं।

इस सिंगल लाइन के साथ, APT Apache2 और PHP5  को इंस्टॉल और कंफीग्र्ड करता है। यदि आप Fortrabbit के memcache  ऐडऑन का उपयोग करते हैं, तो आप इसे इसके साथ इंस्टॉल कर सकते हैं:

लेकिन मैं इस आर्टिकल में हमारे उदाहरण में memcache में नहीं जा रहा हूं।

अब हमें उन एक्सटेंशन को इंस्टॉल करने की जरूरत है जो कि Fortrabbit का उपयोग करते हैं। निम्न कमांड को चलाएं:

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

पहली कमांड इंस्टॉलर को डाउनलोड और एक्सेक्यूट करती है; दूसरी कमांड कंपोजर को bin फ़ोल्डर में ले जाती है ताकि हम पाथ घोषित किए बिना इसका उपयोग कर सकें। आइए कॉन्फ़िगरेशन पर जाएं।


Apache सेट अप करना

संभावनाएं अच्छी हैं कि आप एक से अधिक प्रोजेक्ट्स पर काम कर रहे हैं। यदि ऐसा है, तो प्रत्येक प्रोजेक्ट के लिए एक स्टेजिंग सर्वर बनाना बहुत अधिक ओवरहेड बन जाता है। एक सर्वर पर मल्टीप्ल साइटों की अनुमति देने के लिए, हमें Apache में नाम पर आधारित वर्चुअल होस्ट जोड़ने की आवश्यकता है, और प्रत्येक प्रोजेक्ट के लिए डायरेक्ट्रीज और रिपोज़ (repos) को अलग करना चाहिए।

आइए वर्चुअल होस्ट से शुरू करें।

मैं vim का उपयोग जारी रखने जा रहा हूं, लेकिन पता है कि यदि आप अपने प्रोग्राम में काम करना चाहते हैं, तो आप या तो अपने कंप्यूटर पर बनाए गए staging_server फ़ोल्डर में कॉपी और पेस्ट या सेव कर सकते हैं।

वह फ़ोल्डर आपके VM में साझा किया जाता है, और आप vagrant रूट डायरेक्टरी में फ़ाइलों तक पहुंच सकते हैं। इसके बाद आप क्रमशः फ़ाइलों को प्रतिलिपि बनाने या स्थानांतरित करने के लिए: sudo cp /vagrant/file newfile या sudo mv /vagrant/filee newfile का उपयोग कर सकते हैं।

नया वर्चुअल होस्ट बनाने के लिए, हमें /etc/apache2/sites-available/ डायरेक्टरी में एक फ़ाइल बनाने की आवश्यकता है। VIM के साथ ऐसा करने के लिए, निम्न टाइप करें:

अंदर, निम्न को दर्ज करें (इन्सर्ट मोड के लिए "i" दबाएं):

पहली लाइन वर्चुअल होस्ट घोषित करती है जो पोर्ट 80 पर किसी भी IP पर रिक्वेस्ट्स की सुनती है। अगला, हम सर्वर के एडमिन ईमेल और सर्वर का नाम सेट करते हैं। ईमेल एरर रिपोर्टिंग उद्देश्यों के लिए है, और इस वर्चुअल होस्ट को पढ़ने के लिए सर्वर नाम ऑप्शन Apache को बताता है। नियमित वर्चुअल होस्ट IP से काम करते हैं। उदाहरण के लिए, प्रत्येक vhost एक अलग IP पर सुनता है; इस तरह Apache उन्हें अलग करता है।

चूंकि आपके पास शायद एक IP है, इसलिए हम नाम पर आधारित वर्चुअल होस्ट का उपयोग कर सकते हैं, जिससे आप एक ही IP पर एक अलग नाम प्रदान कर सकते हैं।

हमारे उदाहरण में, demo.dev पर डायरेक्टरी किसी भी रिक्वेस्ट को इस वर्चुअल होस्ट द्वारा उठाया जाता है।

अगली लाइन डॉक्यूमेंट के रूट फ़ोल्डर को सेट करती है। यह वह जगह है जहां अपाचे इस vhost के लिए फ़ाइलों को रिट्रीव करता है। Directory डायरेक्टिव के अंदर स्टेटमेंट इस vhost के लिए अनुमति सेट करती है। मैं बहुत अधिक विस्तार में नहीं जाऊंगा, लेकिन हम पहले डायरेक्टरी Apache ऑप्शंस को सेट करते हैं, फिर हम सेट करते हैं कि एक .htaccess फ़ाइल में ओवरराइड किया जा सकता है, और आखिरकार हम सेट करते हैं कि साइट पर कौन पहुंच सकता है (हर कोई हमारे मामले में कर सकता है)।

आखिरी दो लाइन्स Apache को बताती हैं कि लॉग फ़ाइल का नाम क्या है और लॉग को क्या लिखना है। हमारी लॉग फ़ाइल को इस VM पर /var/log/apache2/ पर स्थित Apache लॉग फ़ोल्डर में demo.log कहा जाता है।

इस vhost को इनेबल करने के लिए, निम्न टाइप करें:

यह साइट-इनेबल फ़ोल्डर में फ़ाइलों के बीच साइट-अवेलेबल फ़ोल्डर में फ़ाइल के बीच एक सिम्लिंक (symlink) बनाता है। इस कमांड को चलाने के बाद, आपको Apache को रीस्टार्ट करने के लिए कहा जाता है। यदि आप Apache को रीस्टार्ट करने का प्रयास करते हैं तो आपको एक एरर मिलेगा क्योंकि हमने साइट की डायरेक्टरी नहीं बनाई है। यह demo फ़ोल्डर बनाने के लिए आसानी से तय किया गया है जिसे हमने vhost फ़ाइल में रिफरेन्स किया है:

हम नहीं चाहते हैं कि रूट यूजर फ़ोल्डर का मालिक हो, इसलिए इसे chown कमांड के साथ vagrant यूजर में बदलें:

अब Apache को रीस्टार्ट करें:

हमारी नई साइट अब पूरी तरह फंक्शनल होनी चाहिए। हमारा अगला कदम GIT सेटअप करना है।


कुछ GIT मैजिक को फॉलो करना

सुनिश्चित करें कि आप cd ~ टाइप करके होम डायरेक्टरी में हैं। रेपो के लिए नया फ़ोल्डर बनाएं: mkdir demo.git, फ़ोल्डर में एंटर करें, और एक नया, बेयर GIT रेपो शुरू करें:

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

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

आप देख सकते हैं कि पुश प्रोसेस तीन स्टेप्स के माध्यम से चलता है। यह कनेक्ट होने पर एक अपडेट मैसेज प्रदर्शित करता है, और यह साइट को डायरेक्टरी में तैनात करता है। अंतिम चरण में सबकुछ इंस्टॉल होता है यदि कमिट मैसेज में कीवर्ड "[trigger:composer]" होते हैं। फिर इन तीन स्टेप्स को खत्म करने के बाद, आपको ">> All Done" दिखाया गया है

हमारे हुक बनाने से पहले, मैं रंगों के बारे में बात करना चाहता हूं।

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


टर्मिनल का रंग

टर्मिनल सोलह ANSI रंगों के साथ आते हैं जिन्हें पूरे टर्मिनल में कॉन्फ़िगर और इस्तेमाल किया जा सकता है। यहां iTerm2 सेटिंग्स स्क्रीन की एक तस्वीर है, जो सोलह रंग स्लॉट दिखाती है:

आप टर्मिनल में एस्केप करैक्टर को टाइप करके, खुले स्क्वायर ब्रैकेट के बाद, और उसके बाद रंग का कोड टाइप कर सकते हैं। आप इस इमेज में देख सकते हैं कि रंग दो लाइन्स में विभाजित हैं: एक "Normal" और अन्य "Bright" लेबल किया गया है। सामान्य रंगों के लिए कोड 30-37 के बाद अक्षर "m" होते हैं, और ब्राइट रंग 90-97 से फिर से होते हैं। आप echo का उपयोग कर अपनी टर्मिनल विंडो में इसका परीक्षण कर सकते हैं। एस्केप करैक्टर को बनाने के लिए, ctrl-v टाइप करें और उसके बाद ctrl-[। आपको एक ऐसा करैक्टर मिलेगा जो ^[ जैसा दिखता है, लेकिन अगर आप "^[" (shift-6 और फिर स्क्वायर ब्रैकेट खोलें) टाइप करते हैं तो यह काम नहीं करेगा। तो टर्मिनल विंडो में टाइप करें:

दोबारा, पहला ^[ टाइप नहीं किया गया था लेकिन ctrl-v के साथ बनाया गया था और फिर ctrl-[0m करैक्टर कोड रीसेट कोड है; यह सभी फॉर्मेटिंग को हटा देता है। ऐसा इसलिए है क्योंकि अगले शब्द के बाद रंग कोड समाप्त नहीं होते हैं, वे तब तक जारी रहते हैं जब तक उन्हें एक अलग कोड प्राप्त न हो जाए।

यदि सही तरीके से किया जाता है, तो उपरोक्त कोड लाल रंग में "hello world" शब्द आउटपुट करता है (जब तक कि आपके पास उस स्लॉट को एक अलग रंग पर सेट न किया जाए)।

बाकी ट्यूटोरियल के दौरान, मैं कमांड में रंग जोड़ रहा हूं। साथ में फॉलो करने या उन्हें छोड़ने के लिए स्वतंत्र महसूस करें; इन्हे करना कोई बहुत जरूरी नहीं हैं। लेकिन अगर आप रंगों का उपयोग करना चाहते हैं, तो मेरी color-helping क्लास का उपयोग करने में संकोच न करें। अब, हुक लिखने के लिए वापस चलो।


हुक बनाना

यदि आप Fortrabbit पिक्चर पर एक और नज़र डालते हैं, तो आप देखेंगे कि यह रेपो को अपडेट करने से पहले एक मैसेज प्रदर्शित करता है "Step 1: Updating repositoty"। इसे सही तरीके से करने के लिए, हमें यह मैसेज प्री-रिसीव हुक में रखना होगा, जो रेपो अपडेट होने से पहले एक्सेक्यूट होता है। टर्मिनल विंडो में टाइप करें:

यह एडिटिंग के लिए हुक खोलता है। निम्नलिखित कोड जोड़ें:

पहली लाइन OS को बताती है कि यह एक PHP फ़ाइल है और इसे इसी तरह चलाएं। फिर हम वेरिएबल के लिए एक कलर और रीसेट सीक्वेंस असाइन करते हैं। आखिरी स्टेप लाइन को echo करता है।

अगला हुक थोड़ा और जटिल है क्योंकि यह बाकी एक्शन्स को संभालता है। हम इसे चरण-दर-चरण लेंगे, इसलिए पहला हुक (:wq) सेव करें और अगला हुक खोलें:

रेपो अपडेट होने के बाद पोस्ट-रिसीव हुक चलाता है। हमें पहले साइट को अपडेट करना होगा और फिर कंपोजर ट्रिगर की जांच करनी होगी। यहां हमारे प्रोग्राम का स्केलेटन है, कोई नया लॉजिक को छोड़कर:

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

आप git pull जैसे कुछ का उपयोग कर सकते हैं, लेकिन ऐसा करने से एरर हो सकते हैं। अगर कोई फ़ाइल सीधे बदल दी गई थी, या यदि आप कोई commit चूक गया हैं, तो git pull आपको या तो आपकी अनट्रैक्ड  फ़ाइलों को पुल या डिलीट करने की अनुमति नहीं देगा।

ये दो सरल कमांड्स हैं, लेकिन यदि आप उन्हें हुक से ट्राई और रन करेंगे तो एक एरर प्राप्त करेंगे।

GIT हुक चलाने से पहले कुछ एनवायरनमेंट वेरिएबल सेट करता है। आप इसे दो समाधानों में से एक के साथ बाधित कर सकते हैं, और मैं आपको दोनों दिखाऊंगा।

सबसे पहले जानकारी में गुजरने, एनवायरनमेंट वेरिएबल को ओवरराइड करना है। दूसरा वेरिएबल पूरी तरह से मिटा देता है। जब मैं कंपोजर ट्रिगर पर काम करता हूं तो मैं इस उदाहरण में पहले ऑप्शन और दूसरे ऑप्शन उपयोग करूंगा। मैंने ऊपर दिए गए कमेंट को बदलें जहां यह कहता है कि "TODO Deploy to site" निम्न के साथ:

यह एनवायरनमेंट वेरिएबल को ओवरराइड करता है और उपर्युक्त फंक्शन्स को कॉल करता है। जोड़े गए -q पैरामीटर GIT को "quiet" होने के लिए कहता है, GIT को किसी भी मैसेज को echo करने से रोकता है।

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

पहली पंक्ति git log कमांड का उपयोग करके कमिट मैसेज रिट्रीव करती है और किसी भी अतिरिक्त जानकारी को बाहर करने के लिए एक विशेष फॉर्मेट में गुजरती है। इसके बाद, हम जांचते हैं कि स्ट्रिंग में विशेष ट्रिगर शब्द है, और तीसरे स्टेप और OK मैसेज को echo करें। हम कंपोजर कीवर्ड की जांच कर रहे हैं, लेकिन आप अन्य फीचर के लिए कई कीवर्ड लागू कर सकते हैं जैसे: Laravel में माइग्रेट करें या यूनिट टेस्ट चलाएं। अपने वर्कफ़्लो को बेहतर बनाने के लिए कुछ भी जोड़ें।

अंतिम स्टेप कंपोजर एक्सेक्यूट करना है। कंपोजर के दो कमांड हैं: composer install और composer update

इंस्टॉल कमांड composer.json फ़ाइल को नहीं पढ़ता है अगर उसे composer.lock मिल जाता है, और क्योंकि कुछ लोग composer.lock जोड़ सकते हैं। उनके .gitignore फ़ाइल में लॉक करें, composer update चलाने के लिए सुरक्षित है (यह हमेशा composer.json फ़ाइल को देखता है।

दूसरा इशू यह है कि कभी-कभी कंपोजर पैकेज डाउनलोड करने के लिए GIT का उपयोग करता है, और एनवायरनमेंट वेरिएबल के कारण ये प्रयास विफल हो जाते हैं। तो यहां "GIT_DIR" एनवायरनमेंट वेरिएबल को हटाने के लिए एक अच्छी जगह है। निम्नलिखित के साथ कंपोजर चलाने के लिए कमेंट को बदलें:

यह कोड सीधा साधा है। हम PHP प्रोसेस को साइट के फ़ोल्डर में ले जाते हैं, और उसके बाद GIT_DIR एनवायरनमेंट वेरिएबल को हटाते हैं ताकि GIT सामान्य रूप से फंक्शन कर सके। अंतिम लाइन कंपोजर एक्सेक्यूट करती है।


लूज एंड को टॉय अप करना

अब हमारे पास दोनों हुक सेटअप हैं, लेकिन हम अपने सर्वर का उपयोग शुरू करने के लिए पूरी तरह से तैयार नहीं हैं। सबसे पहले, हमें इन हुक एक्सेक्यूट योग्य बनाने की आवश्यकता है:

इसके बाद, साइट के फ़ोल्डर में एक GIT रेपो बनाएं। अगर हम अपने हुक चलाने की कोशिश करते हैं तो हमें एक एरर मिलेगा क्योंकि साइट का फ़ोल्डर GIT रेपो नहीं है। इस टाइप को ठीक करने के लिए:

पहली दो लाइन्स रेपो बनाती हैं, और फिर हम रेपो की उत्पत्ति के रूप में बेयर रिपॉजिटरी जोड़ते हैं।

आपको अपनी पब्लिक key को इस सर्वर के ऑथॉरिज़ होस्ट में भी जोड़ना चाहिए ताकि आप पासवर्ड के बिना GIT के माध्यम से सर्वर तक पहुंच सकें। आप अपने कंप्यूटर पर टाइप करके अपनी पब्लिक key कॉपी कर सकते हैं (VM नहीं):

फिर, इसे फ़ाइल में सर्वर पर पेस्ट करें ~/.ssh/authorized_keys:

बस इसे फ़ाइल में जोड़ें, लेकिन जो भी पहले से अंदर है उसे वैसा ही छोड़ दें।

इसके बाद, हमें इस सर्वर का IP हमारी hosts फाइल में जोड़ना होगा। IP को खोजने के लिए, टाइप करें:

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

IP लें और इसे अपने कंप्यूटर की hosts फ़ाइल में जोड़ें (VM की hosts फाइल नहीं)। मैक पर होस्ट फ़ाइल etc/hosts पर स्थित है:

इसके बाद, निम्न लाइन को जोड़ें:

यदि यह काम करता है, तो आप अपने ब्राउज़र में http://demo.dev पर नेविगेट करने में सक्षम होंगे। अभी भी अपने मैक पर, एक फ़ोल्डर बनाएं और एक GIT रेपो शुरू करें:

अगर सब कुछ ठीक हो गया, तो आपको हमारे GIT हुक से एक रिप्लाई दिखना चाहिए। http://demo.dev पर नेविगेट करने के परिणामस्वरूप आपके ब्राउज़र में "Hello World" मैसेज डिस्प्ले होना चाहिए।


निष्कर्ष

तो इस तरह आप एक स्टेजिंग एनवायरनमेंट बना सकते हैं जो एक सामान्य PAAS की फंक्शनलिटी की नकल करता है। यदि आपको साथ में परेशानी हो रही है, या आपको कई स्टेजिंग एनवायरनमेंट सेट अप करने की आवश्यकता है, तो मैंने एक स्क्रिप्ट बनाई है जो पूरी तरह से प्रोसेस को आटोमेटिक करता है। अधिक जानकारी के लिए, आप stagr.gmanricks.com पर जा सकते हैं।

मुझे उम्मीद है कि आपने आर्टिकल का आनंद लिया है। कमैंट्स में आपके पास होने वाले किसी भी प्रश्न को पूछने के लिए स्वतंत्र महसूस करें। पढ़ने के लिए धन्यवाद।

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.