Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

वेब सर्वर बनाम ऐप सर्वर: Rails डिप्लॉयमेंट के लिए एक स्पष्ट गाइड

जब आप शोध करते हैं कि अपने Rails ऐप को कैसे डिप्लॉय करें, तो आप बहुत सारे नाम देखेंगे: Apache, Unicorn, Puma, Phusion Passenger, Nginx, Rainbows, और कई अन्य। वे सभी "Rails डिप्लॉय करना" सॉफ्टवेयर की श्रेणी में फिट लगते हैं, लेकिन उनके बीच एक महत्वपूर्ण अंतर है। कुछ "वेब सर्वर" हैं, और अन्य "ऐप सर्वर" हैं।

एक बार जब आप समझ जाते हैं कि कौन सा कौन सा है, और प्रत्येक श्रेणी आपके सिस्टम में कहां फिट बैठती है, तो डिप्लॉयमेंट बहुत अधिक समझ में आएगा। लेकिन श्रेणियां हमेशा स्पष्ट नहीं होतीं।

वेब सर्वर क्या है, और यह ऐप सर्वर से कैसे अलग है? क्या आप एक के बिना दूसरे का उपयोग कर सकते हैं? और Rack इसमें कहां फिट बैठता है?

वेब सर्वर क्या है?

एक वेब सर्वर एक प्रोग्राम है जो किसी उपयोगकर्ता से आपकी वेबसाइट पर एक अनुरोध लेता है और उस पर कुछ प्रसंस्करण करता है। फिर, यह अनुरोध को आपके Rails ऐप को दे सकता है। Nginx और Apache दो बड़े वेब सर्वर हैं जिनसे आप टकराएंगे।

यदि अनुरोध किसी ऐसी चीज़ के लिए है जो अक्सर नहीं बदलती, जैसे CSS, JavaScript, या छवियां, तो आपके Rails ऐप को शायद इसे देखने की आवश्यकता नहीं है। वेब सर्वर अनुरोध को स्वयं संभाल सकता है, बिना आपके ऐप से बात किए। यह आमतौर पर तेज़ होगा।

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

ऐप सर्वर क्या है?

एक ऐप सर्वर वह चीज़ है जो वास्तव में आपके Rails ऐप को चलाती है। आपका ऐप सर्वर आपका कोड लोड करता है और आपके ऐप को मेमोरी में रखता है। जब आपके ऐप सर्वर को आपके वेब सर्वर से एक अनुरोध मिलता है, तो यह आपके Rails ऐप को इसके बारे में बताता है। आपके ऐप द्वारा अनुरोध को संभालने के बाद, ऐप सर्वर प्रतिक्रिया को वेब सर्वर (और अंततः उपयोगकर्ता) को वापस भेजता है।

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

Rails ऐप्स के लिए ऐप सर्वर की एक टन हैं, जिनमें Mongrel (जिसका अब अधिक उपयोग नहीं होता), Unicorn, Thin, Rainbows, और Puma शामिल हैं। प्रत्येक के अलग-अलग फायदे और अलग-अलग दर्शन हैं। लेकिन अंत में, वे सभी एक ही चीज़ पूरी करते हैं - अपने Rails ऐप को चालू रखना और अनुरोधों को संभालना।

Passenger के बारे में क्या?

Phusion Passenger थोड़ा अनोखा है। "स्टैंडअलोन मोड" में, यह ऐप सर्वर की तरह ही कार्य कर सकता है। लेकिन इसे सीधे वेब सर्वर में भी बनाया जा सकता है, इसलिए आपको अपने Rails ऐप्स चलाने के लिए एक अलग ऐप सर्वर की आवश्यकता नहीं है।

यह वास्तव में सुविधाजनक हो सकता है। खासकर यदि आप कई ऐप चलाने की योजना बना रहे हैं और प्रत्येक के लिए ऐप सर्वर सेटअप करने में समय नहीं लगाना चाहते। Passenger इंस्टॉल करने के बाद, आप बस वेब सर्वर को सीधे अपने Rails ऐप पर इंगित करें (एक ऐप सर्वर के बजाय), और आपका Rails ऐप अनुरोधों को संभालना शुरू कर देगा!

Passenger एक अच्छा विकल्प है, लेकिन एक अलग ऐप सर्वर रखना अभी भी अच्छा हो सकता है। ऐप सर्वर को अलग रखने से आपको अपनी आवश्यकताओं के लिए सबसे उपयुक्त ऐप सर्वर चुनने का लचीलापन मिलता है, और आप इसे अपने दम पर चला और स्केल कर सकते हैं। फिर भी, मैं अगली बार एक नया छोटा ऐप डिप्लॉय करते समय इसे फिर से आज़माऊंगा। मुझे उम्मीद है कि यह भविष्य के ऐप्स को उसी सर्वर पर डिप्लॉय करना आसान बना देगा।

