موقع Discourse لا يعمل بعد التثبيت دون تمكين Let's Encrypt

أنا أعرف ما يكفي لأكون خطيرًا عندما أجلس أمام جلسة SSH مفتوحة. لقد مررت بخطوات التثبيت بنجاح في اليوم الآخر، وعملت كل شيء على ما يرام.

لكن اليوم، كان علي إعادة البناء (كنت على خادم تطوير وليس على الخادم الإنتاجي)، وبعد اتباع نفس الخطوات، لم يظهر أي شيء بعد تشغيل ./discourse-setup والذهاب إلى الموقع الإلكتروني بعد اكتمال التثبيت.

كما قمت بتشغيل ./launcher start app، وما زال لا يظهر أي شيء.

ما هي بعض الأمور النموذجية التي يجب أن أفعلها لاستكشاف مشكلة التثبيت وإصلاحها؟

لا توجد رسالة أو خطأ من أي نوع بعد ./discourse-setup أو ./launcher start app؟

أخبرنا كيف تختلف البيئات.

هل تستخدم وسيطًا عكسيًا؟ CloudFlare؟

أين تستضيف تثبيت الإنتاج؟

لا، يبدو أن التثبيت قد نجح. عندما أتحقق من docker info، أرى أن الحاوية تعمل أيضًا.

أنا أستخدم Amazon Linux 2 على AWS، وقد نجح هذا الأمر في اليوم السابق على نفس نظام التشغيل. يُستخدم CloudFlare فقط لخدمة DNS لهذا النطاق.

إليك الترتيب الدقيق لما قمت به. تم تثبيت Git و Docker و ncat عبر amazon-linux-extras كما طُلب أثناء التثبيت (لكن هذا لا ينبغي أن يكون مشكلة، حيث كان لدي منتدى تطوير يعمل في اليوم السابق).

  1. تثبيت Git
  2. تثبيت وتشغيل Docker
  3. تثبيت ncat
  4. تثبيت Discourse
  5. تثبيت nginx1.12

لماذا قمت بذلك؟

سؤال منطقي. :joy: لقد فعلت ذلك لأنه لم يعد يعمل بعد الخطوة 4… هههه. هل يجب أن أقوم بإلغاء التثبيت؟

نعم. قم بإلغاء التثبيت.

من المرجح أن تكون المشكلة في DNS.

ما الذي يعيده الأمر curl localhost؟

ماذا يُظهر الأمر tail /var/discourse/shared/logs/var-log/nginx/access.log؟

يشمل Discourse خادم ويب داخل الحاوية.

curl: (7) Failed to connect to localhost port 80: Connection refused

tail: cannot open '/var/discourse/shared/logs/var-log/nginx/access.log' for reading: No such file or directory

لقد نفذت عملية التثبيت العادية، لكنني تأكدت من أن مجلد shared غير موجود حتى.

شكرًا لك على مساعدتك! كما قلت، أعرف ما يكفي لأكون خطيرًا… وليس دائمًا بالطريقة الجيدة. :smiling_face_with_sunglasses:

عذرًا.

tail /var/discourse/shared/standalone/logs/var-log/nginx/access.log

أو، إذا كان الأمر لا يزال خاطئًا،

find /var/discourse/shared -name access.log

لمعرفة مكان ملف السجل.

تم العثور عليه هنا:

/var/discourse/shared/standalone/log/var-log/nginx/

لم يكن هناك ملف access.log، لكن كان هناك ملف error.log.

كانت نفس السطر متكررًا فيه مرارًا وتكرارًا (تم استبدال النطاق الحقيقي بـ example.com هنا):

2020/04/08 19:46:34 [emerg] 2112#2112: cannot load certificate "/shared/ssl/example.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

لم أقم بعملية إصدار الشهادة مع Let’s Encrypt لأنني أملك بالفعل شهادة لهذا النطاق. هل ما زال عليّ استخدام Let’s Encrypt أيضًا؟

تحتاج إلى شهادة.

يمكنك البحث عن تعليمات تثبيت شهادتك الخاصة، والتي تشير إلى أنها عملية مرهقة للغاية، أو يمكنك الحصول على شهادة مجانية وبدون أي عناء من خلال السماح لـ Let’s Encrypt بالحصول عليها نيابةً عنك.

حسناً، انظر إلى هذا. لقد نجح الأمر.

شكراً لك @pfaffman ولكل من رد. :+1:

في الواقع، أعود عن كلامي. لقد فتح كروم النافذة في وضع أظهر آخر تحميل ناجح للصفحة، لكن التحديث في وضع التصفح المتخفي يظهر أنها لا تزال لا تعمل. إخفاق كامل من جانبي. :man_facepalming:

هل هناك رابط يوضح كيفية إعداد شهادة Let’s Encrypt؟ أحتاج إلى مراجعة ما قمت به (أو ما لم أقم به).

فقط قم بتشغيل discourse-setup. عندما يُسألك عن let’s encrypt، قدم أي عنوان بريد إلكتروني، أو عنوانك الخاص إذا كنت ترغب في استلام بريد إلكتروني إذا اعتقدوا أنك تحتاج إلى تجديد.

حسنًا، هذا ما فعلته… اعتقدت أن كل شيء يعتمد على دليل التثبيت، لكنني ما زلت أحصل على صفحات فارغة.

يبدو أن Discourse يبحث عن الشهادة في دليل /shared/ssl/، لكن الموقع الفعلي لشهادتي هو /shared/standalone/ssl/

إعداد ملف app.yml الخاص بي هو:

   ## حاوية Docker عديمة الحالة؛ تُخزَّن جميع البيانات في /shared
volumes:
  • volume:
    host: /var/discourse/shared/standalone
    guest: /shared
  • volume:
    host: /var/discourse/shared/standalone/log/var-log
    guest: /var/log

يمكنك تجربة الأمر التالي

cd /var/discourse
rm -r shared/standalone/ssl shared/standalone/letsencrypt
./launcher rebuild app

سطر rm مكتوب بناءً على الذاكرة. إذا لم تكن هذه المجلدات موجودة، فأخبرني بما كان يجب أن أكتبه.

إذن، يبدو أنني مقيد بحد 10 شهادات في الأسبوع مع Let’s Encrypt. أعتقد أن هذا يفسر جزئيًا سبب عدم قدرتي على المتابعة بعد هذه الخطوة.

إليك ما وجدته من شخص آخر واجه هذه المشكلة بعد عدة عمليات إعادة بناء: Trouble with SSL after lots of rebuilds - #14 by pfaffman

لذا، أفترض أنه لا يوجد لدي خيار آخر حاليًا سوى تثبيت الشهادة الخاصة بي التي أملكها بالفعل؟