Это руководство объясняет различные режимы только для чтения, доступные в Discourse, как их включать и отключать, а также сценарии, в которых может потребоваться использование каждого режима.
Требуемый уровень пользователя: Администратор
Управление активной онлайн-сообществом на Discourse иногда требует от администраторов временно ограничить активность пользователей. Такие ситуации могут включать проведение обслуживания сервера, создание резервных копий или миграцию серверов. В такие моменты крайне важно ограничить активность на форуме, не закрывая полностью доступ для пользователей.
Discourse предлагает различные режимы только для чтения, которые администраторы могут включить, чтобы временно приостановить различные типы взаимодействий на сайте.
В этом руководстве мы рассмотрим эти режимы, уделив особое внимание тому, как их включать и отключать, а также как обрабатывать ситуации, когда некоторые режимы пересекаются.
Понимание режимов только для чтения
Discourse поддерживает два различных уровня режимов только для чтения, адаптированных под различные административные потребности. Это:
- Полный режим только для чтения
- Ограничивает все операции записи на форуме, предотвращая создание или изменение контента любыми пользователями, например, публикацию сообщений, комментарии или лайки.
- Позволяет «заморозить» форум в его текущем состоянии, так что пользователи могут продолжать читать и перемещаться по существующему контенту без влияния на базу данных.
- Отключает возможность изменения любых настроек сайта администратора или кастомизаций сайта, чтобы сохранить текущее состояние базы данных.
- Отключает новые входы в систему для обычных пользователей. Администраторы все еще могут входить, используя поток входа администратора по электронной почте (
/u/admin-login). - API-вызовы могут читать (GET), но не могут записывать (POST/PUT/DELETE).
- Очередные исходящие вебхуки будут доставлены, но новые вебхуки не будут запущены, так как действия, вызывающие их, будут заблокированы.
- Входящие вебхуки (отскок электронной почты) будут заблокированы с ответом 503. Провайдеры электронной почты будут повторять попытку в соответствии со своими собственными графиками задержки.
- Режим только для записи сотрудников
- Ограничивает обычных пользователей от операций записи на форуме, таких как публикация сообщений, комментарии или лайки. Нестандартные пользователи ограничены операциями только для чтения, но все еще могут входить в свои учетные записи.
- Позволяет активности администраторов и модераторов продолжаться в обычном режиме. Администраторы могут изменять настройки сайта, а сотрудники могут выполнять операции записи, такие как публикация, лайки или изменение профилей.
- API-вызовы могут читать (GET). Только API-ключи сотрудников могут записывать (POST/PUT/DELETE).
- Очередные исходящие вебхуки будут доставлены. Действия сотрудников могут запускать новые исходящие вебхуки, которые также будут успешными, но действия не сотрудников не будут запускать вебхуки.
- Входящие вебхуки (отскок электронной почты) будут заблокированы с ответом 503. Провайдеры электронной почты будут повторять попытку в соответствии со своими собственными графиками задержки.
Эти режимы обеспечивают гибкость в управлении работоспособностью форума в критические административные периоды.
Как включить/отключить режимы только для чтения
Администраторы должны тщательно управлять переходом между различными режимами только для чтения. Перед включением любого режима только для чтения убедитесь, что ранее активированный режим отключен.
Полный режим только для чтения
Через консоль Rails
Если у вас есть доступ к установке Discourse, используйте командную строку Rails 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)
Лучшие практики
- Своевременное информирование: Сообщите сообществу о запланированных периодах только для чтения заранее, чтобы установить правильные ожидания.
- Тестирование: Перед внедрением этих режимов во время критических операций проведите тесты в периоды низкой нагрузки, чтобы понять их влияние.
- Документирование: Ведите подробные записи о том, когда и почему каждый режим был включен или отключен, чтобы помочь в будущем планировании операций.
Часто задаваемые вопросы
-
Сколько времени занимает включение/отключение режима только для чтения?
- Изменение вступает в силу немедленно. Однако опыт пользователей может незначительно различаться в зависимости от их действий в период перехода.
-
Помогите! Я заблокирован от доступа к своему сайту из-за режима только для чтения — что я могу сделать, чтобы снова получить доступ к сайту?
-
Я заметил, что в 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. Первый устанавливается как истекающий ключ, а второй — как не истекающий.

