مرحباً يا رفاق،
أقوم بإعداد بعض الأتمتة للنشر والترحيل باستخدام Ansible ولكن لدي مشكلة في وضع القراءة فقط.
عندما قمت بتمكين وضع القراءة فقط باستخدام:
docker exec app discourse enable_readonly
أو
./launcher enter app
discourse enable_readonly
بعد حوالي 1:20، يخرج الموقع من وضع القراءة فقط بنفسه.
إذا قمت بتمكين وضع القراءة فقط عبر واجهة المستخدم الرسومية (قسم المسؤول/النسخ الاحتياطي)، فإنه يظل ممكّنًا حتى أقوم بتعطيله.
أي أفكار؟
إعجاب واحد (1)
Lilly
(Lillian Louis)
27 فبراير 2024، 6:31ص
2
هل قمت بفحص سجلاتك؟ ربما لديك مهمة خلفية أو إضافة في مكان ما تعطل العملية.
مرحباً ليلي،
شكراً لردك. هذا تثبيت افتراضي جديد ولم أقم بتثبيت أي إضافات أو إنشاء أي وظائف. ما هي السجلات الأفضل التي يجب أن أبحث فيها؟ آسف، أنا قليل الخبرة.
لقد جربت tail -f على:
/var/discourse/shared/standalone/log/rails/unicorn.stdout.log
/var/discourse/shared/standalone/log/rails/unicorn.stderr.log
/var/discourse/shared/standalone/log/rails/production_errors.log
/var/discourse/shared/standalone/log/rails/production.log
/var/discourse/shared/standalone/log/rails/sidekiq.log
/var/discourse/shared/standalone/log/var-log/redis/current
انتظرت الحدث ليحدث أثناء متابعة السجلات ولكنني لم أر شيئاً لافتاً للنظر.
من الغريب بالنسبة لي أنه يعمل بشكل مثالي عند تفعيله عبر واجهة المستخدم الرسومية للويب ولكن ليس عبر سطر الأوامر.
pfaffman
(Jay Pfaffman)
27 فبراير 2024، 6:39م
4
لقد واجهت صعوبة في استخدام ذلك أيضًا، سواء لتمكين وضع القراءة فقط أو تعطيله. في المرة الأخيرة، انتهى بي الأمر بتشغيل Discourse.enable_readonly_mode في rails.
إنها دائمًا حالة طوارئ عندما يحدث ذلك ولم أتحقق من المشكلة المحتملة.
على سبيل المثال، في أدوات Ansible الخاصة بي، لا أستخدم وضع القراءة فقط، ولكني أستخدم Introducing Post Deployment Migration
إعجاب واحد (1)
شكرًا جاي. أظن أنني أتبع نهج XY للمشكلة. سألقي نظرة على ترحيل ما بعد النشر. شكرًا على ذلك.
أعتقد أن الخيار الآخر قد يكون تفعيل RO عبر استدعاء API.
pfaffman
(Jay Pfaffman)
27 فبراير 2024، 7:11م
6
- name: post migrations
shell: "docker exec {{ discourse_yml }} bash -c 'rake db:ensure_post_migrations db:migrate'"
become: yes
لذلك قد يعمل هذا في الوضع للقراءة فقط:
- name: post migrations
shell: "docker exec {{ discourse_yml }} bash -c 'echo Discourse.enable_readonly_mode | rails c'"
become: yes
شكرا لك، أقدر ذلك كثيراً. سأجرب هذا الليلة.
إعجاب واحد (1)
هل الفرق يرجع إلى وضع القراءة فقط الذي تستخدمه؟
Sara Devlaeminck:
READONLY_MODE_KEY يُستخدم بشكل أساسي لعملية النسخ الاحتياطي والاستعادة ويتم تشغيله بواسطة التطبيق نفسه. يمكن أيضًا تمكين هذا الوضع أو تعطيله من واجهة سطر أوامر Discourse باستخدام discourse enable_readonly و discourse disable_readonly. ومع ذلك، لن ينجو هذا المفتاح من إعادة تشغيل الحاوية.
USER_READONLY_MODE_KEY يُستخدم عندما ينقر المسؤول على زر القراءة فقط في واجهة المسؤول. الشيء المميز حول هذا المفتاح هو أننا لا نضبطه كمفتاح منتهي الصلاحية لأن القراءة فقط التي يُمكّنها المستخدم تحتاج إلى البقاء على قيد الحياة بعد إعادة تشغيل الحاوية. يتم تعيين المفاتيح الأخرى بـ TTL مدته 60 ثانية ولدينا خيط لتمديد انتهاء الصلاحية كل 30 ثانية لضمان عدم تعليق التطبيق أبدًا في وضع القراءة فقط.
3 إعجابات
شكراً JammyDodger! كانت المعلومات والرابط مفيدة جداً. لست متأكداً مما يشكل إعادة تشغيل حاوية - على حد علمي، فإن حاويتي لا تعيد التشغيل كل ~1:30، وهي المدة التي يظل فيها وضع RO ممكّناً عند استخدام discourse enable_readonly أي Discourse.enable_readonly_mode(Discourse::READONLY_MODE_KEY)
ومع ذلك، يمكنني التأكيد على أن Discourse.enable_readonly_mode(Discourse::USER_READONLY_MODE_KEY) “تلتزم” إلى أجل غير مسمى، وهو ما كنت أحاول تحقيقه
إعجاب واحد (1)
للاكتفاء الذاتي:
- name: Set read-only mode for live forum host
ansible.builtin.shell: |
docker exec app bash -c 'echo Discourse.enable_readonly_mode\(Discourse::USER_READONLY_MODE_KEY\) | rails c'
register: enable_readonly_output
إعجابَين (2)
system
(system)
تم إغلاقه في
30 مارس 2024، 12:21ص
11
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.