Rack के बारे में क्या?

Rack वह जादू है जो इनमें से किसी भी ऐप सर्वर को आपके Rails ऐप को चलाने देता है। (या Sinatra ऐप, या Padrino ऐप, या...)

आप Rack को एक सामान्य भाषा के रूप में सोच सकते हैं जो Ruby वेब फ्रेमवर्क (जैसे Rails) और ऐप सर्वर दोनों बोलते हैं। क्योंकि प्रत्येक पक्ष एक ही भाषा जानता है, इसका मतलब है कि Rails Unicorn से बात कर सकता है और Unicorn Rails से, बिना Rails या Unicorn को एक-दूसरे के बारे में कुछ भी जाने।

वे कैसे संबंधित हैं?

तो, यह सब एक साथ कैसे फिट होता है?

इन टुकड़ों में से, एक वेब अनुरोध पहले आपके वेब सर्वर पर आएगा। यदि अनुरोध कुछ ऐसा है जिसे Rails संभाल सकता है, तो वेब सर्वर अनुरोध पर कुछ प्रसंस्करण करेगा, और इसे ऐप सर्वर को सौंप देगा। ऐप सर्वर आपके Rails ऐप से बात करने के लिए Rack का उपयोग करता है। जब आपका ऐप अनुरोध के साथ हो जाता है, तो आपका Rails ऐप प्रतिक्रिया को ऐप सर्वर और वेब सर्वर के माध्यम से वापस आपके ऐप का उपयोग करने वाले व्यक्ति को भेजता है।

अधिक विशेष रूप से, Nginx एक अनुरोध को Unicorn को पास कर सकता है। Unicorn अनुरोध को Rack को देता है, जो इसे Rails राउटर को देता है, जो इसे सही कंट्रोलर को देता है। फिर, आपकी प्रतिक्रिया बस दूसरे रास्ते से वापस जाती है।

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

एक बार जब आप समझ जाते हैं कि ऐप सर्वर और वेब सर्वर एक साथ कैसे फिट होते हैं, तो जब आपके पास वे होंगे तो सर्वर समस्याओं को डीबग करना बहुत आसान होगा। आप उन सभी अलग-अलग स्थानों को जानेंगे जहां आप देख सकते हैं, और वे कैसे बातचीत करते हैं। और जब अगला दिलचस्प ऐप सर्वर आएगा, तो आपके लिए इसे स्वैप करना और भी आसान होगा!

यदि आप इस बारे में अधिक जानना चाहते हैं कि Rails वेब के साथ कैसे इंटरैक्ट करता है, तो इस लेख को देखें: How Rails Sessions Work.

  1. Plex TV  सुरक्षित रूप से कनेक्ट करने में असमर्थ  एरर को कैसे ठीक करें Plex TV 'सुरक्षित रूप से कनेक्ट करने में असमर्थ' एरर को कैसे ठीक करें

    सबसे लोकप्रिय अमेरिकी स्ट्रीमिंग मीडिया सेवाओं और क्लाइंट-सर्वर मीडिया प्लेयर प्लेटफॉर्म में से एक होने के नाते, Plex TV ने उल्लेखनीय दर्शक वर्ग प्राप्त किया है। Plex TV ऐप Plex TV मीडिया सर्वर से जुड़ा होता है और ऐप पर स्ट्रीम की जाने वाली सामग्री सर्वर से प्राप्त होती है। हालांकि, आपने वह एरर मैसे

  1. चैटबॉट: वेब और ऐप विकास में क्रांति चैटबॉट: वेब और ऐप विकास में क्रांति

    चैट टूल और रोबोट के मेल से चैटबॉट बना। हालांकि यह अवधारणा कुछ साल पहले आई थी, लेकिन यह हाल ही में बढ़ रही है और अनगिनत व्यवसायों द्वारा व्यापक रूप से अपनाई जा रही है। ठीक है, तो चैटबॉट के बारे में क्या खास है? बॉट मूल रूप से आभासी रोबोट सेवा हैं जो एक वास्तविक व्यक्ति की तरह बातचीत करते हैं। वे कभी

  1. Flotato: किसी भी वेबसाइट को नेटिव मैक ऐप में बदलें Flotato: किसी भी वेबसाइट को नेटिव मैक ऐप में बदलें

    जब भी आप कुछ खोजते हैं, तो आप कई टैब खोलते हैं। इसका परिणाम अक्सर एक अव्यवस्थित वेब ब्राउज़र होता है। इसे कैसे प्रबंधित करें? टैब को एक-एक करके खोलना इसका व्यावहारिक समाधान नहीं हो सकता। अब क्या? हर वेबसाइट के लिए एक वेब ऐप प्राप्त करना एक अद्भुत विकल्प हो सकता है। लेकिन, क्या यह संभव है? हाँ, यह ह