مشكلات مع Discourse 3.5.0.beta2-dev - SMTP والوظائف الخلفية

تم إعداد التقرير التالي لي بواسطة ChatGPT، بناءً على تجربتي الفعلية في تثبيت Discourse (لست خبيرًا تقنيًا جدًا، وقد اعتمدت على الذكاء الاصطناعي للمساعدة في المهام التي أجدها صعبة). لا أحتاج إلى أي مساعدة في الوقت الحالي، لكنني آمل أن يكون التقرير مفيدًا كتعليقات حول 3.5.0.beta2-dev.

==================

عزيزي فريق Discourse،

أرغب في مشاركة بعض تفاصيل استكشاف الأخطاء وإصلاحها حول مشكلات البريد الإلكتروني التي واجهتها أثناء تشغيل Discourse 3.5.0.beta2-dev. لا أحتاج إلى مساعدة مباشرة حيث قررت العودة إلى 3.4.0.beta4-dev، ولكن آمل أن يكون هذا التقرير مفيدًا في تحديد المشكلات المحتملة في أحدث إصدار تطوير.


1. ملخص المشكلة

لقد أجريت تثبيتًا نظيفًا لـ Discourse على مثيل Vultr جديد، باستخدام خدمة SMTP الخاصة بـ 20i (smtp.stackmail.com). ومع ذلك، لم يتم تسليم رسائل البريد الإلكتروني أبدًا، على الرغم من:

  • اختبار اتصال SMTP ناجح (openssl s_client -connect smtp.stackmail.com:587 -starttls smtp).
  • عدم ظهور أي أخطاء في سجلات بريد 20i (مما يشير إلى أن Discourse لم يكن يرسل رسائل البريد الإلكتروني فعليًا).
  • فشل Sidekiq في معالجة مهام البريد الإلكتروني.

كان هذا غير متوقع لأنه قبل بضعة أسابيع، قمت بتثبيت Discourse 3.4.0.beta4-dev بنجاح على مثيل مطابق دون أي مشكلات في البريد الإلكتروني.

بعد تصحيح شامل للأخطاء، اكتشفت أن تثبيتي الحالي قد قام بتثبيت Discourse 3.5.0.beta2-dev بشكل غير متوقع، مما ساهم على الأرجح في المشكلات.


2. المشكلات الرئيسية المحددة

أ. لم يتم تسليم رسائل البريد الإلكتروني

  • إعدادات SMTP كانت صحيحة، تم التحقق منها عبر اختبار يدوي (نجحت اختبارات swaks و openssl).
  • تم إدراج رسائل البريد الإلكتروني في Sidekiq ولكن لم يتم استلامها أبدًا.
  • سجلات بريد 20i أظهرت عدم وجود رفض أو محاولات تسليم (مما يشير إلى أن الرسائل لم تغادر Discourse أبدًا).
  • لم تظهر أي أخطاء متعلقة بالبريد الإلكتروني في production.log (أعاد grep "smtp" لا شيء).

ب. مشكلات Sidekiq و Redis

  • في البداية، لم يكن Sidekiq قيد التشغيل (أعاد Sidekiq::Workers.new.size القيمة 0).
  • فشل إعادة تشغيل Sidekiq يدويًا (sv restart sidekiq) لأن Sidekiq كان مفقودًا كخدمة.
  • كان Redis قيد التشغيل (redis-cli ping أعاد PONG)، ولكن سجلات Discourse لا تزال تظهر أخطاء في اتصال Redis (Errno::ECONNREFUSED).
  • سجلات Sidekiq أشارت إلى فشل المهام بسبب مشكلات اتصال Redis، على الرغم من تأكيد نشاط Redis.
  • بدء تشغيل Sidekiq يدويًا (bundle exec sidekiq) سمح بمعالجة المهام، ولكن رسائل البريد الإلكتروني لم تُرسل بعد.

