将论坛迁移至新服务器

对于我运行的各种生产服务(如 WordPress 站点等),我喜欢在正式站点之外再运行一个“镜像”站点。例如,我可能同时拥有 www.mydomain.commirror.mydomain.com。后者是通过从生产站点克隆创建的,随后禁用了几个无需运行的进程。

我想对我的论坛也采用同样的做法。据我了解,恢复功能是“全盘”的,它不仅恢复数据(主题等),还会恢复整个配置。这给我带来了两个需要进一步理解的问题:

  1. 我使用 WordPress SSO。恢复完成后,我希望 mirror-forum.mydomain.com 的 Discourse 站点将登录源指向 mirror.mydomain.com。我该如何修改镜像后的论坛站点?(当然存在一个死循环:恢复并登录后,镜像站点可能仍指向生产站点。)

  2. 我希望确保镜像论坛站点绝对不会发送任何电子邮件。同样,如果我将数据恢复到镜像论坛站点,那么我假设生产站点的所有计划任务(如向用户发送摘要邮件等)也会被调度,对吗?我该如何避免这种情况?是否有某个集中位置可以关闭该服务器上的所有电子邮件发送?

我该如何着手处理这个问题?

谢谢。

请查看 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

是的,请在您的站点设置中禁用电子邮件。或者,您可以将电子邮件设置为仅对工作人员可见,这在某些情况下很有帮助。

大家做得真棒。这看起来满足了我所有的需求。谢谢。