Перенос форума на новый сервер

Для различных продакшн-сервисов, которые я запускаю (сайты на WordPress и т.д.), я люблю поддерживать второй, «зеркальный» сайт наряду с основным. Например, у меня могут быть www.mydomain.com и mirror.mydomain.com. Последний создаётся путём клонирования основного сайта, после чего отключаются несколько процессов, которые не нужно запускать.

Я хотел бы сделать то же самое со своим форумом. Насколько я понимаю, функция восстановления работает «полностью»: она восстанавливает не только данные (темы и т.д.), но и всю конфигурацию. Это оставляет мне две проблемы, которые я хотел бы лучше понять.

  1. Я использую единый вход (SSO) через WordPress. После завершения восстановления я хочу, чтобы сайт Discourse на mirror-forum.mydomain.com указывал на mirror.mydomain.com как источник входа. Как изменить настройки зеркального форума (конечно, это замкнутый круг — после восстановления и входа зеркальный сайт, вероятно, будет указывать на основной сайт)?

  2. Я хочу быть на 100% уверен, что с зеркального форума не отправляются электронные письма. Опять же, если я восстановлю данные на зеркальный форум, то, полагаю, все запланированные задачи основного сайта (отправка дайджестов пользователям и т.д.) также будут запланированы, верно? Как этого избежать? Есть ли центральное место, где можно отключить ВСЮ рассылку с этого сервера?

Как мне лучше подойти к решению этой задачи?

Спасибо.

Посмотрите по ссылке Syncing Production to Staging

особенно раздел Это звучит как хороший подход

Ниже представлен скрипт, который мы используем для синхронизации тестового сайта с производственным.

#!/bin/bash
echo "cd /var/www/discourse"
cd /var/www/discourse

echo "/usr/local/bin/rake site_settings:export > /var/www/discourse/settings.yml"
/usr/local/bin/rake site_settings:export >  /var/www/discourse/settings.yml

echo "cd /var/www/discourse/public/backups/default"
cd /var/www/discourse/public/backups/default

echo "/usr/local/bin/discourse restore " $(ls -r | head -1)
/usr/local/bin/discourse restore $(ls -r | head -1)

echo "cd /var/www/discourse"
cd /var/www/discourse

echo "/usr/local/bin/rake site_settings:import <  /var/www/discourse/settings.yml"
/usr/local/bin/rake site_settings:import <  /var/www/discourse/settings.yml

Он вызывается из Docker.

Пример вызова скрипта извне экземпляра Discourse:

echo 'cd /var/www/discourse; RUBY_ENV=production rails r /var/www/discourse/script/import_scripts/wordpress-with-sabai-export.rb /var/www/discourse/script/import_scripts/wordpress-discourse-id-map.json' | docker exec -i $(docker ps | grep app | awk '{print $1}') /bin/bash

Установите настройку «Отключить электронную почту» на зеркальном сайте в значение «да».

https://{fully-qualiified-domain-name}/admin/site_settings/category/email?filter=disable%20email

Да, отключите рассылку электронной почты в настройках вашего сайта. Или вы можете установить отправку писем только для сотрудников, что иногда бывает полезно.

Отличная работа, ребята. Похоже, здесь есть всё, что мне нужно. Спасибо.