Sidekiq يعرض إرسال رسائل تفعيل إلى عنوان البريد الإلكتروني nil

يا رفاق رائعون،

لديكم مشكلة ممتعة. إليك ما حدث:

  1. تم تثبيت discourse باستخدام discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
  2. تم اختبار البريد الإلكتروني مع doctor، يعمل ويتم استلام رسائل البريد الإلكتروني.
  3. تم محاولة تنشيط حساب المسؤول ويكشف sideqik هذا (مع إخفاء الرمز المميز):
    {“type”=>“signup”, “user_id”=>1, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}

لست متأكدًا لماذا nil هو شيء لـ to_address.

أي نصائح أو مشورة أو اقتراحات ستكون موضع ترحيب كبير!

ربما أستطيع إيجادها، ولكن هل تعرف اسم مهمة Sidekiq التي أدت إلى إرسال البريد الإلكتروني؟

إذا لم تتمكن من الوصول إلى الموقع لأنك لم تتلق البريد الإلكتروني للتفعيل، يمكنك إنشاء مستخدم مسؤول وكلمة مرور باستخدام rake admin:create. التعليمات الكاملة موجودة هنا: Create an admin account from the console. يجب أن يتيح لك ذلك تسجيل الدخول إلى الموقع.

يبدو أنك لا تزال بحاجة إلى فرز ما يحدث مع تسليم البريد الإلكتروني.

6 إعجابات

عذرًا على التأخير في الرد. المهمة التي أدت إلى ذلك هي: Jobs::CriticalUserEmail
لذلك، اتبعت الدليل بالضبط. عندما وصلت إلى تسجيل حساب المسؤول، لم يتم إرسال بريد إلكتروني، واحتوى Jobs::CriticalUserEmail على {“type”=>“signup”, “user_id”=>1, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}.

لقد أجبرت حساب المسؤول فقط حتى أتمكن من رؤية المشكلات. النتيجة هي كالتالي:

  • يعمل الطبيب ويتم استلام البريد الإلكتروني
  • يعمل اختبار الملخص ويتم استلام البريد الإلكتروني بكل من إصدار HTML والنص العادي
  • لا يتم إرسال أي بريد إلكتروني للتسجيل، وسجلات رسائل البريد الإلكتروني في قسم المسؤول لا تظهر حتى رسالة تفيد بإرسال بريد إلكتروني.

كلما حاول مستخدم التسجيل، تكون النتيجة نفسها:
Jobs::CriticalUserEmail احتوى على {“type”=>“signup”, “user_id”=>2, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}.

ذيل /var/discourse/shared/standalone/log/rails/production.log يظهر (مع عمليات الحذف):

Processing by UsersController#check_username as JSON
  Parameters: {"username"=>"bobo", "email"=>"REDACTED"}
Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 636)
Started GET "/session/csrf" for REDACTEDPUBLICIP at 2024-09-26 08:13:03 +0000
Processing by SessionController#csrf as JSON
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 270)
Started POST "/u" for REDACTEDPUBLICIP at 2024-09-26 08:13:03 +0000
Processing by UsersController#create as */*
  Parameters: {"name"=>"JJ", "email"=>"REDACTED", "password"=>"[FILTERED]", "username"=>"bobo", "password_confirmation"=>"[FILTERED]", "challenge"=>"REDACTED", "timezone"=>"Europe/London"}
Completed 200 OK in 335ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 23323)
Started POST "/login" for REDACTEDPUBLICIP at 2024-09-26 08:13:04 +0000
Processing by StaticController#enter as HTML
  Parameters: {"username"=>"bobo", "password"=>"[FILTERED]", "redirect"=>"/u/account-created"}
Redirected to https://REDACTEDDOMAIN/u/account-created
Completed 302 Found in 1ms (ActiveRecord: 0.0ms | Allocations: 507)
Started GET "/u/account-created" for REDACTEDPUBLICIP at 2024-09-26 08:13:04 +0000
Processing by UsersController#account_created as HTML
  Rendered layout layouts/application.html.erb (Duration: 14.0ms | Allocations: 4624)