ج. عدم تطابق الإصدار بين التثبيتات

  • تثبيتي السابق (الذي عمل) كان على 3.4.0.beta4-dev.
  • تثبيتي الحالي قام بتثبيت 3.5.0.beta2-dev بشكل غير متوقع، على الرغم من استخدام نفس طريقة الإعداد.
  • نظرًا لأن البريد الإلكتروني عمل بشكل مثالي في 3.4.0.beta4-dev، أشتبه في وجود تراجع أو تغيير كاسر في 3.5.

3. الإجراءات المتخذة (جميعها فشلت)

حاولنا بشكل منهجي الحلول التالية:

:white_check_mark: تم تأكيد اتصال SMTP باستخدام:

openssl s_client -connect smtp.stackmail.com:587 -starttls smtp  # ناجح
swaks --to my-email --server smtp.stackmail.com --port 587 --auth LOGIN  # ناجح

:white_check_mark: تم التحقق من أن رسائل البريد الإلكتروني تم إدراجها:

Jobs.enqueue(:user_email, type: :test_message, to_address: 'masden@kumagaku.ac.jp')  # أعاد معرف مهمة
Sidekiq::Queue.new("default").size  # أعاد 0 (مما يشير إلى معالجة المهمة)

:white_check_mark: تم فحص سجلات Discourse:

grep "smtp" /shared/log/rails/production.log  # لا توجد أخطاء متعلقة بـ SMTP
  • فشل اتصال Redis (Errno::ECONNREFUSED في production.log).

:white_check_mark: تمت إعادة تشغيل وتفعيل الخدمات يدويًا:

sv restart sidekiq  # فشل، الخدمة مفقودة
redis-cli ping  # تم التأكيد على التشغيل
bundle exec sidekiq  # تمت معالجة المهام ولكن لم تُرسل رسائل البريد الإلكتروني

:white_check_mark: تم التحقق مما إذا كانت رسائل البريد الإلكتروني يتم حظرها بواسطة 20i:

  • لا توجد رفض أو محاولات تسليم في سجلات بريد 20i.
  • إذا تم رفض رسائل البريد الإلكتروني، يجب أن يكون هناك إدخال في السجل، ولكن لم يظهر شيء.

4. الخلاصة: العودة إلى 3.4.0.beta4-dev

بعد استكشاف الأخطاء وإصلاحها بشكل مكثف، قررت مسح التثبيت وإعادة تثبيت 3.4.0.beta4-dev، حيث أن تثبيتي السابق عمل بشكل لا تشوبه شائبة على هذا الإصدار.

بينما لا أحتاج إلى مساعدة مباشرة، أردت الإبلاغ عن هذه المشكلات لأن:

  • قد تكون معالجة البريد الإلكتروني قد تغيرت في 3.5، مما يمنع تسليم SMTP.
  • خدمة Sidekiq المفقودة وأخطاء Redis تشير إلى مشكلات في معالجة المهام الخلفية في 3.5.
  • نظرًا لأنني تمكنت من تثبيت 3.4.0.beta4-dev دون مشاكل، فهذا يشير إلى تراجع محتمل في 3.5.

آمل أن يكون هذا التقرير مفيدًا في تحديد المشكلات المحتملة في Discourse 3.5.0.beta2-dev.

مع خالص التقدير،
كيرك

إعجابَين (2)

كان ذلك متوقعًا، لأنه الإصدار السائد في الوقت الحالي.

الكثير يستخدم نفس الإصدار الأخير، وsidekiq يعمل، وبالتالي الرسائل الإلكترونية أيضًا.

لذا قد تحتاج إلى مساعدة، لأنه بعد ذلك لن تتمكن من إعادة البناء أيضًا.

وقد يكون من الأفضل أن يتولى شخص ذو خبرة التعامل مع هذا الموضوع، ولكن أعتقد أن لدينا هنا مواضيع حول توقّف الـsidekiq. البحث قد يساعد.

4 إعجابات

أواجه صعوبة مستمرة في تثبيت Discourse. إليك تقرير آخر أعدته ChatGPT. أعتقد أنه يمثل تجربتي بدقة.

تقرير: مشكلات في تثبيت Discourse وخدمة Sidekiq المفقودة

