जब आप शोध करते हैं कि अपने रेल ऐप को कैसे तैनात किया जाए, तो आपको बहुत सारे नाम दिखाई देंगे:अपाचे, यूनिकॉर्न, प्यूमा, फ़्यूज़न पैसेंजर, नेग्नेक्स, रेनबो, और बहुत कुछ। वे सभी सॉफ्टवेयर की "तैनाती रेल" श्रेणी के अंतर्गत फिट होने लगते हैं, लेकिन उनके बीच एक महत्वपूर्ण अंतर है। कुछ "वेब सर्वर" हैं और अन्य "ऐप सर्वर" हैं।
एक बार जब आप समझ जाते हैं कि कौन सा है, और प्रत्येक श्रेणी आपके सिस्टम में कहां फिट बैठती है, तो परिनियोजन बहुत अधिक समझ में आता है। लेकिन श्रेणियां हमेशा स्पष्ट नहीं होती हैं।
वेब सर्वर क्या है, और यह ऐप सर्वर से कैसे भिन्न है? क्या आप एक के बिना दूसरे का उपयोग कर सकते हैं? और रैक कहाँ फिट बैठता है?
वेब सर्वर क्या है?
एक वेब सर्वर एक प्रोग्राम है जो एक यूजर से आपकी वेबसाइट के लिए रिक्वेस्ट लेता है और उस पर कुछ प्रोसेसिंग करता है। फिर, यह आपके रेल ऐप को अनुरोध दे सकता है। Nginx और Apache दो बड़े वेब सर्वर हैं जिन पर आप चलेंगे।
यदि अनुरोध कुछ ऐसा है जो अक्सर नहीं बदलता है, जैसे सीएसएस, जावास्क्रिप्ट, या छवियां, तो आपके रेल ऐप को शायद इसे देखने की आवश्यकता नहीं है। वेब सर्वर आपके ऐप से बात किए बिना भी अनुरोध को स्वयं संभाल सकता है। यह आमतौर पर उस तरह तेज़ होगा।
वेब सर्वर एसएसएल अनुरोधों को संभाल सकते हैं, स्थिर फाइलों और संपत्तियों की सेवा कर सकते हैं, अनुरोधों को संपीड़ित कर सकते हैं, और कई अन्य चीजें कर सकते हैं जिनकी लगभग हर वेबसाइट को आवश्यकता होती है। और अगर आपका रेल ऐप करता है एक अनुरोध को संभालने की आवश्यकता है, वेब सर्वर इसे आपके ऐप सर्वर पर भेज देगा।
ऐप सर्वर क्या है?
एक ऐप सर्वर वह चीज है जो वास्तव में आपके रेल ऐप को चलाती है। आपका ऐप सर्वर आपका कोड लोड करता है और आपके ऐप को मेमोरी में रखता है। जब आपके ऐप सर्वर को आपके वेब सर्वर से अनुरोध मिलता है, तो यह आपके रेल ऐप को इसके बारे में बताता है। आपके ऐप द्वारा अनुरोध को संभालने के बाद, ऐप सर्वर वेब सर्वर (और अंततः उपयोगकर्ता को) प्रतिक्रिया वापस भेजता है।
आप अधिकांश ऐप सर्वरों को स्वयं चला सकते हैं, बिना किसी वेब सर्वर के। शायद यही आप विकास मोड में करते हैं! उत्पादन में, हालांकि, आपके सामने आमतौर पर एक वेब सर्वर होगा। यह एक साथ कई ऐप्स को हैंडल करेगा, आपके एसेट को तेज़ी से रेंडर करेगा, और हर अनुरोध पर आपके द्वारा की जाने वाली बहुत सारी प्रोसेसिंग से निपटेगा।
एक टन हैं रेल ऐप्स के लिए ऐप सर्वर, जिसमें मोंगरेल (जो अब अधिक उपयोग नहीं किया जाता है), यूनिकॉर्न, थिन, रेनबो और प्यूमा शामिल हैं। प्रत्येक के अलग-अलग फायदे और अलग-अलग दर्शन हैं। लेकिन अंत में, वे सभी एक ही काम पूरा करते हैं - आपके रेल ऐप को चालू रखना और अनुरोधों को संभालना।
यात्री के बारे में क्या?
फ़्यूज़न पैसेंजर थोड़ा अनोखा है। "स्टैंडअलोन मोड" में, यह ऐप सर्वर की तरह ही कार्य कर सकता है। लेकिन इसे सीधे वेब सर्वर में भी बनाया जा सकता है, इसलिए आपको ज़रूरत की ज़रूरत नहीं है आपके रेल ऐप्स को चलाने के लिए एक अलग ऐप सर्वर।
यह वास्तव में सुविधाजनक हो सकता है। खासकर यदि आप ऐप्स का एक गुच्छा चलाने की योजना बना रहे हैं और प्रत्येक के लिए ऐप सर्वर स्थापित करने में समय नहीं बिताना चाहते हैं। यात्री को स्थापित करने के बाद, आप वेब सर्वर को सीधे अपने रेल ऐप (ऐप सर्वर के बजाय) पर इंगित करते हैं, और आपका रेल ऐप अनुरोधों को संभालना शुरू कर देगा!
यात्री एक अच्छा विकल्प है, लेकिन एक अलग ऐप सर्वर होना अभी भी अच्छा हो सकता है। ऐप सर्वर को अलग रखने से आपको एक ऐप सर्वर चुनने की सुविधा मिलती है जो आपकी आवश्यकताओं के लिए सबसे उपयुक्त है, और आप इसे अपने आप चला सकते हैं और स्केल कर सकते हैं। फिर भी, अगली बार जब मैं एक नया छोटा ऐप परिनियोजित करूँगा तो मैं इसे फिर से आज़माने जा रहा हूँ। मुझे उम्मीद है कि इससे भविष्य के ऐप्स को उसी सर्वर पर तैनात करना आसान हो जाएगा।
रैक के बारे में क्या?
रैक वह जादू है जो इनमें से किसी भी ऐप सर्वर को आपके रेल ऐप को चलाने देता है। (या सिनात्रा ऐप, या पैडरिनो ऐप, या…)
आप रैक को एक सामान्य भाषा के रूप में सोच सकते हैं जो रूबी वेब फ्रेमवर्क (जैसे रेल) और ऐप सर्वर दोनों बोलते हैं। क्योंकि प्रत्येक पक्ष एक ही भाषा जानता है, इसका मतलब है कि रेल यूनिकॉर्न और यूनिकॉर्न से रेल तक बात कर सकते हैं, बिना रेल या यूनिकॉर्न को दूसरे के बारे में कुछ भी पता नहीं है।
वे कैसे संबंधित हैं?
तो, यह सब एक साथ कैसे फिट बैठता है?
इन टुकड़ों में से एक वेब अनुरोध सबसे पहले आपके वेब सर्वर से टकराएगा। यदि अनुरोध कुछ ऐसा है जिसे रेल संभाल सकता है, तो वेब सर्वर अनुरोध पर कुछ प्रसंस्करण करेगा, और इसे ऐप सर्वर को सौंप देगा। ऐप सर्वर आपके रेल ऐप से बात करने के लिए रैक का उपयोग करता है। जब आपका ऐप अनुरोध के साथ किया जाता है, तो आपका रेल ऐप ऐप सर्वर और वेब सर्वर के माध्यम से आपके ऐप का उपयोग करने वाले व्यक्ति को प्रतिक्रिया वापस भेजता है।
अधिक विशेष रूप से, Nginx यूनिकॉर्न के लिए एक अनुरोध पारित कर सकता है। यूनिकॉर्न रैक को अनुरोध देता है, जो इसे रेल राउटर को देता है, जो इसे सही नियंत्रक को देता है। फिर, आपकी प्रतिक्रिया बस दूसरे तरीके से वापस जाती है।
इस अवलोकन को सरल बनाया जा सकता है। लेकिन इन श्रेणियों को जानने मात्र से भी आपको अपने द्वारा चलाए जा रहे सॉफ़्टवेयर को सही मानसिक बाल्टी में डालने में मदद मिलेगी।
यह समझने के बाद कि ऐप सर्वर और वेब सर्वर एक साथ कैसे फिट होते हैं, सर्वर की समस्याओं के होने पर उन्हें डीबग करना बहुत आसान हो जाएगा। आप उन सभी अलग-अलग जगहों के बारे में जानेंगे जिन्हें आप देख सकते हैं, और वे कैसे इंटरैक्ट करते हैं। और एक बार अगला दिलचस्प ऐप सर्वर आने के बाद, आपके लिए इसे स्वैप करना और भी आसान हो जाएगा!
यदि आप इस बारे में अधिक जानना चाहते हैं कि रेल वेब के साथ कैसे इंटरैक्ट करती है, तो इस लेख को देखें:रेल सत्र कैसे काम करते हैं।