如何在不更改版本的情况下重建 Discourse?

我需要更新 app.yml 中的 SMTP 设置,但不想更改 Discourse 的版本。

当我通过 version 标签指定版本时,重建会失败,并出现以下错误。我当前使用的版本是 2.4.0.beta8。

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+ failed with return #<Process::Status: pid 336 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem update bundler", "find $home ! -user discourse -exec chown discourse {} \\+"]}
6269af00c2a4671a6fd2cb13a55bd475743205262bae7f483bf468e4dcacbeed
** 启动失败 ** 请向上滚动并查找之前的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
1 个赞

这个问题每年都会出现,可能应该创建一个#操作指南主题。我刚刚搜索了特定版本

1 个赞

是的,这里的区别是我在 yml 中使用了 version 标签,但在重新构建时遇到了错误。

1 个赞

如果您只需要更改 SMTP 设置,可以执行以下命令:

./launcher destroy app 
./launcher start app
5 个赞

好的,这样即使不重新构建也能读取 YML 文件,听起来不错。虽然这能解决我的燃眉之急,但我仍然想知道为什么版本功能不起作用。

你说遇到了“错误”。这意味着你操作有误。我推测最可能是 YML 格式错误,但如果不清楚具体报错内容,确实无法确定。

抱歉,请向上滚动页面,查找之前的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。

3 个赞

是的,我注意到我在帖子中提供的信息不够详细。我认为这不是格式错误,因为去掉版本标签后 yml 文件可以正常工作。

我又进行了一些测试,发现我遇到的这个 bug 在版本 10 和 11 中不会触发,但在版本 4 到 9 中会触发。

我在输出日志中只发现了两个错误,我认为这两个错误是预期的:

2020-02-22 10:42:33.410 UTC [62] postgres@postgres ERROR:  database "discourse" already exists

2020-02-22 10:42:33.533 UTC [73] postgres@discourse ERROR:  role "discourse" already exists

我查看了版本 10 的发布说明,但没有找到与此相关的修复说明。

很高兴问题已得到解决,加上您针对 SMTP 设置的变通方案(我将在周一测试,周末不想在生产服务器上操作),目前对我来说并不紧急。但最好能确认是否存在测试无法捕获的未知错误,如果该问题只是偶然被修复而非通过针对性修改解决,未来可能会再次出现。我想知道未来版本函数可以预期达到怎样的稳定性。

以下是以 v2.4.0.beta9 为目标版本运行时的输出转储:
dump_disco_version_error.txt (127.5 KB)

我终于抽出时间测试了,但它没有生效。我可以看到应用在启动时打印出了正确的密码,但由于访问被拒绝,邮件发送仍然失败。

嗯,我确定它以前是有效的。我见过其他一些设置没有被推送到配置文件。我不确定这是否被视为一个错误。

也可能是因为我使用的是旧版本,因此它在新版本中可能有效,也可能无效。我只是想分享一下我的发现。

我最近又遇到这个问题,看起来版本功能对分支有效,但对标签无效。我猜可能是因为启动器没有先获取所有标签,但我不确定。有没有办法编辑启动器脚本?

终于弄明白问题出在哪里了:discourse_docker 仓库和 discourse 仓库相互依赖,因此特定版本的 discourse 只能通过特定版本的 discourse_docker 仓库来安装。不幸的是,discourse_docker 仓库中没有标签,所以很难确定安装特定版本时应使用哪个 SHA。至少现在总算有了个交代。我会在以后进行安装时开始记录这些注意事项。

1 个赞