होस्ट से VM पर रेल सर्वर तक नहीं पहुँच सकते


12

मेरे पास वर्चुअल मशीन पर एक रेल सर्वर है और मुझे होस्ट से लोकलहोस्ट को एक्सेस करने की आवश्यकता है। मैंने दोनों नेट (पोर्ट फॉरवर्डिंग - पोर्ट 80 और 3000 गेस्ट गेस्ट पर) की कोशिश की है और एडेप्टर को ब्रिड किया है लेकिन कुछ भी काम नहीं करता है।

दोनों ही मामलों में मैं पोर्ट 80 का उपयोग करने में सक्षम था, लेकिन मैं 3000 पोर्ट पर लोकलहोस्ट से कनेक्ट करने की कोशिश कर रहा हूं (इसलिए xampp सर्वर तक पहुंचने में कोई समस्या नहीं थी)।

कृपया मुझे बताएं कि यदि आपके पास कोई विचार है कि कोई होस्ट से लोकलहोस्ट कैसे एक्सेस कर सकता है जबकि सर्वर गेस्ट की तरफ है।

मेरे पास गेस्ट की तरफ लिनक्स (डेबियन) और होस्ट की तरफ से विंडोज 7 है - मैं वर्चुअलबॉक्स का उपयोग करता हूं।

जवाबों:


10

यहां खेलने के लिए कम से कम तीन अलग-अलग घटक हैं, जिनमें से प्रत्येक को सही ढंग से कॉन्फ़िगर करने की आवश्यकता है।

बाध्यकारी पता

जब नेटवर्क कनेक्शन प्राप्त करने के लिए रेल (या अन्य सर्वर एप्लिकेशन) खुलता है, तो यह एक आईपी और पोर्ट दोनों के लिए बाध्य होगा। यदि इनकमिंग अनुरोध इन दोनों से मेल नहीं खाता है, तो यह कनेक्शन स्वीकार नहीं करेगा। से rails server --help:

Usage: rails server [mongrel, thin etc] [options]
-p, --port=port                  Runs Rails on the specified port.
                                 Default: 3000
-b, --binding=IP                 Binds Rails to the specified IP.
                                 Default: localhost
...

इसलिए डिफ़ॉल्ट रूप से, रेल केवल अपने localhost(लूपबैक) नेटवर्क एडेप्टर (जिसे कहा जाता है lo) को भेजे गए अनुरोधों को स्वीकार करेगी । चूँकि यह अडैप्टर केवल एक ही कंप्यूटर के भीतर से पहुँचा जा सकता है, यह केवल स्वीकार किए जाने वाले अनुरोध ही डेबियन वीएम के भीतर से होगा: परीक्षण के लिए अच्छा और सुरक्षित, लेकिन उत्पादन के लिए उपयोगी नहीं है, या एक अलग कंप्यूटर से परीक्षण भी नहीं है।

यदि आप चाहते हैं कि आपकी रेल किसी अन्य कंप्यूटर (आपके विंडोज 7 होस्ट सहित) से सुलभ हो, तो आपको रेल को यह बताने के लिए बाध्य करना होगा कि आईपी एड्रेस जो भी बाहर से सुलभ हो (नीचे देखें)।

हालांकि, एक आसान तरीका यह है कि रेल को विशेष आईपी पते से बांधने के लिए कहा जाए 0.0.0.0, जिसका अर्थ है किसी भी नेटवर्क एडेप्टर । तो, अपने रेल सर्वर को इस तरह शुरू करना:

rails server -p 80 -b 0.0.0.0

आपकी वेबसाइट को किसी ऐसे व्यक्ति के लिए सुलभ बना देगा जो आपके वीएम को नेटवर्क पर देख सकता है।

यह संभावना है कि क्या अभी भी आपको गड़बड़ कर दिया है, भले ही आपके पास अन्य दो घटक काम कर रहे हों।

वीएम आईपी एड्रेस

आपको अपने ब्राउज़र को डेबियन आभासी मशीन पर इंगित करने की आवश्यकता है, जो कि अपना स्वयं का असतत कंप्यूटर है।

अंगूठे का नियम localhostयह है कि यह हमेशा एक ही कंप्यूटर को संदर्भित करता है। हालाँकि, नेटवर्किंग उद्देश्यों के लिए, आपका डेबियन वीएम अपना अलग कंप्यूटर है। यदि आप अपने विंडोज 7 होस्ट में एक वेब ब्राउज़र का उपयोग कर रहे हैं, localhostतो हमेशा अपने विंडोज 7 को देखें और कुछ नहीं।

आपके पास दो विकल्प हैं:

  • वर्चुअलबॉक्स वीएम एडॉप्टर को ब्रिज मोड पर सेट करें (जैसा कि आपने अपने प्रश्न में उल्लेख किया है)। यह आपके डेबियन को सीधे आपके विंडोज 7 होस्ट के रूप में उसी बाहरी / होम / वर्क नेटवर्क पर डाल देगा। फिर आप रन करके अपने डेबियन वीएम का आईपी निर्धारित कर सकते हैं ifconfig। अपने eth0या eth<something>एडाप्टर के आईपी के लिए देखें । इसे अपने ब्राउज़र के एड्रेस बार में प्लग करें।

  • एक नैट अडैप्टर और वर्चुअलबॉक्स पोर्ट का प्रयोग करें । IMO यह अधिक जटिल है।

डेबियन फ़ायरवॉल

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

उम्मीद है की यह मदद करेगा :)

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