更新 Discourse 失败

我今天尝试将 Discourse 更新到最新版本。失败了。这是日志:

********************************************************
*** 请耐心等待,下一步可能需要一些时间 ***
********************************************************
正在重启 Unicorn,以释放内存
正在重启 unicorn pid: 548
等待 Unicorn 重新加载。
等待 Unicorn 重新加载..
等待 Unicorn 重新加载...
等待 Unicorn 重新加载....
等待 Unicorn 重新加载.....
等待 Unicorn 重新加载......
等待 Unicorn 重新加载.......
等待 Unicorn 重新加载........
等待 Unicorn 重新加载.........
正在停止 3 个 Unicorn 工作进程,以释放内存
正在停止作业队列以回收内存,主进程 pid 为 2943724
$ cd /var/www/discourse && git fetch --tags --prune-tags --prune --force
$ cd /var/www/discourse && git reset --hard HEAD@{upstream}
HEAD 现在指向 be4f1e335 PERF: Cache `hostname` in `DiscourseLogstashLogger` (#27442)
$ bundle install --retry 3 --jobs 4
Bundle 完成!141 个 Gemfile 依赖项,已安装 174 个 gem。
'development' 和 'test' 组中的 Gem 未安装。
Bundled gems 已安装到 `./vendor/bundle`
您直接依赖的一个已安装 gem 正在寻找资金支持。
  运行 `bundle fund` 查看详情
$ yarn install
yarn install v1.22.19
[1/5] 正在验证 package.json...
[2/5] 正在解析包...
warning Resolution 字段 "unset-value@2.0.1" 与请求的版本 "unset-value@^1.0.0" 不兼容
[3/5] 正在获取包...
error ember-template-lint@6.0.0: 引擎 "node" 与此模块不兼容。预期版本为 "^18.18.0 || ^20.9.0 || >=21.1.0"。得到 "18.16.0"
error 发现不兼容模块。
info 有关此命令的文档,请访问 https://yarnpkg.com/en/docs/cli/install
Docker Manager: 升级失败
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:210:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:101:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.4/lib/rails/commands.rb:18:in `<main>'
/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
正在启动最初停止的 3 个 Unicorn 工作进程

有什么想法吗?

您应该执行命令行升级。

./launcher rebuild app

2 个赞

嗨 Jay,

我已经完成了。我也尝试运行了 ./launcher start app

但这次我遇到了一个不同的错误,是 Nginx 的“网关错误”。我注意到 Discourse 曾抱怨存储空间不足,但我已经清理了一些空间。

附件是一些信息。

您是在释放空间后执行了启动还是重建?

在启动容器后,出现“网关错误”是预期中的,可能会持续一分钟或几分钟。但也有可能是您迁移了数据库,旧容器将不再工作。

1 个赞

因此,每次我运行./launcher rebuild app./launcher start app./launcher restart app时,都会出现关于清理空间的烦人问题。我每次都按Y。

好的,我手动清理了一些空间。显然,snap 目录中存在无用文件。

然后我再次尝试了 ./launcher restart app 命令。这次,错误消失了。

但我仍然收到 502 Bad Gateway 错误。

1 个赞

如果网站运行了几分钟后仍然出现此问题,请查看 /var/discourse/shared/standalone/logs/rails/production.log 以及 .../logs/var-log/nginx/*

所以,这是 PostgreSQL 的问题。我该如何解决?我的意思是,我们不会手动启动 PostgreSQL 服务器,对吧?

postgres_data 目录中的文件由我在服务器上的用户名拥有,组是 crontab

为什么?

这不是标准安装吗?

我使用了标准安装。

然后更新过程(通过管理员仪表板)失败了。所以我不得不 SSH 进入服务器并清理了一些空间。当我执行 ./launcher rebuild (or restart) app 时,该过程没有报错,但我遇到了 502 网关错误。

那么,postgres_data 应该归谁所有?Root?

这应该全部以root身份安装。

我以 root 身份运行了 ./launcher rebuild (or restart) app。我先运行了 sudo su。无论如何,我认为你不能用普通用户执行 launcher(Docker 会报错)。

好的,我终于解决了这些问题。

  1. 我调整了存储空间,为 Discord 腾出了一些空间。我在 GCP 中为 Discord VM 创建了一个快照,并用更大的存储空间恢复了它。
  2. 我更改了 containers/app.yml 文件的内容:

templates:
  - "templates/postgres.template.yml"

templates:
  - "templates/postgres.13.template.yml"

然后我运行了 ./launcher rebuild app,之后再也没有遇到问题。

谢谢!

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.