يشرح هذا الدليل أوضاع القراءة فقط المتاحة في Discourse، وكيفية تمكينها وتعطيلها، والسيناريوهات التي قد ترغب في استخدام كل وضع فيها.
مستوى المستخدم المطلوب: المشرف
يتطلب إدارة مجتمع عبر الإنترنت نابض بالحياة على Discourse أحيانًا من المشرفين تقييد أنشطة المستخدمين مؤقتًا. يمكن أن تتراوح هذه المواقف من إجراء صيانة للخادم، أو تسهيل النسخ الاحتياطي، أو نقل الخوادم. خلال هذه الأوقات، من الضروري تقييد أنشطة المنتدى دون إغلاق وصول المستخدمين تمامًا.
يقدم Discourse أوضاع قراءة فقط مختلفة يمكن للمشرفين تمكينها لتجميد أنواع مختلفة من التفاعلات داخل الموقع مؤقتًا.
يستكشف هذا الدليل هذه الأوضاع، مع التركيز بشكل خاص على كيفية تمكينها وتعطيلها، بما في ذلك التعامل مع المواقف التي تتقاطع فيها بعض الأوضاع.
فهم أوضاع القراءة فقط
يدعم Discourse مستويين مختلفين من أوضاع القراءة فقط مصممين لتلبية الاحتياجات الإدارية المتنوعة. وهما:
- وضع القراءة فقط الكامل
- يقيد جميع عمليات الكتابة في المنتدى، مما يمنع أي مستخدم من إنشاء أو تعديل المحتوى، مثل النشر أو التعليق أو الإعجاب.
- يسمح للمنتدى بأن يكون “متجمدًا” في حالته الحالية، بحيث يمكن للمستخدمين قراءة المحتوى الحالي والتنقل فيه دون التأثير على قاعدة البيانات.
- يمنع تغيير أي إعدادات موقع إدارية أو تخصيصات الموقع لضمان الحفاظ على الحالة الحالية لقاعدة البيانات.
- يعطل تسجيل الدخول الجديد للمستخدمين العاديين. لا يزال بإمكان المشرفين تسجيل الدخول باستخدام تدفق تسجيل الدخول عبر البريد الإلكتروني للإدارة (
/u/admin-login). - يمكن لطلبات واجهة برمجة التطبيقات (API) القراءة (GET)، ولكنها لا يمكنها الكتابة (POST/PUT/DELETE).
- سيتم تسليم الويب هوكات الصادرة المعلقة، ولكن لن يتم تشغيل أي ويب هوكات جديدة لأن الإجراءات التي تثيرها ستكون محظورة.
- سيتم حظر الويب هوكات الواردة (ارتداد البريد الإلكتروني) مع استجابة 503. ستعيد مزودو البريد الإلكتروني المحاولة وفقًا لجدول التراجع الخاص بهم.
- وضع الكتابة للموظفين فقط
- يقيد المستخدمين العاديين من عمليات الكتابة في المنتدى، مثل النشر أو التعليق أو الإعجاب. يقتصر المستخدمون غير الموظفين على عمليات القراءة فقط، ولكن لا يزال بإمكانهم تسجيل الدخول إلى حساباتهم.
- يسمح باستمرار أنشطة المشرفين والمديرين بشكل طبيعي. يمكن للمشرفين تغيير إعدادات الموقع، ويمكن للمستخدمين من الموظفين تنفيذ عمليات كتابة مثل النشر أو الإعجاب أو تعديل الملفات الشخصية.
- يمكن لطلبات واجهة برمجة التطبيقات (API) القراءة (GET). فقط مفاتيح واجهة برمجة التطبيقات الخاصة بالموظفين يمكنها الكتابة (POST/PUT/DELETE).
- سيتم تسليم الويب هوكات الصادرة المعلقة. يمكن لإجراءات الموظفين تشغيل ويب هوكات صادرة جديدة ستكون ناجحة أيضًا، لكن لن يتم تشغيل أي ويب هوكات ناتجة عن إجراءات المستخدمين غير الموظفين.
- سيتم حظر الويب هوكات الواردة (ارتداد البريد الإلكتروني) مع استجابة 503. ستعيد مزودو البريد الإلكتروني المحاولة وفقًا لجدول التراجع الخاص بهم.
تضمن هذه الأوضاع المرونة في إدارة قابلية تشغيل المنتدى خلال الفترات الإدارية الحرجة.
كيفية تمكين/تعطيل أوضاع القراءة فقط
يجب على المشرفين إدارة الانتقال بين أوضاع القراءة فقط المختلفة بعناية. قبل تمكين أي وضع قراءة فقط، تأكد من تعطيل أي وضع تم تفعيله سابقًا.
وضع القراءة فقط الكامل
عبر وحدة تحكم Rails
إذا كان لديك الوصول إلى تثبيت Discourse، استخدم واجهة سطر الأوامر الخاصة بـ Discourse لتنفيذ الأمر التالي بعد الدخول إلى حاوية Docker الخاصة بك باستخدام ./launcher enter app ثم الدخول إلى وحدة تحكم Rails باستخدام rails c:
Discourse.enable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)
عبر لوحة الإدارة
إذا كان لديك وصول إداري عبر واجهة الويب، يمكنك الانتقال إلى Admin > Backups > Enable Read-Only Mode لتمكين وضع القراءة فقط.
لتعطيل وضع القراءة فقط، نفذ أمر Rails التالي:
Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)
أو، استخدم لوحة الإدارة بالانتقال إلى Admin > Backups > Disable Read-Only Mode.
وضع الكتابة للموظفين فقط
يمكن تمكين وضع الكتابة للموظفين فقط / تعطيله فقط من وحدة تحكم Rails الخاصة بـ Discourse. إذا كان موقعك مستضافًا بواسطة Discourse، يرجى التواصل مع team@discourse.org إذا كنت ترغب في تمكين أو تعطيل أي من هذه الأوضاع.
لتمكين وضع الكتابة للموظفين فقط، استخدم أمر وحدة تحكم Rails التالي:
Discourse.enable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)
للتعطيل:
Discourse.disable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)
أفضل الممارسات
- التواصل في الوقت المناسب: أبلغ مجتمعك بفترات القراءة فقط المجدولة مسبقًا لتحديد التوقعات بشكل صحيح.
- الاختبار: قبل تنفيذ هذه الأوضاع أثناء العمليات الحرجة، قم بإجراء اختبارات خلال فترات انخفاض حركة المرور لفهم تأثيرها.
- التوثيق: احتفظ بسجلات مفصلة عن متى ولماذا تم تمكين أو تعطيل كل وضع للمساعدة في التخطيط التشغيلي المستقبلي.
الأسئلة الشائعة
-
كم من الوقت يستغرق تمكين/تعطيل وضع القراءة فقط؟
- التغيير فوري. ومع ذلك، قد يختلف تجربة المستخدم قليلاً اعتمادًا على إجراءاتهم خلال فترة الانتقال.
-
مساعدة! لقد تم إغلاق موقعي بسبب وضع القراءة فقط - ما الذي يمكنني فعله للوصول إلى موقعي مرة أخرى؟
-
لاحظت أن هناك أوضاع
READ-ONLYأخرى مدرجة في discourse/lib/discourse.rb، ماذا تفعل هذه الأوضاع؟- يُستخدم
READONLY_MODE_KEYبشكل أساسي لعملية النسخ الاحتياطي والاستعادة ويتم تشغيله بواسطة التطبيق نفسه. يمكن أيضًا تمكين هذا الوضع أو تعطيله من واجهة سطر الأوامر الخاصة بـ Discourse باستخدامdiscourse enable_readonlyوdiscourse disable_readonly. ومع ذلك، لن يبقى هذا المفتاح بعد إعادة تشغيل الحاوية. - يُستخدم
USER_READONLY_MODE_KEYعندما يضغط المشرف على زر القراءة فقط في واجهة الإدارة. الشيء الخاص بهذا المفتاح هو أننا لا نعيّنه كمفتاح منتهي الصلاحية لأن وضع القراءة فقط الذي تم تمكينه بواسطة مستخدم يحتاج إلى البقاء بعد إعادة تشغيل الحاويات. يتم تعيين المفاتيح الأخرى بوقت انتهاء صلاحية (60 ثانية لـREADONLY_MODE_KEY، و 300 ثانية لـPG_READONLY_MODE_KEY) ولدينا خيط لتوسيع انتهاء الصلاحية كل 30 ثانية لضمان عدم توقف التطبيق في وضع القراءة فقط. - يُستخدم
PG_READONLY_MODE_KEYوPG_FORCE_READONLY_MODE_KEYلفشل PG. يتم تعيين الأول كمفتاح منتهي الصلاحية بينما الثاني غير منتهي الصلاحية.
- يُستخدم

