Это руководство объясняет различные режимы только для чтения, доступные в Discourse, как их включать и выключать, а также сценарии, в которых может потребоваться использование каждого режима.
Требуемый уровень пользователя: Администратор
Управление живой онлайн-сообществом в Discourse иногда требует от администраторов временного ограничения активности пользователей. Такие ситуации могут возникать при выполнении технического обслуживания сервера, создании резервных копий или миграции серверов. В такие моменты крайне важно ограничить активность на форуме, не отключая полностью доступ для пользователей.
Discourse предлагает различные режимы только для чтения, которые администраторы могут включить, чтобы временно заморозить различные типы взаимодействий на сайте.
В этом руководстве рассматриваются эти режимы, с особым вниманием к тому, как их включать и выключать, включая ситуации, когда некоторые режимы пересекаются.
Понимание режимов только для чтения
Discourse поддерживает два различных уровня режимов только для чтения, адаптированных под различные административные потребности. Это:
- Полный режим только для чтения
- Ограничивает все операции записи на форуме, не позволяя пользователям создавать или изменять контент, например, публиковать сообщения, комментировать или ставить лайки.
- Позволяет фактически «заморозить» форум в его текущем состоянии, чтобы пользователи могли продолжать читать и навигировать по существующему контенту без воздействия на базу данных.
- Отключает возможность изменения любых настроек сайта администратором или кастомизаций сайта, чтобы сохранить текущее состояние базы данных.
- Отключает новые входы в систему для обычных пользователей. Администраторы по-прежнему могут входить в систему через поток входа администратора по электронной почте (
/u/admin-login).
- Режим «Только запись для сотрудников»
- Ограничивает обычных пользователей от операций записи на форуме, таких как публикация, комментирование или лайки. Обычные пользователи ограничены операциями только для чтения, но могут продолжать входить в свои учетные записи.
- Позволяет администраторам и модераторам продолжать свою деятельность в обычном режиме. Администраторы могут изменять настройки сайта, а сотрудники могут выполнять операции записи, такие как публикация, лайки или изменение профилей.
Эти режимы обеспечивают гибкость в управлении работоспособностью форума в критические административные периоды.
Как включить/выключить режимы только для чтения
Администраторы должны внимательно управлять переходом между различными режимами только для чтения. Перед включением любого режима только для чтения убедитесь, что ранее активированный режим отключен.
Полный режим только для чтения
Через консоль Rails
Если у вас есть доступ к установке Discourse, используйте командную строку Discourse Rails для выполнения следующей команды после входа в контейнер 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)
Лучшие практики
- Своевременное информирование: Заранее сообщите вашему сообществу о запланированных периодах работы в режиме только для чтения, чтобы установить правильные ожидания.
- Тестирование: Перед применением этих режимов во время критических операций проведите тесты в периоды низкой нагрузки, чтобы понять их влияние.
- Документирование: Ведите подробные записи о том, когда и почему каждый режим был включен или выключен, чтобы помочь в будущем планировании операций.
Часто задаваемые вопросы
-
Сколько времени занимает включение/выключение режима только для чтения?
- Изменение вступает в силу немедленно. Однако пользовательский опыт может незначительно отличаться в зависимости от действий пользователей в период перехода.
-
Помогите! Я заблокирован на своем сайте из-за режима только для чтения — что я могу сделать, чтобы снова получить доступ к сайту?
-
Я заметил, что в discourse/lib/discourse.rb перечислены другие режимы
READ-ONLY. Что делают эти режимы?READONLY_MODE_KEYв основном используется для процесса резервного копирования и восстановления и активируется самим приложением. Этот режим также можно включить или выключить через командную строку Discourse с помощьюdiscourse enable_readonlyиdiscourse disable_readonly. Однако этот ключ не сохраняется после перезапуска контейнера.USER_READONLY_MODE_KEYиспользуется, когда администратор нажимает кнопку только для чтения в административном интерфейсе. Особенность этого ключа в том, что мы не устанавливаем его как истекающий ключ, так как режим только для чтения, включенный пользователем, должен сохраняться после перезапуска контейнера. Другие ключи устанавливаются с TTL (60 секунд дляREADONLY_MODE_KEY, 300 секунд дляPG_READONLY_MODE_KEY), и у нас есть поток, который каждые 30 секунд продлевает срок действия, чтобы гарантировать, что приложение никогда не застрянет в режиме только для чтения.PG_READONLY_MODE_KEYиPG_FORCE_READONLY_MODE_KEYиспользуются для переключения на резервный сервер PostgreSQL (failover). Первый устанавливается как истекающий ключ, а второй — как не истекающий.

