【Discourse】论坛如何从旧服务器迁移到新服务器

:bookmark: 这是将 Discourse 实例从一个服务器移动到另一个服务器的指南,包括所有设置和数据。本指南适用于使用 Docker 的自托管 Discourse 实例。

:person_raising_hand: 所需的用户级别:系统管理员

:warning: 此过程涉及域和 DNS 更改。确保您有权访问源服务器和目标服务器。

本指南将指导您完成将 Discourse 实例从一台服务器迁移到另一台服务器的过程,确保您的数据、设置和配置得到保留。

概述

在本指南中,您将执行以下关键步骤:

  1. 备份您当前的 Discourse 实例(源服务器)
  2. 将备份文件传输到目标 Discourse 实例(目标服务器)
  3. 在目标服务器上还原备份
  4. 更新 DNS 设置(如果需要)

调整 DNS/域名解析 设置(需要时)

如果您为新服务器使用相同的 域名 ,请提前减少 DNS 条目上的 TTL(生存时间)。这可确保在传播更新的 DNS 记录期间将停机时间降至最低。如果您将使用 新域名 ,则可以跳过此步骤。

登录并准备源服务器

  1. 使用具有管理员权限的帐户登录到源 Discourse 实例服务器
  2. 确保源服务器和目标服务器都使用:
    • 相同的 Discourse 版本
    • 同一组插件
  3. 通过访问 /admin/upgrade 在两个服务器上升级 Discourse 版本

:exclamation: 避免将较新的备份还原到较旧的 Discourse 版本或不兼容的 PostgreSQL 版本,因为这可能会导致错误。

创建和下载备份

  1. 导航到源 Discourse 实例上的 /admin/backups
  2. 单击 备份 按钮创建备份:
  3. 出现提示时,单击 Yes 进行确认
  4. 备份完成后,返回到 Backups 选项卡,并找到新创建的备份
  5. 单击 Download 将文件保存在本地:

:warning: 在继续之前,请检查您的 app.yml 文件,以确保源服务器和目标服务器之间的任何可选设置(如 CDN 配置、安装的插件或 HTTPS 支持)一致。

在目标服务器上恢复备份

  1. 以管理员身份登录您的目标 Discourse 实例
  2. 导航到 /admin/site_settings ,然后搜索 restore 。启用 Allow restore (允许还原) 设置
  3. 转到 /admin/backups 并通过单击 上传 按钮上传您之前下载的备份文件:
  4. 上传完成后,单击上传备份的 Restore 按钮:
  5. 单击确认/是 出现提示时

恢复过程将开始。这可能需要一些时间,具体取决于您的数据库大小。该过程完成后,您将自动注销。

使用命令行恢复备份

将旧服务器上的 app.yml 文件复制到新服务器上,并执行 ./launcher rebuild app 后,将备份文件上传到新服务器的某个目录(以 /home/ )为例:

  1. 将备份文件拷贝到容器内指定路径:
    docker cp /home/sitename-2019-02-03-042252-v20190130013015.tar.gz app:/var/www/discourse/public/backups/default/
  2. 进入容器:
    ./launcher enter app
  3. 启用回复备份功能:
    discourse enable_restore
  4. 恢复备份:
    discourse restore sitename-2019-02-03-042252-v20190130013015.tar.gz
  5. 退出容器:
    exit
  6. 重建容器:
    ./launcher rebuild app

完成并登录

  1. 使用您的管理员凭证登录您的目标 Discourse 实例
  2. 如果站点是使用 HTTPS 备份的,请确保在新服务器上启用 HTTPS。如果未正确配置,请使用 Rails 控制台暂时禁用“强制 https”设置
  3. 通过编辑 app.yml 文件并重新构建实例来重新启用任何可选配置。这可能包括:
    • 安装其他插件
    • 设置 HTTPS 配置

常见问题和解决方案

备份文件未恢复

检查源服务器和目标服务器之间的 Discourse 和 PostgreSQL 版本是否匹配。

恢复后无法登录(开启 HTTPS)

使用 Rails 控制台通过运行以下命令暂时禁用强制 https

SiteSetting.force_https = false

最后编辑时间: 2024-11-21T00:47:00Z

原文链接

另,可以参考这篇:

【Discourse】论坛纯命令行迁移到新服务器过程 - 编程技术 - CEPD@BBS