这是将 Discourse 实例从一个服务器移动到另一个服务器的指南,包括所有设置和数据。本指南适用于使用 Docker 的自托管 Discourse 实例。
所需的用户级别:系统管理员
此过程涉及域和 DNS 更改。确保您有权访问源服务器和目标服务器。
本指南将指导您完成将 Discourse 实例从一台服务器迁移到另一台服务器的过程,确保您的数据、设置和配置得到保留。
概述
在本指南中,您将执行以下关键步骤:
- 备份您当前的 Discourse 实例(源服务器)
- 将备份文件传输到目标 Discourse 实例(目标服务器)
- 在目标服务器上还原备份
- 更新 DNS 设置(如果需要)
调整 DNS/域名解析 设置(需要时)
如果您为新服务器使用相同的 域名 ,请提前减少 DNS 条目上的 TTL(生存时间)。这可确保在传播更新的 DNS 记录期间将停机时间降至最低。如果您将使用 新域名 ,则可以跳过此步骤。
登录并准备源服务器
- 使用具有管理员权限的帐户登录到源 Discourse 实例服务器
- 确保源服务器和目标服务器都使用:
- 相同的 Discourse 版本
- 同一组插件
- 通过访问
/admin/upgrade
在两个服务器上升级 Discourse 版本
避免将较新的备份还原到较旧的 Discourse 版本或不兼容的 PostgreSQL 版本,因为这可能会导致错误。
创建和下载备份
- 导航到源 Discourse 实例上的
/admin/backups
- 单击 备份 按钮创建备份:
- 出现提示时,单击 Yes 进行确认
- 备份完成后,返回到 Backups 选项卡,并找到新创建的备份
- 单击 Download 将文件保存在本地:
在继续之前,请检查您的
app.yml
文件,以确保源服务器和目标服务器之间的任何可选设置(如 CDN 配置、安装的插件或 HTTPS 支持)一致。
在目标服务器上恢复备份
- 以管理员身份登录您的目标 Discourse 实例
- 导航到
/admin/site_settings
,然后搜索restore
。启用Allow restore
(允许还原) 设置 - 转到
/admin/backups
并通过单击 上传 按钮上传您之前下载的备份文件:
- 上传完成后,单击上传备份的 Restore 按钮:
- 单击确认/是 出现提示时
恢复过程将开始。这可能需要一些时间,具体取决于您的数据库大小。该过程完成后,您将自动注销。
使用命令行恢复备份
将旧服务器上的 app.yml
文件复制到新服务器上,并执行 ./launcher rebuild app
后,将备份文件上传到新服务器的某个目录(以 /home/
)为例:
- 将备份文件拷贝到容器内指定路径:
docker cp /home/sitename-2019-02-03-042252-v20190130013015.tar.gz app:/var/www/discourse/public/backups/default/
- 进入容器:
./launcher enter app
- 启用回复备份功能:
discourse enable_restore
- 恢复备份:
discourse restore sitename-2019-02-03-042252-v20190130013015.tar.gz
- 退出容器:
exit
- 重建容器:
./launcher rebuild app
完成并登录
- 使用您的管理员凭证登录您的目标 Discourse 实例
- 如果站点是使用 HTTPS 备份的,请确保在新服务器上启用 HTTPS。如果未正确配置,请使用 Rails 控制台暂时禁用“强制 https”设置
- 通过编辑
app.yml
文件并重新构建实例来重新启用任何可选配置。这可能包括:- 安装其他插件
- 设置 HTTPS 配置
常见问题和解决方案
备份文件未恢复
检查源服务器和目标服务器之间的 Discourse 和 PostgreSQL 版本是否匹配。
恢复后无法登录(开启 HTTPS)
使用 Rails 控制台通过运行以下命令暂时禁用强制 https
:
SiteSetting.force_https = false
最后编辑时间: 2024-11-21T00:47:00Z