Существует несколько приемов, которые могут помочь при настройке тестового сервера.
Что такое тестовый сервер?
Тестовый сервер — это, по сути, копия продакшн-сайта. Он также размещается на сервере и функционирует идентично. Он работает внутри контейнера Docker, как и обычный сайт Discourse.
Он предназначен для того, чтобы у вас было место для проверки рискованных действий или тестирования функций, которые нелегко скрыть от пользователей. Он очень полезен для тестирования рекламы с помощью плагина Discourse Advertising Plugin (Ads) или если вы хотите сделать что-то необычное, например, импорт или слияние форумов.
Это отличается от сервера разработки, который обычно работает в легкодоступном (и изолированном) месте, чтобы разработчик мог безопасно экспериментировать с кодом.
Что мне нужно?
-
Всё, что требуется для стандартной самостоятельной установки
-
Если у вас настроены резервные копии S3, ваша жизнь станет намного проще
- в противном случае вам понадобится способ перемещать большие файлы на сервер и с него через SSH
Шаги
Настройте свой сервер так, как вам удобно
Обычно это виртуальный сервер Ubuntu, размещенный на Digital Ocean, но вы можете использовать любой другой вариант, с которым вам комфортно.
Установите Discourse
С помощью этого руководства (или, возможно, через dashboard.literatecomputing.com). Я рекомендую использовать «мусорные» учетные данные для электронной почты (вам не нужно, чтобы почта работала).
Подтвердите, что установка работает:
Создайте учетную запись администратора (если необходимо)
Создайте учетную запись администратора из командной строки. Это позволит избежать необходимости аутентификации по электронной почте.
./launcher enter app
rake admin:create
Это не строго необходимо, кроме как для тестирования установки, так как вы можете восстановить систему из резервной копии через командную строку.
Отредактируйте app.yml и внесите некоторые изменения
-
Возможно, стоит сделать копию исходного файла app.yml (я называю свою
app.vanilla.yml), к которой вы сможете вернуться, если что-то пойдет не так. -
В конце раздела
envдобавьте следующие строки:## Настройки, специфичные для тестового сервера DISCOURSE_BACKUP_FREQUENCY: 0 DISCOURSE_LOGIN_REQUIRED: true DISCOURSE_DISABLE_EMAILS: 'yes' DISCOURSE_S3_DISABLE_CLEANUP: true DISCOURSE_ALLOW_RESTORE: true -
Если у вас настроены резервные копии S3 (или аналогичные), добавьте также эти строки (используя настройки с основного сайта):
## Настройка S3 DISCOURSE_S3_ACCESS_KEY_ID: 'your_key' DISCOURSE_S3_SECRET_ACCESS_KEY: 'your_secret' DISCOURSE_BACKUP_LOCATION: 's3' DISCOURSE_S3_BACKUP_BUCKET: 'your_backups_location' DISCOURSE_S3_REGION: 'your_s3_region' DISCOURSE_S3_DISABLE_CLEANUP: trueа если вы также используете загрузки S3:
DISCOURSE_ENABLE_S3_UPLOADS: true DISCOURSE_S3_UPLOAD_BUCKET: 'your_uploads_location' -
Возможно, стоит добавить те же плагины, что и на вашем продакшн-сайте.
-
Выполните пересборку:
./launcher rebuild app
Управление тестовым сервером
Теперь у вас есть тестовый сервер, подключенный к вашим резервным копиям S3 (но не перезаписывающий их), который легко восстановить, и который ни при каких обстоятельствах не может отправлять электронные письма. Идеально!
Вы можете восстановить свежую резервную копию на тестовый сервер и приступать к работе. Если вам не понравится результат, вы просто восстановите его снова.
Отключение или включение
Если вы оставляете тестовый сервер включенным в течение длительного времени, существует риск его индексации Google и случайного входа пользователей в него вместо основного сайта. Поскольку их учетные данные являются копией вашего продакшн-сайта, это вполне возможно.
Простой способ избежать этих проблем — просто выключить Discourse:
./launcher stop app
А чтобы включить его снова для использования:
./launcher restart app
Обновления
Если вы хотите, чтобы всё оставалось синхронизированным с точки зрения плагинов и кода, вам нужно будет обновлять и пересобирать как тестовый сервер, так и ваш продакшн-сайт одновременно. То же самое касается изменений в app.yml.
Если вы не используете S3, вам придется вручную перемещать резервные копии между серверами. И они большие!
Заполнение тестового сервера
Если вам нужен тестовый сервер, его следует заполнить вашими реальными данными с вашего реального форума через Restore. Иногда проблема заключается именно в ваших данных, и тестирование форума с другим набором данных может дать вам ложную надежду.
Однако, если вам нужен тестовый сервер, чтобы посмотреть, как работает Discourse, вы можете проверить его с помощью тестовых данных. В этом случае сделайте следующее:
./launcher enter app
ALLOW_DEV_POPULATE=1 bundle install
ALLOW_DEV_POPULATE=1 rake dev:populate
Это заполнит ваш форум тестовыми данными, чтобы вы могли увидеть, как всё выглядит с выбранными вами темами и плагинами. Если вы еще не запустили свой форум, это даст вам представление о том, как всё может выглядеть.
Управление двухфакторной аутентификацией
Хотя имя пользователя и пароль вашей учетной записи с основного сайта должны работать и на тестовом сайте, с двухфакторной аутентификацией (2FA) могут возникнуть сложности. Если у вас возникнут проблемы, отключите 2FA:
./launcher enter app
rake users:disable_2fa[<USERNAME>]


