عرض صفحة خطأ ثابتة أثناء تعطل الموقع

ما أريد فعله هو عرض صفحة تقول “هذا الموقع قيد الصيانة” عندما يصبح غير متصل بالإنترنت أثناء، على سبيل المثال، عملية إعادة البناء.

هذا الموضوع هو في الأساس ما أود فعله ولكنه يبدو أنه يتطلب إعدادًا غير قياسي. هل هناك طريقة أسهل للقيام بذلك لتثبيت قياسي؟ شكرا!

لا، لا يوجد شيء من هذا القبيل في الوقت الحالي.

3 إعجابات

في الواقع، تستخدم هذه الإجراءات ما يُعتبر “تثبيتًا قياسيًا” (أي باستخدام دليل Docker الرسمي لـ Discourse)، والذي يتم إعادة نشر Nginx فيه خارج الحاوية.
يبدو الإجراء مخيفًا في البداية، ولكنه ليس كذلك حقًا، يمكنني مساعدتك إذا أردت.

ليست الإجابة التي أردت سماعها، ولكني أقدر الإجابة الواضحة رغم ذلك.

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

منذ أن أضفت NGINX لهذا في عام 2020، اضطررت إلى تعديل الإعداد مرتين. في كلتا المرتين، كان الأمر يتعلق بتعديل الإعدادات المتعلقة بتحميل الملفات الكبيرة بعد تحديث الحد في Discourse.

عادةً لا يتطلب استخدام NGINX الخارجي لتوفير الصفحة الثابتة والعمل كوكيل عكسي لـ Discourse إجراء تغييرات بمجرد إعداده بشكل صحيح.

3 إعجابات

لاحظ أن nginx الخارجي يجلب شيئًا آخر قيّمًا إلى جانب صفحة الخطأ الثابتة: التعيين الصحيح لعناوين IP المصدر لمستخدمي IPv6. إذا كان منتداك متاحًا عبر IPv6، ولا تستخدم تكوين nginx الخارجي، فسيظهر كل من يصل إلى موقعك عبر IPv6 على أنه قادم من عنوان محلي 172.x.y.z. هذا لا يساعد عندما تحاول التعامل مع مستخدمي الموقع الضارين مثل مرسلي البريد العشوائي!

إنه نفس الشيء تمامًا لإضافة إضافات جديدة.

أعتقد أنه يسهل التحديث لأنه تعلم أن المستخدمين سيتم إبلاغهم بالصيانة وينتظرون حتى تنتهي.

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

لاحظ أن الوثائق التي سألت عنها تقول:

:alarm_clock: إذا قمت بتثبيت certbot من مستودع الحزم الخاص بك، فعادةً ما تحدث عمليات التجديد تلقائيًا. بخلاف ذلك، قم بتعيين تذكير لتشغيل letsencrypt renew && systemctl reload nginx.service قبل انتهاء صلاحية شهادتك!

تعيين تذكير ليس طريقة جيدة للقيام بذلك. ستنسى حتمًا، وإذا فاتتك رسالة بريد إلكتروني من letsencrypt تحذرك من انتهاء صلاحية الشهادة، فسيتوقف موقعك عن العمل. لحسن الحظ، هذا سهل الحل.

إذا لم يتم إعداد التجديدات التلقائية، فإليك كيفية القيام بذلك.

قم بإنشاء الملف /etc/systemd/system/certbot.service بالمحتويات التالية:

[Unit]
Description=Certbot
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
Documentation=https://letsencrypt.readthedocs.io/en/latest/
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true

قم بإنشاء الملف /etc/systemd/system/certbot.timer بالمحتويات التالية:

[Unit]
Description=Run certbot twice daily

[Timer]
OnCalendar=*-*-* 00,12:00:00
RandomizedDelaySec=43200
Persistent=true

[Install]
WantedBy=timers.target

ثم أخبر systemd بالملفات الجديدة.

# systemctl daemon-reload
# systemctl enable --now certbot.timer
إعجاب واحد (1)

إذا كنت تستخدم إعداد حاويتين، فإن وقت التوقف أقل من دقيقة ولا تحتاج حقًا إلى مثل هذه الصفحة.

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

بعد بعض البحث هنا، من الواضح تمامًا أن صيانة حاويتين تتطلب جهدًا أكبر بكثير من Nginx. على مستوى مهاراتي على أي حال.

إعجابَين (2)

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

هذا صحيح أيضًا. إنها دائمًا مقايضة - المدة التي سيظل فيها المنتدى معطلاً بسبب التحديثات/الترقيات مقابل الوقت الذي تتطلبه صيانة الحاويات المنفصلة (وخاصة عندما أفسد أنا (أو أنا) كل شيء وأبدأ في محاولة العثور على بعض الإصلاحات ويتعطل المنتدى في نفس الوقت :rofl: )

إعجابَين (2)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.