السياق:
حاولنا إجراء تثبيت جديد لـ Discourse على مثيل Vultr، بهدف إعداد نشر مستقر وعامل. ومع ذلك، واجهنا مشكلات كبيرة، لا سيما مع الخدمات المفقودة مثل Sidekiq، مما منع تسليم البريد الإلكتروني ومعالجة المهام الخلفية.


ملخص المشكلات التي تمت مواجهتها

  1. تثبيت إصدار غير متوقع
    • بدلاً من الإصدار المتوقع v3.4.0.beta4-dev، تم تثبيت الإصدار tests-passed افتراضيًا، مما سحب إصدارًا قد يكون غير مستقر.
    • كان ملف VERSION مفقودًا، مما جعل من غير الواضح ما هو الإصدار الدقيق الذي تم تثبيته.
  2. خدمة Sidekiq مفقودة
    • كان الدليل /etc/service/sidekiq غائبًا داخل حاوية Discourse.
    • منع هذا جميع المهام الخلفية (رسائل البريد الإلكتروني، الإشعارات، المهام المجدولة) من التشغيل.
  3. مشكلات مستودع Git الخاص بـ Discourse
    • أدى تشغيل git rev-parse --abbrev-ref HEAD داخل الحاوية إلى إرجاع tests-passed، مما يؤكد أنه تم تثبيت إصدار غير مقصود.
    • أصدر Git خطأ “تم اكتشاف ملكية مشكوك فيها”، مما تطلب تدخلًا يدويًا (git config --global --add safe.directory /var/www/discourse).
  4. مشكلات التبعية المحتملة
    • حتى لو تم سحب إصدار أقدم من Discourse، هناك قلق من أنه قد يتم سحب تبعيات أحدث (Ruby، Redis، Sidekiq) أثناء التثبيت، مما قد يتسبب في مشكلات توافق.
    • إذا لم يتم تثبيت تبعيات Discourse بشكل صحيح، فقد يتصرف التثبيت بشكل غير متسق عبر البيئات.
  5. تحديد المعدل لشهادة SSL
    • فشل محاولة الحصول على شهادة SSL جديدة من Let’s Encrypt بسبب تجاوز الحد الأقصى للمعدل.
    • تسبب هذا في فشل بدء تشغيل Nginx، حيث لم يتمكن من تحميل ملف الشهادة المتوقع.

الخطوات التالية المخطط لها

  1. إجراء مسح كامل وإعادة تثبيت
    • إزالة /var/discourse بالكامل وإعادة استنساخ المستودع.
    • سحب إصدار مستقر يدويًا (على سبيل المثال، v3.4.1) قبل تشغيل التثبيت.
    • استخدام ./discourse-setup بدلاً من الاعتماد على الإعدادات الافتراضية لضمان المعلمات الصحيحة.
  2. ضمان تثبيت Sidekiq
    • قبل إعادة البناء، تحقق من تضمين خدمة sidekiq بشكل صحيح في عملية البناء.
    • إذا كانت Sidekiq مفقودة بعد إعادة البناء، تحقق من تثبيتها يدويًا عبر bundle list | grep sidekiq.
  3. تثبيت التبعيات على إصدارات مستقرة
    • تجنب المشكلات المتعلقة بالتبعيات باستخدام صورة Docker لـ Discourse مستقرة ومعروفة (على سبيل المثال، discourse/discourse:2.0.20240101).
    • تثبيت إصدارات الجواهر داخل الحاوية (bundle install --deployment --without test development).
  4. إعادة محاولة إصدار شهادة SSL
    • انتظر إعادة تعيين حد المعدل لـ Let’s Encrypt وأعد محاولة إنشاء شهادة SSL.
    • إذا استمرت المشكلات، ففكر في استخدام شهادة موقعة ذاتيًا مؤقتًا لاستكشاف الأخطاء وإصلاحها.

طلب التعليقات

نظرًا لهذه التحديات، نود الحصول على مدخلات من فريق ومجتمع Discourse بشأن:

  • فقدان Sidekiq من /etc/service/ في تثبيت جديد - هل واجه أي شخص آخر هذه المشكلة؟
  • أفضل الممارسات لضمان استقرار التبعيات - هل هناك طريقة موصى بها لتثبيت إصدارات التبعيات لتثبيتات Discourse؟
  • مشكلات محتملة مع تثبيت tests-passed افتراضيًا - هل يمكن أن تكون هناك مشكلة في كيفية استرداد الإصدارات؟

