本指南介绍了如何在不使用 Discourse Web UI 的情况下,通过命令行恢复 Discourse 备份。
所需用户级别:管理员
需要控制台访问权限
以下是在不启动 Discourse Web UI 的情况下,通过命令行恢复 Discourse 备份的方法。这在您迁移服务器时非常有用。
先决条件
在开始之前,请确保完成以下步骤:
- 从源 Discourse 实例下载最新的备份文件。
- 通过运行
./discourse-setup或复制您现有的app.yml来引导目标 Discourse 实例。 - 确保目标 Discourse 实例是最新版本。如有必要,请更新它。
传输备份
- SSH 进入目标服务器,或在目标服务器上创建备份文件夹:
mkdir -p /var/discourse/shared/standalone/backups/default
- 将您的备份文件上传到目标服务器。
scp /path/to/backup/backup.tar.gz root@192.168.1.1:/var/discourse/shared/standalone/backups/default
请务必替换您正在使用的路径、文件名和服务器名称——但您确实希望备份文件最终位于:
/var/discourse/shared/standalone/backups/default
您也可以从 Google Drive、Dropbox、OneDrive 等流行的网络存储站点上传和下载您的 Discourse 备份文件——您需要根据您首选的网络存储提供商查找特定的命令行说明。
请勿更改备份的文件名! Discourse 将备份文件名视为元数据,因此如果您更改文件名,恢复将无法正常工作。请保留原始文件名。
将 /path/to/backup/discourse-xyz.tar.gz 替换为您备份文件的本地路径,将 \u003cserver_ip_address\u003e 替换为目标服务器的 IP 地址。
如果使用 Nginx 作为反向代理(https://meta.discourse.org/t/running-other-websites-on-the-same-machine-as-discourse/17247),请确保容器可以读取所有备份路径,并且 Nginx 可以读取
.sock文件。
恢复备份
- 访问您的目标服务器并导航到 Discourse 文件夹:
cd /var/discourse
- 进入 Discourse Docker 应用容器:
./launcher enter app
- 启用恢复功能:
discourse enable_restore
- 恢复备份文件:
discourse restore sitename-2019-02-03-042252-v20190130013015.tar.gz
提示: 如果您在运行
discourse restore时不提供文件名,它将列出所有可用的备份文件。
如果您站点的
backup_location设置配置为使用 S3,但您手动将备份文件上传到本地文件系统,则需要指定--location local:discourse restore --location local sitename-2019-02-03-042252-v20190130013015.tar.gz类似地,使用
--location s3可以直接从 S3 备份恢复,而无需先下载它。
- 退出 Discourse Docker 应用容器:
exit
重新构建
恢复备份后,您可以选择重新构建目标实例以确保所有设置和配置都已正确应用。
现在是更新
/var/discourse/containers/app.yml以配置完整 HTTPS、附加插件或 CDN 配置的好时机。比较两个实例的app.yml配置以确保一致!
cd /var/discourse
./launcher rebuild app
启用电子邮件
恢复备份后,将禁用非员工用户的外发邮件。您不希望您的测试服务器、新服务器或因其他原因恢复了备份的服务器开始向您的用户发送电子邮件!将 disable_emails 站点设置更改为“no”以重新启用电子邮件。
就这样。您的 Discourse 服务器已成功恢复。