इस लेख में, हम एक रूबी ऑन रेल्स एप्लिकेशन में Capistrano कॉन्फ़िगर करेंगे। फिर हम ऐप को Ubuntu चलाने वाले क्लाउड इंस्टेंस पर डिप्लॉय करेंगे, जो आपके होस्टिंग प्रोवाइडर से स्वतंत्र है। आप चरणों को टेस्ट या दोहराने के लिए किसी भी क्लाउड सेवा, या यहां तक कि ऑन-प्रिमाइसेस सर्वर का उपयोग कर सकते हैं।
एक बार जब हम ऐप को डिप्लॉय कर लेते हैं, तो हम संक्षेप में देखेंगे कि आप AppSignal का उपयोग करके अपने ऐप के डिप्लॉयमेंट की निगरानी कैसे कर सकते हैं।
लेकिन पहले, आप पूछ सकते हैं: मुझे पहली जगह में Capistrano का उपयोग क्यों करना चाहिए?
अपने रूबी ऑन रेल्स ऐप के लिए Capistrano क्यों चुनें?
आप सोच रहे होंगे कि क्या इन दिनों डिप्लॉयमेंट के लिए Capistrano का उपयोग जारी रखना अभी भी मायने रखता है। अब हमारे पास डिप्लॉयमेंट और निरंतर एकीकरण के लिए कई टूल्स और सेवाएं उपलब्ध हैं।
लेकिन इसका उत्तर देने के लिए, हमें Capistrano की उत्पत्ति और आज तक इसके विकास को फिर से देखने की आवश्यकता है। Capistrano रिपॉजिटरी में पहला टैग 2006 में बनाया गया था। इसका उद्देश्य DSL का उपयोग करके कई मशीनों पर समानांतर में SSH के माध्यम से कमांड को दूरस्थ रूप से निष्पादित करने की अनुमति देना था। तब से, Capistrano प्रत्येक संस्करण में कई विशेषताओं को जोड़कर विकसित हुआ है।
वर्तमान में 16 वर्षों के बाद संस्करण 3 पर, Capistrano सक्रिय रूप से विकसित होना जारी रखता है और अब स्वचालित डिप्लॉयमेंट स्क्रिप्ट बनाने के लिए एक फ्रेमवर्क के रूप में जाना जाता है।
तो यह अब केवल दूरस्थ मशीनों पर कमांड चलाने का एक टूल नहीं है। Capistrano की विशेषताओं के अलावा, कई प्लगइन्स और अन्य जेम्स विशेष रूप से Capistrano के साथ चलते हैं।
इस और तथ्य के कारण कि एक बड़ा समुदाय अभी भी Capistrano का उपयोग करता है, यह स्वचालित डिप्लॉयमेंट के लिए एक बेहतरीन टूल बना हुआ है।
अपने रूबी ऑन रेल्स ऐप में Capistrano जोड़ना
सबसे पहले, आपको Capistrano के साथ एकीकृत करने के लिए एक रूबी ऑन रेल्स एप्लिकेशन कॉन्फ़िगर करना होगा। आप Capistrano के दस्तावेज़ीकरण का पालन कर सकते हैं। हालांकि, इसमें इस पोस्ट के दायरे से अधिक जानकारी है। इसलिए सरलता के लिए, इस लेख में केवल आवश्यक चरण और कॉन्फ़िगरेशन शामिल हैं जिनकी आपको आवश्यकता होगी।
कॉन्फ़िगरेशन शुरू करने के लिए, अपने Gemfile के विकास अनुभाग में Capistrano जेम जोड़ें:
आपको अपने डेटाबेस पर माइग्रेशन चलाने और उन एसेट्स को संभालने के लिए capistrano-rails जेम की आवश्यकता होगी जिन्हें हम अगले अनुभागों में देखेंगे।
अब Capistrano को अपने एप्लिकेशन में जोड़ने के लिए bundle install चलाएं:
फिर आप Capistrano इंस्टॉल कर सकते हैं:
यह कमांड Capfile नामक एक फ़ाइल बनाएगा जो आवश्यक लाइब्रेरीज़ को इम्पोर्ट और कॉन्फ़िगर करता है। इसके अलावा, config फोल्डर के अंदर बनाई गई deploy.rb नामक एक फ़ाइल में Capistrano के साथ डिप्लॉयमेंट में शामिल की जाने वाली सभी कॉन्फ़िगरेशन होंगी।
नोट: Capistrano स्टेजिंग और प्रोडक्शन दोनों वातावरण के लिए deploy.rb कॉन्फ़िगरेशन को ओवरराइड करने के लिए एक फ़ाइल बनाता है, लेकिन इस लेख में यह शामिल नहीं होगा।
इसके साथ, आप अपने रूबी ऑन रेल्स एप्लिकेशन और सर्वर के बीच कॉन्फ़िगरेशन और संचार शुरू करने के लिए तैयार हैं।
आपके रेल्स ऐप के लिए Capistrano के साथ सर्वर कॉन्फ़िगरेशन
इस चरण में, हम Capistrano कॉन्फ़िगरेशन फ़ाइल में निर्देश जोड़ेंगे। निर्देश आपके सर्वर को बताएंगे कि आपका ऐप कहां डिप्लॉय किया जाएगा। यह वह जगह है जहां हम एक्सेस जानकारी और सुरक्षा कॉन्फ़िगरेशन को परिभाषित करेंगे।
यह सुनिश्चित करने के लिए कि आपका प्रोडक्शन वातावरण विकास में आपके द्वारा उपयोग किए जाने वाले रूबी के समान संस्करण को चलाता है, रूबी संस्करण प्रबंधक का उपयोग करें, जैसे RVM या rbenv (Capistrano दोनों का समर्थन करता है)।
इस लेख में, हम RVM का उपयोग करेंगे। सुनिश्चित करें कि आपके विकास मशीन और प्रोडक्शन सर्वर पर RVM इंस्टॉल है। साथ ही, जांचें कि आपका रूबी संस्करण आपके वातावरण और प्रोजेक्ट में समान है।
capistrano-rvm जेम जोड़ना
Capistrano प्रोजेक्ट एक जेम प्रदान करता है जिसे capistrano-gem कहा जाता है जो आपको RVM को आसानी से कॉन्फ़िगर करने देता है। इसे अपने प्रोजेक्ट में शामिल करने के लिए, इसे अपने विकास समूह के भीतर Gemfile में जोड़ें, और फिर से bundle install चलाएं।
capistrano-rvm इम्पोर्ट के साथ अपना Capfile अपडेट करें:
डिप्लॉय फ़ाइल में, रूबी संस्करण और RVM का पथ सेट करने के लिए एक कॉन्फ़िगरेशन जोड़ें (विशेषकर यदि आपने RVM इंस्टॉल करने के लिए एक अलग पथ का उपयोग किया है)।
यदि रूबी का कोई संस्करण परिभाषित नहीं है, तो Capistrano आपके एप्लिकेशन को डिप्लॉय किए जाने वाले सर्वर पर आपके द्वारा इंस्टॉल किए गए नवीनतम संस्करण को चुनता है।
Capistrano::RVM में RVM के लिए अन्य सेटिंग्स हैं, लेकिन यहां दिखाए गए वे हैं जिन्हें आपको शुरू करने के लिए आवश्यकता होगी।
अपना सर्वर कॉन्फ़िगरेशन सेट करें
डिप्लॉयमेंट के लिए एक उपयोगकर्ता को परिभाषित करना अच्छी प्रथा है। अपने सर्वर पर डिप्लॉयमेंट शुरू करने से पहले इन चरणों का पालना करना न भूलें:
- अपनी स्थानीय मशीन पर उत्पन्न पब्लिक की को
~/home/YOUR_USER/.ssh/authorized_keysफ़ाइल में जोड़ें। - एक की बनाएं और कोड रिपॉजिटरी में पब्लिक की शामिल करें। यह आपको प्रोडक्शन सर्वर के भीतर अपने प्रोजेक्ट को क्लोन करने की अनुमति देता है। यदि आप GitHub का उपयोग कर रहे हैं, तो आप इस दस्तावेज़ीकरण का पालन कर सकते हैं।
/var/www/डायरेक्टरी में लिखने की अनुमति सेट करें।
आप Capistrano को किसी भी वातावरण के लिए कॉन्फ़िगर कर सकते हैं जिसकी आपको आवश्यकता है। आपको बस config/deploy/<environment_name>.rb के अंदर एक नई कॉन्फ़िगरेशन फ़ाइल बनानी होगी, फिर अपने सर्वर से कनेक्ट करने के लिए IP या DNS, और उपयोगकर्ता नाम कॉन्फ़िगर करें।
डिप्लॉयमेंट सेटअप को पूरा करने के लिए, अपने एप्लिकेशन के बारे में जानकारी शामिल करें, जैसे एप्लिकेशन नाम और कोड रिपॉजिटरी URL। कोई भी जानकारी जो सभी वातावरण के लिए समान है, उसे config/deploy.rb में जोड़ा जाना चाहिए। विशिष्ट वातावरण कॉन्फ़िगरेशन को config/deploy/<environment_name>.rb में रखें।
अपने रेल्स ऐप के लिए capistrano-secrets-yml जेम सेट करें
आपको capistrano-secrets-yml जेम भी सेट करना चाहिए।
इसे अपने Gemfile में जोड़ें और इंस्टॉल करने के लिए बंडल चलाएं:
इसे Capfile में इम्पोर्ट करें:
फिर अपने एप्लिकेशन में config/secret.yml बनाएं और सीक्रेट की बेस को पर्यावरण चर के रूप में शामिल करें। यह चर आपके प्रोडक्शन सर्वर पर बनाया जाएगा। इस फ़ाइल को अपने रिपॉजिटरी में कमिट नहीं करना याद रखें।
अपने एप्लिकेशन फोल्डर में टर्मिनल के अंदर, सीक्रेट की बेस जनरेट करने के लिए यह कमांड चलाएं:
जनरेट की गई की को कॉपी करें और अपने प्रोडक्शन सर्वर पर SECRET_KEY_BASE सेट करने के लिए उपयोग करें। अपने प्रोडक्शन सर्वर पर पहुंचें और अंतिम ~/.bashrc फ़ाइल में SECRET_KEY_BASE वेरिएबल को एक्सपोर्ट करें, ताकि यह हमेशा उपलब्ध रहे:
इसे अपने वातावरण में तुरंत उपलब्ध कराने के लिए सोर्स चलाएं:
अब, अपनी मशीन पर वापस, टर्मिनल में एप्लिकेशन फोल्डर तक पहुंचें और प्रोडक्शन सर्वर पर config/secrets.yml बनाने के लिए नीचे दिए गए Capistrano कमांड को चलाएं:
सब हो गया! अब Capistrano को माइग्रेशन चलाने के लिए कॉन्फ़िगर करने का समय है।
Capistrano को डेटाबेस माइग्रेशन करने के लिए कॉन्फ़िगर करें
अब समय है Capistrano को डेटाबेस-संबंधी कमांड चलाने के लिए कॉन्फ़िगर करने का।
आपके Gemfile में पहले से शामिल capistrano-rails जेम को प्रत्येक डिप्लॉयमेंट पर माइग्रेशन करने के लिए कॉन्फ़िगर किया जा सकता है। हमें बस इसे Capfile में इम्पोर्ट करने की आवश्यकता है:
लेकिन यदि आप डिप्लॉयमेंट पर सीड्स चलाना चाहते हैं, तो आपको माइग्रेशन के बाद चलाने के लिए एक नया कार्य बनाना होगा:
इसके साथ, आपका ऐप अंततः डिप्लॉय होने के लिए तैयार है!
अपने रूबी ऑन रेल्स ऐप का डिप्लॉयमेंट शुरू करें
आइए देखें कि हम अपने स्थानीय मशीन से सीधे अपने सर्वर को हमारे एप्लिकेशन के नए संस्करण में अपडेट करके डिप्लॉयमेंट कैसे करते हैं।
जब आप डिप्लॉयमेंट कमांड निष्पादित करते हैं, तो Capistrano आपके सर्वर से कनेक्ट होगा। वहां से, Capistrano कॉन्फ़िगरेशन फ़ाइल (config/deploy.rb) में परिभाषित रिपॉजिटरी से कोड को क्लोन करने का प्रयास करेगा। फिर अन्य कार्य डिप्लॉयमेंट फ्लो का पालन करते हुए किए जाएंगे।
Capistrano का deploy:check कमांड मान्य करता है कि Git कॉन्फ़िगरेशन ठीक है और Capistrano के पास डिप्लॉयमेंट में उपयोग की जाने वाली डायरेक्टरीज़ तक सही पहुंच है।
इसे उपयोग करने के लिए, वातावरण पास करें। इस मामले में, हम प्रोडक्शन का उपयोग कर रहे हैं:
यदि कॉन्फ़िगरेशन के साथ सब कुछ ठीक है, तो आप प्रोडक्शन में अपना डिप्लॉयमेंट शुरू कर सकते हैं:
इसके अलावा, आप इस कमांड के साथ Capistrano में उपलब्ध सभी कार्यों की जांच कर सकते हैं:
अब, हमारे अंतिम चरण में, आइए अपने रूबी ऑन रेल्स एप्लिकेशन को AppSignal के साथ एकीकृत करें और इसकी निगरानी शुरू करें।
AppSignal को Capistrano और अपने रेल्स ऐप के साथ कैसे एकीकृत करें
AppSignal एक निगरानी टूल है, तो आप आश्चर्यचकित हो सकते हैं कि यह इस लेख में क्यों शामिल है। यह एक वैध प्रश्न है, क्योंकि निगरानी सीधे डिप्लॉयमेंट से संबंधित नहीं है।
उस ने कहा, AppSignal आपके रूबी ऑन रेल्स एप्लिकेशन की निगरानी और प्रत्येक वातावरण में डिप्लॉयमेंट का ट्रैक रखने के लिए एक मूल्यवान टूल है। तो आइए देखें कि हम आपके ऐप के लिए AppSignal कैसे सेट अप कर सकते हैं।
आपको एक AppSignal खाते की आवश्यकता होगी, जिसे आप AppSignal के साइन-अप पेज पर बना सकते हैं। रूबी को अपनी भाषा के रूप में चुनें और अपने एप्लिकेशन में AppSignal इंस्टॉल करने के चरणों का पालन करें।
एक बार इंस्टॉल हो जाने पर, AppSignal को कॉन्फ़िगर करने के लिए एक फ़ाइल बनाई जाएगी। यहां महत्वपूर्ण बात रिवीजन को परिभाषित करना है — जानकारी जिसे डिप्लॉयमेंट के बाद जांचा जाएगा कि क्या एप्लिकेशन का एक नया संस्करण तैनात किया गया है। इस मामले में, हम Git लॉग का उपयोग रिवीजन जानकारी के रूप में करेंगे ताकि यह सुनिश्चित हो सके कि प्रत्येक नया कोड डिप्लॉयमेंट AppSignal को सूचित करेगा।
अपने प्रोडक्शन सर्वर पर AppSignal पर्यावरण चर को एक्सपोर्ट करना भी अच्छी प्रथा है (विशेषकर API कुंजी, ताकि इसे AppSignal कॉन्फ़िगरेशन फ़ाइल में न रखा जाए)।
और अब हम डिप्लॉयमेंट को फिर से चला सकते हैं। यदि सब कुछ सही ढंग से सेट अप है, तो आप डिप्लॉयमेंट के अंत में इस तरह का संदेश देखेंगे:
अब आप AppSignal में अपने एप्लिकेशन को देख पाएंगे! 🎉