ستكون أي رؤى مفيدة قبل أن نواصل إعادة التثبيت. شكرًا مقدمًا!

إنه ليس غير مستقر في الواقع. إنه الإعداد الافتراضي لجميع المنتديات الآن. لن يقوم Discourse بتعيين فرع غير مستقر كافتراضي.

هممم… ماذا ترى عندما تذهب إلى /sidekiq في منتدى الخاص بك؟

ما هو الفرع الذي تنوي التثبيت عليه؟ ربما هذا الدليل سيساعد؟

3 إعجابات

أعتقد أن أي شيء قد تحتاجه هو بعض التفاصيل حول تكوين VPS الخاص بك. المعالج، الذاكرة، مساحة القرص و zIS مثل أوبونتو LTS 24

عندما تقول أنك جربت البريد الإلكتروني. هل استخدمت اختبار discourse واستقبلت بريدًا إلكترونيًا؟

في ملف app.yml الخاص بك في XP يجب أن تحتوي على 3 أسطر من الإعدادات الرئيسية لـ SMPT.

  • اسم المستخدم:
  • كلمة المرور
  • المنفذ

الآن، مما قلته، هل كان لديك هذا يعمل في تثبيت discourse سابقًا؟

كما ذكرت، “تم اختبارها ونجحت” هي النسخة الموصى بها للتثبيت. النسخة المستقرة من فهمي أكثر للأشخاص الذين لديهم إضافات وسمات مخصصة - والتي قد تتطلب تحديثًا أكثر تكرارًا لتجنب الكسر.

هل يمكنك مشاركة سجل إعادة البناء مع الأخطاء؟ تذكر أن تتصفح للأعلى عند التقاط السجل لأن الخطأ النهائي هو مجرد نتيجة فاشلة. يمكنك دائمًا استبعاد البيانات الحساسة مثل اسم المستخدم وكلمة مرور SMTP.

هناك أيضًا بعض المواضيع حول مشكلات SMTP البريد الإلكتروني ربما تحتوي على حلول

إعجاب واحد (1)

آسف على تأخري في الرد. كما كتبت ردًا على تعليق آخر، لا يمكنني تقديم تفاصيل حول محاولتي الفاشلة الأخيرة لأنني قمت بمسح الكثير من البرامج لإعادة المحاولة. سأبلغكم بالنتائج فور تمكني من ذلك.

شكراً لتعليقاتك المفصلة. أعتذر عن ردي البطيء.

أنا أحاول تثبيتًا آخر باستخدام إصدارات أقدم من برامج مختلفة. هذا يجعل من الصعب عليّ الإجابة على أسئلتك حول محاولتي الفاشلة السابقة. بمجرد أن أتمكن من إكمال التثبيت التالي، سأبلغك.

إعجاب واحد (1)

شيء يجب مراعاته كاختبار إضافي إذا لزم الأمر. قم بإعداد حساب مجاني على https://www.brevo.com؛ لديهم طبقة بريد مجانية تبلغ 300 بريد إلكتروني يوميًا. أنا أستخدم هذا حاليًا.

إذا واجهت مشكلة في إرسال البريد، فقد يساعد هذا في اختبار ما إذا كان الأمر قد يتعلق بمزود البريد الخاص بك.

إعجابَين (2)

ملخص: لا تعتمد على ChatGPT، فهذه كلها إنذارات كاذبة.

من الجيد طلب المساعدة، ولكن من السيء الاعتماد عليها، كما سأوضح أدناه.
شكراً لك على طمأنتي بأنني لن أفقد وظيفتي بسبب ChatGPT قريباً. :wink:

beta4-dev غير مستقر بنفس القدر مثل tests-passed

لا يوجد مثل هذا الملف.

لا ينبغي أن يكون هناك مثل هذا الدليل.

أشك في ذلك.

هذا متوقع.

هذا سلوك طبيعي إذا كنت تستخدم git على دليل بينما لست المالك.

