你好,
我更换了主机。我从旧实例(最新 Discourse 版本)进行了完整备份(启用了“包含缩略图”选项)。
我更改了域名的 IP 地址,然后先安装了一个新的 Discourse 实例(使用 Docker 的经典安装方式)。
接着,我将备份文件复制到 /var/discourse/shared/standalone/backups/default,并在新实例中执行了恢复操作。
一切看似顺利,但话题中没有显示任何消息。日志看起来正常。我可以正常登录,除了话题为空之外,其他一切似乎都正常。
有什么建议吗?如果问题存在,我应该从哪里入手排查?现在我该怎么做?
抱歉图片中的文本不是英文:
问题已修复。
CSP 设置在恢复时被强制启用。某些主题组件通过 CDN 声明了脚本。这些脚本未被列入白名单,导致因 JS 错误而无法显示主题消息。
虽然更高的安全性总是值得欢迎,但我没想到 Discourse 会更改备份设置。对于新安装我可以理解,但对于备份则不然。因为这不仅仅是备份/恢复的问题,我起初甚至没想到要去检查浏览器控制台。我必须承认,由于构建 Discourse 极其耗时,我为这样一个愚蠢的问题浪费了大量时间、精力和睡眠,感到非常沮丧。
无论如何,我现在知道了,请大家注意!
gerhard
(Gerhard Schlager)
3
很高兴你找到了问题的原因。
如果你是在完全相同版本的 Discourse 上恢复备份,我会认为这是一个错误。情况是这样吗?当你在较新版本的 Discourse 上恢复来自较旧版本的备份时,系统表现不同是预期的。
你向主题组件的作者报告 CSP 问题了吗?这至少可以防止其他人遇到同样的问题。
可能较新,因为我们只在有新版本时进行升级,而安装新实例会从 test-passed 获取最新版本。
无论如何,无论新旧,除非有非常特殊的情况,我认为现有设置绝不应以任何方式被更改。此外,基于相同的版本,我期望我的备份具有相同的行为。如果有任何更改,至少在你连接到 Discourse 时显示一个警告(例如:“出于安全原因,CSP 设置已启用”,你明白我的意思)将是受欢迎的(或任何类型的更改)。
Remah
(Just another happy Discourse user)
5
请思考这一点的含义。你所期望的情况需要整个行业改变方向。
目前,适用于原地升级的规则同样适用于旧数据库的恢复。这对应用程序而言是连贯且可预测的行为。
如果你希望设置保持不变,常规方法是使用完全相同版本的应用程序。
RGJ
(Richard - Communiteq)
6
我不太明白,OP 说备份是从最新版本取的,那在这种情况下应该不会有额外的迁移吧?
这里的“最新”指的是最新发布的版本,而不是 GitHub 上 test-passed 分支的最新提交。不过确实,它们都基于相同的版本 2.4.0.beta9。
我们讨论的仅仅是备份和设置值,仅此而已。Discourse 版本、数据库变更等其他因素都与此无关。我看不出有任何正当理由在恢复备份时更改设置值却不通知管理员。你正是通过那些特定设置来定制 Discourse 的,仅仅因为你在较新版本的 Discourse 上恢复备份就随意更改你的设置值,这毫无意义。
如前所述,如果某个特定设置的值需要更改,我希望 Discourse 能告知管理员发生了什么。这仅仅是为了保持透明,并让管理员的工作更轻松。我的观点是,除非有非常充分的理由,否则绝不应更改用户设置;如果有必要,通知管理员也是合情合理的。