और किसी भी डिप्लॉयमेंट के बारे में जानकारी:

डिप्लॉयमेंट इंटीग्रेशन और रूबी ऑन रेल्स एप्लिकेशन के लिए उपलब्ध अन्य सुविधाओं के बारे में अधिक जानने के लिए AppSignal के डिप्लॉयमेंट दस्तावेज़ीकरण पेज पर जाएं।
समापन और अगले चरण
इस पोस्ट में, हमने Capistrano का उपयोग करके अपने रूबी ऑन रेल्स ऐप को डिप्लॉय करने का तरीका खोजा। हमने पहले ऐप में Capistrano जोड़ा, फिर इसे कॉन्फ़िगर किया और डिप्लॉय किया, अंत में AppSignal के साथ निगरानी सेट अप की।
यदि आप आगे खोजना चाहते हैं, तो आप Capistrano को अपने रिपॉजिटरी के पाइपलाइन से जुड़े इंटीग्रेशन से चलाने के लिए कॉन्फ़िगर कर सकते हैं। Bitbucket, GitHub, और GitLab जैसे टूल्स इस प्रक्रिया को प्रबंधित करने के लिए सेटिंग्स प्रदान करते हैं और Capistrano के साथ संयोजन में उपयोग किए जा सकते हैं।
हैप्पी कोडिंग!
P.S. यदि आप रूबी मैजिक पोस्ट को प्रेस से बाहर आते ही पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और कभी भी एक भी पोस्ट मिस न करें!