开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
  1. Home
  2. Computer Science
  3. This article

Discourse 如何使用命令行方式进行恢复

2020年10月06日 537Browse 0Like 0Comments

本文主要用于说明如何从命令行工具的方式中恢复 Discourse,以及我们在备份和恢复的过程中遇到的坑和解决办法。

恢复前需要的准备工作

  • 在新服务器上安装完整和全新的 Discourse,这个安装成功后不需要通过 UI 前台进行用户注册。
  • 备份和获得备份文件。
  • 确定你现在运行的 Discourse 版本是最新的版本,如果你的 Discourse 不是最新的版本,你需要先进行升级。

安装权限的 Discourse

因为 Discourse 必须使用域名公共网络访问才能完整安装。如果你的站点比较大的话,你需要考虑这个问题。你需要考虑修改 DNS 的配置,让你的 Discourse 能够通过公共网络访问,或者你的域名将会在访问的时候出现你 Discourse 正在安装的提示。

这部分的操作按照完整的 Discourse 安装方式进行就可以了,你不需要进行任何操作,你也不需要在安装成功后注册管理员账号。

请注意安装次数,如果你是使用 Let’s Encrypt 的签名的话,你的 CA 签名是有次数限制的。最多可以重新安装 5 次,否则你需要再等 5 天。

除非使用自己的签名。

这个问题的讨论,请参考下面的链接:Discourse 如何不使用 Let's Encrypt 而使用 CA 签名的密钥进行安装

备份和获得备份文件

Discourse 可以使用混合附件存储方式。这个方式的定义是部分附件存储在本地,部分附件存储在云上,最常用的服务就是 AWS 的 S3 服务。

因为这种方式,会导致在恢复的时候,可能出现数据错误,绝大部分情况就是因为有部分附件在本地,有部分附件在 S3 ,但是你的 Discourse 已经全部使用 S3 了,这会导致在恢复的时候提示 S3 校验失败的情况。

在进行备份恢复之前,你需要将你的 Discourse 再备份一次。通常可以直接点后台的备份按钮。

如果你的备份是上传到 S3 的话,你可以直接到 AWS 上将备份文件下载到本地。

如果你是混合存储文件的话,在这里 不要备份附件 否则你没有办法恢复你的备份文件。

 

discourse-s3-01

如上图我们的内容,找到最新的备份文件,然后下载。

传输备份文件到新服务器

SSH 到你需要恢复的服务器上,如果你的服务器上没有下面的目录的话,你需要使用下面的命令创建一个:

mkdir -p /var/discourse/shared/standalone/backups/default

上传你下载的备份文件到这个目录中。如果你是在服务器直接进行数据传输的话,你可以使用下面的命令,下面命令是帮助你 SSH 到老服务器,然后将老服务器上的备份传输到新服务器上。

scp /path/to/backup/backup.tar.gz root@192.168.1.1:/var/discourse/shared/standalone/backups/default

参数说明:

  • /path/to/backup/backup.tar.gz 这个是你老服务器上备份文件的路径和文件名
  • 192.168.1.1 这个是你老服务器的 IP 地址,你需要根据你的实际情况进行更改

你也可以使用 FTP 将备份上传到指定的目录。

我们最终的目的就是需要将你的备份文件存储到路径 /var/discourse/shared/standalone/backups/default 中。

恢复备份

依次执行下面的命令,首先你需要进入你新服务器的 Discourse 安装目录中:

cd /var/discourse

然后通过下面的命令,进入到 Discourse 已经运行的容器,下面的操作其实是针对 Discourse 容器的操作。

./launcher enter app

针对 Discourse 的实例,你需要启用恢复功能,因为这个功能在安装后的默认情况下是禁用的。

discourse enable_restore

恢复备份文件,直接执行下面的命令进行恢复就行。在这里只需要指定文件名就行,你不需要指定特定的路径,因为在 Discourse 容器中,默认会到上面你存储的文件路径中去找你的备份。

discourse restore sitename-2019-02-03-042252-v20190130013015.tar.gz

需要注意的是,上面的参数是示例参数,你需要根据你具体的情况替换掉备份文件的名字。

如果你在这里数据恢复成功的话,你将会在界面的下面看到 [Success] 的提示。否则将会提示失败,在失败的上面将会提示你失败的原因,你可以根据失败的原因重新调整参数后再重试,很多时候主要是附件的原因。

重构 Discourse

退出 Discourse 的容器,你可以使用命令 exit,然后你会界面中看到 bye 的容器退出提示。

然后在操作系统中的 Discourse 目录中,运行下面的命令,对 Discourse 进行重构。

cd /var/discourse
./launcher rebuild app

如果你希望对你新的实例进行调整的话,比如说修改邮件地址,增加容器配置参数,修改 app.yml 文件,在重构之前,你可以对上面的内容进行后再进行重构。

踩过的坑

下面是我们在备份恢复的时候踩过的坑和发现的问题:

S3 混合存储无法恢复数据

在备份的时候,因为混合模式没有办法恢复数据。

需要修改备份方式不备份附件,只备份数据库。

文件权限

文件权限问题。

需要使用 sudo 方式,让安装程序自行确定文件和文件夹的权限,避免权限不足。

无法发送邮件

备份恢复后无法发送邮件。

开放防火墙端口,同时需要将内部配置中的允许发送邮件的域名设置一个,然后再撤销。

CA 无法签名

新实例安装过多,导致无法 CA 签名。

注意恢复次数和必要的时候使用自己的域名签名。

 

https://www.ossez.com/t/discourse/553

Tags: None
Last updated:2020年10月06日

HoneyMoose

有温度的人文和独立的思考

Like
< Previous
Next >

Comments

Cancel reply

Archives
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,362)
    • Confluence (663)
    • Gradle (12)
  • U.S. (482)
  • 文化旅游 (145)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1