هذا لا معنى له. و tests-passed أحدث مما كنت “تتوقعه”، وليس أقدم.

هذا لأنك حاولت عدة مرات.

6 إعجابات

أريد التأكيد على هذا.
في معظم الأوقات، إذا اقترحت على ChatGPT وجود مشكلات للعثور عليها، فسوف تجد مشكلات، حتى لو لم تكن موجودة. كما أنها سريعة في دفعنا إلى حلقة لا نهائية من “الإصلاحات” التي تقترحها باستمرار.

5 إعجابات

شكراً جزيلاً!

فيما يتعلق بالذكاء الاصطناعي، من الواضح أن ChatGPT لم يكن دليلاً موثوقاً. من ناحية أخرى، وجدت أن تصحيح الأخطاء صعب، لذا فإن إغراء الاعتماد عليه كبير بالنسبة لشخص مثلي.

لقد أكملت للتو تثبيتاً ناجحاً. لم يتمكن ChatGPT (الإصدار المدفوع) من مساعدتي في الوصول إلى الهدف، لكن Claude من Anthropic (الإصدار المدفوع أيضاً؛ أستخدم كلاهما) فعل ذلك أخيراً. لقد ساعدني في إصلاح المشكلات التي قدمها ChatGPT.

سأحاول الكتابة مرة أخرى بمزيد من التفاصيل حول تجربتي لاحقاً. شكراً لجميع تعليقاتكم المفيدة!

إعجابَين (2)

أتفق. من خلال استخدامي، كلود أكثر راحة ويعطي عادةً إجابة صحيحة فورية.
يسعدني أنك نجحت!

5 إعجابات

شكرًا لك! من المدهش مدى اختلافهما في مهام معينة - يشبه الأمر الأشخاص ذوي الشخصيات المختلفة. يبدو أن Claude أكثر “تفكيرًا” بينما يميل ChatGPT إلى القفز إلى استنتاجات والاندفاع قليلاً. لقد كنت في مواقف كان فيها ChatGPT أفضل، على الرغم من ذلك. آمل أن يتحسن كلاهما. لقد ساعدني الذكاء الاصطناعي في كتابة الكثير من النصوص البرمجية التي تعمل بالفعل، على الرغم من أنني لست كاتب نصوص برمجية. لديه القدرة على أن يكون أداة رائعة للأشخاص الذين يواجهون صعوبة في التكنولوجيا مثلي، ولكنه بالتأكيد يحتاج إلى التحسن. من المحبط حقًا أن تقود إلى طريق مسدود. :frowning:

4 إعجابات

إليك تقرير موجز عن تثبيتي الناجح مع سؤال حول كيفية المضي قدمًا.

لا أزال غير متأكد من سبب معاناتي مع SMTP في المحاولات الأخيرة. في الواقع، كانت محاولتي الأولى قبل بضعة أسابيع ناجحة ولكنني كنت أستخدم خادم Vultr الذي قررت أنه أكبر مما أحتاجه والطريقة الوحيدة لتقليص حجمه هي الحصول على خادم أصغر جديد ثم مسح الخادم الأكبر.

وفقًا لبريد إلكتروني تلقيته، كان إصدار Discourse الذي قمت بتثبيته قبل بضعة أسابيع هو 3.4.0.beta4-dev. كان البريد الإلكتروني يوصي بالترقية إلى 3.4.0.beta4.

نظرًا لأنني واجهت مشكلة مع SMTP في 3.4.0.beta4-dev، فكرت في محاولة تثبيت إصدار سابق مستقر من Discourse. في مناقشة مع ChatGPT (غير موثوق به، أعرف) قررنا محاولة تثبيت 3.4.1. اعتقدت أن هذا الإصدار سيكون مستقرًا. إليك ما انتهى بنا الأمر بتثبيته:

  • إصدار Discourse: 3.5.0.beta2-dev
  • إصدار Docker: 23.0.6
  • sidekiq: 6.5.12
  • إصدار PostgreSQL: PostgreSQL 15.12 (Debian 15.12-1.pgdg120+1)
  • إصدار Redis: 7.0.15
  • NGINX: 1.26.2
  • إصدار Ubuntu: 22.04 LTS (Jammy Jellyfish)
  • إصدار Git: 2.39.5