Completed 200 OK in 21ms (Views: 15.1ms | ActiveRecord: 0.0ms | Allocations: 6821)
Started GET "/sidekiq/queues/critical" for REDACTEDPUBLICIP at 2024-09-26 08:13:15 +0000

في السجل هناك، يظهر بريد إلكتروني دقيق لمعلمات التسجيل، لكن sidekiq لا يزال يبلغ عن “to_address”=>nil

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

هل هناك أي أخطاء في صفحة سجلات الأخطاء بموقعك؟ هذه الصفحة موجودة على /logs. يمكنك الوصول إليها من الشريط الجانبي للمسؤول بالنقر على إدخال “الأمان / سجلات الأخطاء”.

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

مثير للاهتمام. أحصل على هذا:

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

هل يمكنك الوصول إلى الواجهة الرسومية لـ Sidekiq على المسار /sidekiq؟ إذا كان الأمر كذلك، فهل هناك أي أخطاء يتم الإبلاغ عنها في تلك الصفحة؟

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

لكنني كذلك، ولكن ما أحصل عليه هو هذا:

![لقطة ش

حاول النقر على علامة التبويب “Enqueued”. إنها رابط.

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

أحصل على هذا:

وهنا اكتشفت أمر address_to=nil.

هناك خطأ ما في Redis و/أو Sidekiq. هناك عدد قليل من الأعضاء الآخرين في هذا المنتدى قد تكون لديهم أفكار حول كيفية تصحيح المشكلة.

أود أن أكون مغريًا لتسجيل الدخول إلى الخادم وتشغيل:

cd /var/discourse
./launcher rebuild app

لن يضر في هذه المرحلة.

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

نعم، لقد فعلت ذلك عدة مرات، ولهذا السبب جئت للسؤال.

لقد قمت بإعادة بناء. لقد قمت حتى بتثبيت جديد تمامًا أيضًا.

يبدو أن هذا يحدث مع كل تثبيت. بغض النظر عن أي شيء. وأنا الآن في حيرة من أمري.

وأنا ممتن للغاية لما حاولت مساعدتي به.

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

هذا مفاجئ. تأكد من أنك تتبع جميع الخطوات الموضحة هنا: . discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub.

أيضًا، تأكد من أن الخادم الذي تقوم بتثبيت Discourse عليه يلبي المتطلبات الموضحة هنا: discourse/docs/INSTALL.md at main · discourse/discourse · GitHub.

سيكون من الرائع معرفة ما الخطأ الذي يحدث.

3 إعجابات

يمكنني أن أقدم لك العملية الدقيقة التي استخدمتها. ربما هناك خطأ في العملية التي أقوم بها. أنا على استعداد تام للاعتراف بأنني أرتكب خطأ في مكان ما!

  1. لدي نطاق. إنه discourse.domain.dev (تم حذف النطاق بشكل واضح)

  2. لدي حساب بريد إلكتروني مُعد. لدي حساب mailgun، لذا قمت بإعداد مستخدم جديد تمامًا لـ SMTP. البريد الإلكتروني هو discourse@discourse.domain.dev

  3. لدي خادم. إنه أحدث إصدار من Ubuntu (Jammy Jellyfish)

  4. apt install docker.io - لا شيء

  5. تم تثبيت Git بالفعل

  6. كان المستخدم هو root

  7. تم الاستنساخ باستخدام git clone https://github.com/discourse/discourse_docker.git /var/discourse

  8. انتقلت إلى cd /var/discourse

  9. chmod 700 containers

  10. لا يزال المستخدم root

  11. قمت بتشغيل ./discourse-setup

  12. تم ملء المعلومات حسب الطلب: discourse.domain.dev

  13. بريد مسؤول Discourse: my@personal.email

  14. SMTP: smtp.eu.mailgun.org

  15. منفذ SMTP: 587

  16. اسم المستخدم: noreply@discourse.domain.dev

  17. كلمة مرور المستخدم: تم حذفها

  18. بريد الإشعارات: noreply@discourse.domain.dev

  19. بريد Lets Encrypt: my@personal.email

  20. معرف Maxmind: تم إدخاله

  21. مفتاح ترخيص Max Mind: تم إدخاله

  22. تم التحقق من بيانات الإدخال للإعداد.

  23. تم الضغط على Enter.

  24. انتظرت.

  25. انتظرت أكثر

  26. صنعت كوبًا من الشاي

  27. السطر الأخير من عملية التمهيد:
    + /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=8 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_HOSTNAME=discourse.domain.dev -e DISCOURSE_DEVELOPER_EMAILS=my@personal.email -e DISCOURSE_SMTP_ADDRESS=smtp.eu.mailgun.org -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=noreply@discourse.domain.dev -e DISCOURSE_SMTP_PASSWORD=b7fc73b0905b5ffb5f70300f1f796000-1b5736a5-0a60075a -e DISCOURSE_SMTP_DOMAIN=discourse.example.com -e DISCOURSE_NOTIFICATION_EMAIL=noreply@discourse.domain.dev -e LETSENCRYPT_ACCOUNT_EMAIL=my@personal.email -e DISCOURSE_MAXMIND_ACCOUNT_ID=REDACTED -e DISCOURSE_MAXMIND_LICENSE_KEY=REDACTED -h devsite -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address REDACTGED local_discourse/app /sbin/boot
    REDACTEDLONGSTRING

  28. قمت بتشغيل ./discourse-doctor. فشل لأنه لم يتمكن من الاتصال بـ redis.

  29. قمت بتشغيل ./launcher rebuild app ولم أغير شيئًا في التكوين

  30. تم بناؤه. كل شيء على ما يرام. كان الاختلاف الوحيد هو السلسلة الطويلة المحذوفة الأخيرة.

  31. قمت بتشغيل ./discourse-doctor. تلقيت البريد الإلكتروني التجريبي منه.

  32. كان الموقع قيد التشغيل، لذا ذهبت لإنشاء حساب مستخدم للمسؤول.

  33. نقرت على تسجيل.

  34. قيل إنه يرسل بريدًا إلكترونيًا للإشعارات.

  35. لم يتم استلام أي شيء.

  36. تحققت من خلال ./discourse-docter ورأيت هذا:
    Discourse version at discourse.domain.dev: NOT FOUND
    Discourse version at localhost: NOT FOUND

  37. قمت بتشغيل ./launcher enter app

  38. قمت بتشغيل rake admin:create

  39. أدخلت البريد الإلكتروني: my@personal.email

  40. إعادة تعيين كلمة المرور حيث أن المستخدم موجود بالفعل

  41. قيل “حسابك لديه الآن صلاحيات المسؤول!”

  42. سجلت الدخول إلى الموقع على النطاق

  43. انتقلت إلى discourse.domain.dev/logs - رأيت “فشل اختبار نبضات القلب لـ Sidekiq، جارٍ إعادة التشغيل”

  44. انتقلت إلى discourse.domain.dev/sidekiq: رأيت:

  45. انتقلت إلى عرض Enqueued

  46. نقرت على “critical” ووسعت المحتوى ورأيت “to_address” = nil مرة أخرى.

    توقف، وتواصل معي.

    هذه إعادة كاملة على جهاز جديد اليوم. هذه هي نفس الخطوات بالضبط التي استخدمتها من قبل. من فضلك، إذا أخطأت، أخبرني! :pray:


    إعداد النظام:

    • وحدة المعالجة المركزية: 4 نوى
    • ذاكرة الوصول العشوائي: 16 جيجابايت
    • نظام التشغيل: Ubuntu LTS 64 بت 24.04
    • التخزين: NVMe 500G
    • إصدار Postgres: 13.16-1
    • Redis: 7.0.7
    • Ruby: 3.3.4
إعجاب واحد (1)