مشكلة Nginx: ظهور "502 Bad Gateway" عند إيقاف التطبيق وتشغيله

عندما أقوم بتشغيل ./launcher stop app ثم ./launcher start app، يظهر الموقع خطأ 502 Bad Gateway. لا أعرف ما هي المشكلة، لقد حاولت إعادة البناء ولكن دون جدوى.
يرجى تقديم المشورة حول كيفية إصلاح هذا.

هل يمكنك مشاركة سجلات إعادة البناء؟

root@amsaal:/var/discourse# ./launcher logs app
تم اكتشاف بنية x86_64.
run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
run-parts: executing /etc/runit/1.d/cleanup-pids
تنظيف ملفات PID القديمة
run-parts: executing /etc/runit/1.d/copy-env
run-parts: executing /etc/runit/1.d/letsencrypt
[الاثنين 15 أبريل 2024 10:12:06 صباحًا بالتوقيت العالمي المنسق] لم تتغير النطاقات.
[الاثنين 15 أبريل 2024 10:12:06 صباحًا بالتوقيت العالمي المنسق] تخطي، وقت التجديد التالي هو: 2024-06-12T11:28:31Z
[الاثنين 15 أبريل 2024 10:12:06 صباحًا بالتوقيت العالمي المنسق] أضف '--force' لفرض التجديد.
[الاثنين 15 أبريل 2024 10:12:07 صباحًا بالتوقيت العالمي المنسق] تثبيت المفتاح في: /shared/ssl/amsaal.net.key
[الاثنين 15 أبريل 2024 10:12:07 صباحًا بالتوقيت العالمي المنسق] تثبيت السلسلة الكاملة في: /shared/ssl/amsaal.net.cer
[الاثنين 15 أبريل 2024 10:12:07 صباحًا بالتوقيت العالمي المنسق] تشغيل أمر إعادة التحميل: sv reload nginx
تحذير: nginx: لا يمكن فتح supervise/ok: الملف غير موجود
[الاثنين 15 أبريل 2024 10:12:07 صباحًا بالتوقيت العالمي المنسق] خطأ إعادة التحميل لـ :
[الاثنين 15 أبريل 2024 10:12:07 صباحًا بالتوقيت العالمي المنسق] لم تتغير النطاقات.
[الاثنين 15 أبريل 2024 10:12:07 صباحًا بالتوقيت العالمي المنسق] تخطي، وقت التجديد التالي هو: 2024-06-12T11:28:38Z
[الاثنين 15 أبريل 2024 10:12:07 صباحًا بالتوقيت العالمي المنسق] أضف '--force' لفرض التجديد.
[الاثنين 15 أبريل 2024 10:12:08 صباحًا بالتوقيت العالمي المنسق] تثبيت المفتاح في: /shared/ssl/amsaal.net_ecc.key
[الاثنين 15 أبريل 2024 10:12:08 صباحًا بالتوقيت العالمي المنسق] تثبيت السلسلة الكاملة في: /shared/ssl/amsaal.net_ecc.cer
[الاثنين 15 أبريل 2024 10:12:08 صباحًا بالتوقيت العالمي المنسق] تشغيل أمر إعادة التحميل: sv reload nginx
تحذير: nginx: لا يمكن فتح supervise/ok: الملف غير موجود
[الاثنين 15 أبريل 2024 10:12:08 صباحًا بالتوقيت العالمي المنسق] خطأ إعادة التحميل لـ :
بدأ runsvdir، معرف العملية هو 537
ok: run: redis: (pid 550) 0s
ok: run: postgres: (pid 551) 0s
nginx: [warn] التوجيه "listen ... http2" مهمل، استخدم التوجيه "http2" بدلاً من ذلك في /etc/nginx/conf.d/discourse.conf:60
supervisor pid: 545 unicorn pid: 577
root@amsaal:/var/discourse#

هذا ليس ما قصدته، هل يمكنك تشغيل ./launcher rebuild app، ثم مشاركة المخرجات الناتجة؟ (أيضًا، يرجى وضع المخرجات في أقواس رمزية، فهذا يجعل الموضوع أسهل في القراءة)