أعتقد أنه بغض النظر عن نيتنا (أي، نيتي بمساعدة الذكاء الاصطناعي) لتثبيت إصدارات سابقة مستقرة، فقد انتهى بنا الأمر بتثبيت Discourse 3.5.0.beta2-dev في النهاية.

لقد كان الأمر صعبًا (الكثير من البدايات الخاطئة واستخدام الأوامر التي أعطاني إياها الذكاء الاصطناعي لإصلاح الأشياء التي لم تكن تعمل) ولكن Discourse الخاص بي يعمل الآن أخيرًا.

هنا بعض الأسئلة:

  1. ما لم أكن مخطئًا، لم يتم تشجيع المستخدمين الحاليين بعد على الترقية إلى 3.5.0، ربما لأنه لم يتم اختباره بالكامل بعد. إذا كان الأمر كذلك، فلماذا يُجبر المبتدئون مثلي على تثبيته؟
  2. أعتقد أن إصدار Docker الخاص بي قديم (مهمل). هل يجب أن أستخدم الطرفية فقط للترقية إلى أحدث إصدار؟ يعمل Discourse الآن وبما أنني واجهت الكثير من المتاعب للوصول إلى هذه النقطة، لا أريد فعل أي شيء قد يفسد الأمور.
  3. أعتقد أن إصدارات البرامج الأخرى حديثة جدًا. إذا رأيت أي شيء قد يكون إشكاليًا أو يحتاج إلى ترقية، فيرجى إخباري.
  4. هل هناك صفحة أو قسم في هذا المجتمع يعالج قضايا “العناية والصيانة” الفنية؟ أريد أن أحافظ على مجتمعي بصحة جيدة ويعمل وأن أكون مستعدًا بالنسخ الاحتياطي، وما إلى ذلك، لأي مشاكل قد تنشأ.
إعجابَين (2)

لقد أكملت للتو استعادة من نسخة احتياطية لمجتمع Discourse السابق. بدا الأمر جيدًا وقد يكون قد قام بتحديث Docker (المشكلة المذكورة أعلاه) أيضًا:

أتساءل عن هذه الرسالة، التي أتلقاها فورًا بعد الاستعادة: “تم تعطيل البريد الصادر للمستخدمين غير الموظفين.”

بالإشارة إلى موضوع آخر هنا

وجدت مكان تغيير الإعداد.

لذا، الآن أفترض أنني جاهز للانطلاق ولكن إذا أمكن، سأقدر التأكيد. “لا” هو الإعداد الصحيح، أليس كذلك؟ أعتقد أن المستخدمين العاديين يجب أن يتلقوا إشعارات البريد الإلكتروني لذلك أنا في حيرة بعض الشيء بسبب إعداد التعطيل. أتساءل ما هي أنواع المواقف التي تتطلب تعطيل البريد.

لقد واجهت مشكلة مماثلة مع عدم إرسال البريد الإلكتروني في تثبيت Discourse جديد تمامًا والذي فصّلته هنا:

كانت المشكلة هي أن عنوان البريد الإلكتروني notifications في app.yml لم يتم المصادقة عليه مع مزود SMTP الخاص بي (SendGrid).

لم يظهر شيء في سجلات Discourse الرئيسية، ولا في سجلات SendGrid. ظهر الخطأ عند تشغيل discourse-doctor:

Reason: 550 The from address does not match a verified Sender Identity.

إذا لم تكن قد قمت بذلك بالفعل، أقترح تشغيل discourse-doctor لأنه قد يوفر المزيد من البصيرة حول سبب عدم إرسال رسائل البريد الإلكتروني.

إعجابَين (2)

شكرا جزيلا لك!!

نصيحة ممتازة. لم أكن على علم بـ Discourse-doctor ولكني أعتقد أنه ربما وفر علي الكثير من الوقت.

سأضعه في الاعتبار إذا واجهت مشاكل أخرى. :slight_smile:

إعجاب واحد (1)