أواجه صعوبة مستمرة في تثبيت Discourse. إليك تقرير آخر أعدته ChatGPT. أعتقد أنه يمثل تجربتي بدقة.
تقرير: مشكلات في تثبيت Discourse وخدمة Sidekiq المفقودة
السياق:
حاولنا إجراء تثبيت جديد لـ Discourse على مثيل Vultr، بهدف إعداد نشر مستقر وعامل. ومع ذلك، واجهنا مشكلات كبيرة، لا سيما مع الخدمات المفقودة مثل Sidekiq، مما منع تسليم البريد الإلكتروني ومعالجة المهام الخلفية.
ملخص المشكلات التي تمت مواجهتها
- تثبيت إصدار غير متوقع
- بدلاً من الإصدار المتوقع
v3.4.0.beta4-dev، تم تثبيت الإصدارtests-passedافتراضيًا، مما سحب إصدارًا قد يكون غير مستقر. - كان ملف
VERSIONمفقودًا، مما جعل من غير الواضح ما هو الإصدار الدقيق الذي تم تثبيته.
- بدلاً من الإصدار المتوقع
- خدمة Sidekiq مفقودة
- كان الدليل
/etc/service/sidekiqغائبًا داخل حاوية Discourse. - منع هذا جميع المهام الخلفية (رسائل البريد الإلكتروني، الإشعارات، المهام المجدولة) من التشغيل.
- كان الدليل
- مشكلات مستودع Git الخاص بـ Discourse
- أدى تشغيل
git rev-parse --abbrev-ref HEADداخل الحاوية إلى إرجاعtests-passed، مما يؤكد أنه تم تثبيت إصدار غير مقصود. - أصدر Git خطأ “تم اكتشاف ملكية مشكوك فيها”، مما تطلب تدخلًا يدويًا (
git config --global --add safe.directory /var/www/discourse).
- أدى تشغيل
- مشكلات التبعية المحتملة
- حتى لو تم سحب إصدار أقدم من Discourse، هناك قلق من أنه قد يتم سحب تبعيات أحدث (Ruby، Redis، Sidekiq) أثناء التثبيت، مما قد يتسبب في مشكلات توافق.
- إذا لم يتم تثبيت تبعيات Discourse بشكل صحيح، فقد يتصرف التثبيت بشكل غير متسق عبر البيئات.
- تحديد المعدل لشهادة SSL
- فشل محاولة الحصول على شهادة SSL جديدة من Let’s Encrypt بسبب تجاوز الحد الأقصى للمعدل.
- تسبب هذا في فشل بدء تشغيل Nginx، حيث لم يتمكن من تحميل ملف الشهادة المتوقع.
الخطوات التالية المخطط لها
- إجراء مسح كامل وإعادة تثبيت
- إزالة
/var/discourseبالكامل وإعادة استنساخ المستودع. - سحب إصدار مستقر يدويًا (على سبيل المثال،
v3.4.1) قبل تشغيل التثبيت. - استخدام
./discourse-setupبدلاً من الاعتماد على الإعدادات الافتراضية لضمان المعلمات الصحيحة.
- إزالة
- ضمان تثبيت Sidekiq
- قبل إعادة البناء، تحقق من تضمين خدمة
sidekiqبشكل صحيح في عملية البناء. - إذا كانت Sidekiq مفقودة بعد إعادة البناء، تحقق من تثبيتها يدويًا عبر
bundle list | grep sidekiq.
- قبل إعادة البناء، تحقق من تضمين خدمة
- تثبيت التبعيات على إصدارات مستقرة
- تجنب المشكلات المتعلقة بالتبعيات باستخدام صورة Docker لـ Discourse مستقرة ومعروفة (على سبيل المثال،
discourse/discourse:2.0.20240101). - تثبيت إصدارات الجواهر داخل الحاوية (
bundle install --deployment --without test development).
- تجنب المشكلات المتعلقة بالتبعيات باستخدام صورة Docker لـ Discourse مستقرة ومعروفة (على سبيل المثال،
- إعادة محاولة إصدار شهادة SSL
- انتظر إعادة تعيين حد المعدل لـ Let’s Encrypt وأعد محاولة إنشاء شهادة SSL.
- إذا استمرت المشكلات، ففكر في استخدام شهادة موقعة ذاتيًا مؤقتًا لاستكشاف الأخطاء وإصلاحها.
طلب التعليقات
نظرًا لهذه التحديات، نود الحصول على مدخلات من فريق ومجتمع Discourse بشأن:
- فقدان Sidekiq من
/etc/service/في تثبيت جديد - هل واجه أي شخص آخر هذه المشكلة؟ - أفضل الممارسات لضمان استقرار التبعيات - هل هناك طريقة موصى بها لتثبيت إصدارات التبعيات لتثبيتات Discourse؟
- مشكلات محتملة مع تثبيت
tests-passedافتراضيًا - هل يمكن أن تكون هناك مشكلة في كيفية استرداد الإصدارات؟
ستكون أي رؤى مفيدة قبل أن نواصل إعادة التثبيت. شكرًا مقدمًا!