سيسهل ذلك على المستخدم إعادة بنائه بهذه الطريقة لأنه سيسجل المخرج القياسي في ملف

./launcher rebuild app >> rebuild.log
إعجاب واحد (1)

إذا كنت تريد ملفات مختلفة لكل إعادة بناء:

./launcher rebuild app > "rebuild-$(date -Imin).log" 2>&1

يستغرق الأمر دقيقة أو دقيقتين بعد بدء تشغيل الحاوية لتبدأ في تقديم الأشياء. هل حاولت الانتظار بضع دقائق قبل الذهاب إلى الموقع؟

إعجاب واحد (1)
تم اكتشاف بنية x86_64.
جارٍ التأكد من تحديث المشغل
المشغل محدث
جارٍ إيقاف الحاوية القديمة
app
2.0.20231218-0429: السحب من discourse/base
Digest: sha256:468f70b9bb4c6d0c6c2bbb3efc1a5e12d145eae57bdb6946b7fe5558beb52dc1
Status: الصورة محدثة لـ discourse/base:2.0.20231218-0429
docker.io/discourse/base:2.0.20231218-0429
/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
97:C 15 Apr 2024 18:52:04.329 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
97:C 15 Apr 2024 18:52:04.329 # Redis version=7.0.7, bits=64, commit=00000000, modified=0, pid=97, just started
97:C 15 Apr 2024 18:52:04.330 # Configuration loaded
97:M 15 Apr 2024 18:52:04.451 * Loading RDB produced by version 7.0.7
97:M 15 Apr 2024 18:52:04.451 * RDB age 31 seconds
97:M 15 Apr 2024 18:52:04.451 * RDB memory usage when created 23.25 Mb
97:M 15 Apr 2024 18:52:04.451 * Done loading RDB, keys loaded: 1351, keys expired: 5.
97:M 15 Apr 2024 18:52:04.461 * DB loaded from disk: 0.124 seconds
97:M 15 Apr 2024 18:52:04.461 * Ready to accept connections
3507:C 15 Apr 2024 18:58:01.238 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3507:C 15 Apr 2024 18:58:01.238 # Redis version=7.0.7, bits=64, commit=00000000, modified=0, pid=3507, just started
3507:C 15 Apr 2024 18:58:01.238 # Configuration loaded
3507:M 15 Apr 2024 18:58:01.240 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
3507:M 15 Apr 2024 18:58:01.240 # Failed listening on port 6379 (TCP), aborting.
97:M 15 Apr 2024 18:58:27.220 * 100 changes in 300 seconds. Saving...
97:M 15 Apr 2024 18:58:27.223 * Background saving started by pid 3555
3555:C 15 Apr 2024 18:58:30.967 * DB saved on disk
3555:C 15 Apr 2024 18:58:30.969 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 1 MB
97:M 15 Apr 2024 18:58:31.058 * Background saving terminated with success
97:M 15 Apr 2024 19:03:32.047 * 100 changes in 300 seconds. Saving...
97:M 15 Apr 2024 19:03:32.063 * Background saving started by pid 3634
3634:C 15 Apr 2024 19:03:37.774 * DB saved on disk
3634:C 15 Apr 2024 19:03:37.777 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 1 MB
97:M 15 Apr 2024 19:03:37.828 * Background saving terminated with success
97:signal-handler (1713208309) Received SIGTERM scheduling shutdown...
97:M 15 Apr 2024 19:11:49.130 # User requested shutdown...
97:M 15 Apr 2024 19:11:49.131 * Saving the final RDB snapshot before exiting.
97:M 15 Apr 2024 19:11:52.592 * DB saved on disk
97:M 15 Apr 2024 19:11:52.593 # Redis is now ready to exit, bye bye...
sha256:066d1fc0bf450b6f9043e13960cafef6b7751d92f0d89cc4e0865208293ce2e2
58661874f252e2e9dac3955608dbbe90e60f020a4d307d2818e7f991d39f8010
Removing old container
app

ea032a7acab7743f4ef8de3b9a536da0dbbf36b8c9dd5b2a9add0cfb01286e5d

