مرحبًا! لقد قمت بتثبيت Discourse بنجاح في جهاز افتراضي يعمل بنظام Ubuntu 18.04 (باستخدام VMware Workstation 15 Player) متبعًا هذا الدليل. يعمل الوصول إلى http://localhost:3000/ من داخل الجهاز الافتراضي بشكل جيد، لكنني لا أستطيع الوصول إليه من نظام Windows 10 المضيف. تم تكوين شبكة الجهاز الافتراضي في وضع الجسر (bridged mode)، ولتشغيل خادم Rails أقوم بتنفيذ الأمر التالي:
bundle exec rails server --binding=0.0.0.0
ومع ذلك، عندما أذهب إلى http://192.168.0.172:3000/ من جهاز المضيف، أحصل على خطأ “تم رفض الاتصال”. لقد جربت إعداد خادم HTTP بسيط بلغة Python داخل الجهاز الافتراضي:
python3 -m http.server 3000
وأستطيع الوصول إليه فعليًا من جهاز المضيف، لذا أعتقد أن المشكلة خاصة بـ Discourse. هل هناك شيء فاتني؟
مرحبًا @neounix، شكرًا على الرد. لقد قمت بالفعل بتكوين شبكة الآلة الافتراضية في وضع الجسر، ويمكنني الوصول إليها من الخارج باستخدام خادم HTTP بسيط بلغة بايثون يستمع على نفس المنفذ (3000) والعنوان (0.0.0.0)، لكن لسبب ما لا يعمل ذلك مع خادم Discourse…
المشكلة هنا هي أن خيار --binding يتم تجاهله تمامًا. جربت الأمر الخاص بك محليًا ولاحظت هذا السطر في المخرجات (المخرجات صاخبة جدًا لذا من السهل جدًا تفويت هذا السطر):
I, [2020-06-08T17:26:55.938086 #21001] INFO -- : listening on addr=127.0.0.1:3000 fd=15
عند قراءة ملف config/unicorn.conf.rb، لجعل الخادم يستمع إلى 0.0.0.0، ستحتاج إلى تعيين متغير البيئة UNICORN_BIND_ALL=1. لذا يجب أن يعمل الأمر التالي: UNICORN_BIND_ALL=1 bundle exec rails server.
بدلاً من ذلك، يمكنك استخدام سكربت bin/unicorn الذي يقبل خيار --host الذي يمكنك استخدامه للربط بـ 0.0.0.0.
شكرًا لك، هذا أنقذني من كثير من المتاعب.
أتساءل عما إذا كان بإمكانك تحديث أدلة المستخدمين الرسمية لتشمل هذا بدلاً من الحل غير الفعال باستخدام bundle exec rails server -b 0.0.0.0.
لقد رأيت ذلك في كل مكان على الإنترنت ولم أستطع تخيل أنه لن يعمل.