نعم، بعد اكتمال عملية إعادة البناء بعد 30 ثانية، لم يكن الموقع يعمل، خطأ 502 في البوابة، ثم قمت بتشغيل /launch restart app مع تشغيل التطبيق ثم عمل.
لذا ربما هناك شيء يحدث.

… يبدو هذا كسجل غير مكتمل. هل ينتهي الأمر بالفعل هناك، أم أنه يتوقف لفترة طويلة؟ إذا كان الأمر الثاني، فقد تحتاج إلى المزيد من ذاكرة الوصول العشوائي/التبديل.

حاول الانتظار لمدة 60 ثانية.

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

قد يكون الأمر إما توقفًا أو قد يستغرق وقتًا طويلاً، حوالي 30 دقيقة لإنهاء إعادة البناء، أعتقد أن ذاكرة الوصول العشوائي (RAM) التي تبلغ سعتها 2 جيجابايت فقط هي التي قد تجعل الأمور بطيئة، لكن ليس لدي أي مشاكل في الذاكرة في الوقت الحالي. إنها بطيئة فقط، وعادةً لا ينبغي أن تستغرق أكثر من دقيقة إلى دقيقتين اعتمادًا على المواصفات.

مواصفات خادم VPS الخاص بي أدناه.

وحدة المعالجة المركزية (CPU): معالج AMD EPYC 7551P ثماني النواة، 2000 ميجاهرتز
ذاكرة الوصول العشوائي (RAM): 2 جيجابايت
وحدة تخزين الحالة الصلبة (SSD): 60 جيجابايت

لن تحصل على خطأ 502 إذا لم يكن الحاوية قيد التشغيل. لو انتظرت أكثر قليلاً لكان الموقع قد بدأ بالعمل.

ليس الأمر أن الإيقاف والتشغيل قد فعلا شيئًا، بل إنك انتظرت طويلاً عندما قمت بإعادة التشغيل.

من المتوقع أن تواجه خطأ 502 لفترة من الوقت أثناء بدء تشغيل الحاوية. ليس لديك مشكلة.

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

بصراحة، هذا ليس خارجًا عن المألوف، فعمليات إعادة البناء ليست سريعة، خاصة عندما…

… لا تملك الكثير من الذاكرة.

بشكل عام، يوصى حاليًا بـ 4 جيجابايت على الأقل من الذاكرة الإجمالية (ذاكرة الوصول العشوائي والتبديل) لـ Discourse هذه الأيام.

عند تحديث discourse من واجهة المسؤول، تظهر لي تحذيرات عدم التوافق هذه

warning Resolution field "unset-value@2.0.1" is incompatible with requested version "unset-value@^1.0.0"
[3/5] Fetching packages...
warning Pattern ["wrap-ansi-cjs@npm:wrap-ansi@^7.0.0"] is trying to unpack in the same destination "/home/discourse/.cache/yarn/v6/npm-wrap-ansi-cjs-7.0.0-67e145cff510a6a6984bdf1152911d69d2eb9e43-integrity/node_modules/wrap-ansi-cjs" as pattern ["wrap-ansi@^7.0.0"]. This could result in non-deterministic behavior, skipping.
[4/5] Linking dependencies...
warning "@discourse/lint-configs > eslint-plugin-ember > ember-eslint-parser@0.3.8" has unmet peer dependency "@typescript-eslint/parser@^6.15.0".
warning "> @glint/environment-ember-loose@1.4.0" has unmet peer dependency "@glimmer/component@^1.1.2".
warning "> discourse-markdown-it@1.0.0" has unmet peer dependency "xss@*".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse > @uppy/aws-s3@3.0.6" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse > @uppy/aws-s3-multipart@3.1.3" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse > @uppy/xhr-upload@3.1.1" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse-plugins > ember-this-fallback@0.4.0" has unmet peer dependency "ember-source@^3.28.11 || ^4.0.0".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > admin > ember-source > router_js@8.0.3" has unmet peer dependency "rsvp@^4.8.5".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse > @uppy/aws-s3 > @uppy/xhr-upload@3.3.0" has incorrect peer dependency "@uppy/core@^3.2.1".

يمكن تجاهل هذه، ولن تمنع Discourse من إعادة البناء.