Discourse实例升级到2022年2月15日失败

Commits · discourse/discourse · GitHub 升级到最新版本导致网站宕机,以下是日志中值得注意的部分:

I, [2022-02-15T05:27:48.995821 #1]  INFO -- : 在 /etc/postgresql/13/main/pg_hba.conf 中将 (?-mix:^host.*all.*all.*127.*$) 替换为 host all all 0.0.0.0/0 md5
I, [2022-02-15T05:27:48.997476 #1]  INFO -- : 在 /etc/postgresql/13/main/pg_hba.conf 中将 (?-mix:^host.*all.*all.*::1\/128.*$) 替换为 host all all ::/0 md5
I, [2022-02-15T05:27:48.998553 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2022-02-15T05:27:49.003918 #1]  INFO -- : > sleep 5
2022-02-15 05:27:49.151 UTC [41] LOG:  正在启动 PostgreSQL 13.5 (Debian 13.5-1.pgdg110+1),架构 x86_64-pc-linux-gnu,由 gcc (Debian 10.2.1-6) 10.2.1 20210110 编译,64 位
2022-02-15 05:27:49.152 UTC [41] LOG:  正在监听 IPv4 地址 "0.0.0.0",端口 5432
2022-02-15 05:27:49.152 UTC [41] LOG:  正在监听 IPv6 地址 "::",端口 5432
2022-02-15 05:27:49.162 UTC [41] LOG:  正在监听 Unix 套接字 "/var/run/postgresql/.s.PGSQL.5432"
2022-02-15 05:27:49.184 UTC [44] LOG:  数据库系统在 2022-02-15 00:12:32 UTC 已关闭
2022-02-15 05:27:49.209 UTC [41] LOG:  数据库系统已准备好接受连接
I, [2022-02-15T05:27:54.013563 #1]  INFO -- : 
I, [2022-02-15T05:27:54.015179 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
2022-02-15 05:27:54.259 UTC [54] postgres@postgres ERROR:  数据库 "discourse" 已存在
2022-02-15 05:27:54.259 UTC [54] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: error: 数据库创建失败:ERROR:  数据库 "discourse" 已存在
I, [2022-02-15T05:27:54.270626 #1]  INFO -- : 
I, [2022-02-15T05:27:54.272627 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2022-02-15 05:27:54.425 UTC [58] postgres@discourse ERROR:  角色 "discourse" 已存在
2022-02-15 05:27:54.425 UTC [58] postgres@discourse STATEMENT:  create user discourse;
ERROR:  角色 "discourse" 已存在
I, [2022-02-15T05:27:54.431376 #1]  INFO -- : 
I, [2022-02-15T05:27:54.431915 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
I, [2022-02-15T05:27:54.533010 #1]  INFO -- : GRANT
I, [2022-02-15T05:27:55.303411 #1]  INFO -- : > echo redis installed
I, [2022-02-15T05:27:55.310858 #1]  INFO -- : redis installed

I, [2022-02-15T05:27:55.312551 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2022-02-15T05:27:55.323276 #1]  INFO -- : logfile ""

I, [2022-02-15T05:27:55.324362 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2022-02-15T05:27:55.329352 #1]  INFO -- : > sleep 10
102:C 15 Feb 2022 05:27:55.343 # oO0OoO0OoO0Oo Redis 正在启动 oO0OoO0OoO0Oo
102:C 15 Feb 2022 05:27:55.343 # Redis 版本=6.2.6, 位宽=64, 提交=00000000, 修改=0, pid=102, 刚刚启动
102:C 15 Feb 2022 05:27:55.343 # 配置已加载
102:M 15 Feb 2022 05:27:55.346 * 单调时钟:POSIX clock_gettime
102:M 15 Feb 2022 05:27:55.349 * 运行模式=独立,端口=6379。
102:M 15 Feb 2022 05:27:55.350 # 警告:TCP  backlog 设置 511 无法强制执行,因为 /proc/sys/net/core/somaxconn 被设置为较低的值 128。
102:M 15 Feb 2022 05:27:55.350 # 服务器已初始化
102:M 15 Feb 2022 05:27:55.350 # 警告:overcommit_memory 设置为 0!在低内存条件下后台保存可能会失败。要解决此问题,请将 'vm.overcommit_memory = 1' 添加到 /etc/sysctl.conf,然后重启或运行命令 'sysctl vm.overcommit_memory=1' 使其生效。
102:M 15 Feb 2022 05:27:55.352 * 正在加载由版本 6.2.6 生成的 RDB
102:M 15 Feb 2022 05:27:55.352 * RDB 年龄 18923 秒
102:M 15 Feb 2022 05:27:55.352 * 创建时 RDB 内存使用量 133.51 MB
102:M 15 Feb 2022 05:27:55.912 # RDB 加载完成,已加载键:7294,已过期键:127。
102:M 15 Feb 2022 05:27:55.912 * 从磁盘加载数据库耗时:0.560 秒
102:M 15 Feb 2022 05:27:55.912 * 已准备好接受连接
I, [2022-02-15T05:28:05.336548 #1]  INFO -- : 
I, [2022-02-15T05:28:05.337696 #1]  INFO -- : > thpoff echo "thpoff is installed!"
I, [2022-02-15T05:28:05.349534 #1]  INFO -- : thpoff is installed!

I, [2022-02-15T05:28:05.349959 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end'
I, [2022-02-15T05:28:05.496038 #1]  INFO -- : 
I, [2022-02-15T05:28:05.496604 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end'
I, [2022-02-15T05:28:05.617847 #1]  INFO -- : 
I, [2022-02-15T05:28:05.618268 #1]  INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_CDN_URL"] || "")[0..1] == "//"; puts "Aborting! CDN must have a protocol specified. Once fixed you should rebake your posts now to correct all posts."; exit 1; end'
I, [2022-02-15T05:28:05.754370 #1]  INFO -- : 
I, [2022-02-15T05:28:05.755864 #1]  INFO -- : > rm -f /etc/cron.d/anacron
I, [2022-02-15T05:28:05.763371 #1]  INFO -- : 
I, [2022-02-15T05:28:05.773372 #1]  INFO -- : 文件 > /etc/cron.d/anacron  chmod:   chown: 
I, [2022-02-15T05:28:05.785161 #1]  INFO -- : 文件 > /etc/runit/1.d/copy-env  chmod: +x  chown: 
I, [2022-02-15T05:28:05.801026 #1]  INFO -- : 文件 > /etc/service/unicorn/run  chmod: +x  chown: 
I, [2022-02-15T05:28:05.816469 #1]  INFO -- : 文件 > /etc/service/nginx/run  chmod: +x  chown: 
I, [2022-02-15T05:28:05.828667 #1]  INFO -- : 文件 > /etc/runit/3.d/01-nginx  chmod: +x  chown: 
I, [2022-02-15T05:28:05.841176 #1]  INFO -- : 文件 > /etc/runit/3.d/02-unicorn  chmod: +x  chown: 
I, [2022-02-15T05:28:05.841464 #1]  INFO -- : 在 /etc/service/unicorn/run 中将 # postgres 替换为 sv start postgres || exit 1
I, [2022-02-15T05:28:05.842241 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2022-02-15T05:28:05.847862 #1]  INFO -- : > cd /var/www/discourse && git reset --hard
130:C 15 Feb 2022 05:28:05.853 # oO0OoO0OoO0Oo Redis 正在启动 oO0OoO0OoO0Oo
130:C 15 Feb 2022 05:28:05.854 # Redis 版本=6.2.6, 位宽=64, 提交=00000000, 修改=0, pid=130, 刚刚启动
130:C 15 Feb 2022 05:28:05.855 # 配置已加载
130:M 15 Feb 2022 05:28:05.857 * 单调时钟:POSIX clock_gettime
130:M 15 Feb 2022 05:28:05.858 # 警告:无法创建服务器 TCP 监听套接字 *:6379: bind: 地址已在使用中
130:M 15 Feb 2022 05:28:05.859 # 监听端口 6379 (TCP) 失败,正在中止。
正在更新文件:100% (30947/30947),完成。
I, [2022-02-15T05:28:13.624544 #1]  INFO -- : HEAD 现在位于 e1367cde I18N: 改进被屏蔽单词错误消息的文案 (#15741)
I, [2022-02-15T05:29:36.205328 #1]  INFO -- : > cd /var/www/discourse && [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production && yarn cache clean'
警告:解析字段 "lodash@4.17.21" 与请求的版本 "lodash@4.17.15" 不兼容。
警告:" > @mixer/parallel-prettier@2.0.1" 缺少对等依赖项 "prettier@^2.0.0"。
I, [2022-02-15T05:33:01.692668 #1]  INFO -- : yarn install v1.22.17
[1/5] 验证 package.json...
[2/5] 解析依赖包...
[3/5] 获取依赖包...
[4/5] 链接依赖项...
[5/5] 构建新包...
$ yarn --cwd app/assets/javascripts/discourse
yarn install v1.22.17
[1/4] 解析依赖包...
[2/4] 获取依赖包...
[3/4] 链接依赖项...
[4/4] 构建新包...
success 锁文件已保存。
Done in 133.99s.
Done in 195.02s.
yarn cache v1.22.17
success 缓存已清除。
Done in 9.35s.

I, [2022-02-15T05:33:01.697905 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2022-02-15T05:33:12.324517 #1]  INFO -- : discourse-github 已是最新兼容版本
discourse-solved 已是最新兼容版本
discourse-chat 已是最新兼容版本

I, [2022-02-15T05:33:12.325695 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
102:M 15 Feb 2022 05:33:37.418 * 300 秒内发生 100 次更改。正在保存...
102:M 15 Feb 2022 05:33:37.423 * 后台保存已由 pid 1143 启动
1143:C 15 Feb 2022 05:33:38.349 * 数据库已保存到磁盘
1143:C 15 Feb 2022 05:33:38.352 * RDB: 复制写入使用了 2 MB 内存
102:M 15 Feb 2022 05:33:38.429 * 后台保存成功终止
I, [2022-02-15T05:33:38.994811 #1]  INFO -- : gem install sawyer -v 0.8.2 -i /var/www/discourse/plugins/discourse-github/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed sawyer-0.8.2
1 gem installed
gem install octokit -v 4.21.0 -i /var/www/discourse/plugins/discourse-github/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed octokit-4.21.0
1 gem installed
== 20220214224506 ResetCustomEmojiPostBakesVersionSecureFix: migrating ========
== 20220214224506 ResetCustomEmojiPostBakesVersionSecureFix: migrated (0.0099s) 

== 20220214233625 AddBounceErrorCodeToEmailLog: migrating =====================
-- add_column(:email_logs, :bounce_error_code, :string, {:null=true})
   -> 0.0103s
== 20220214233625 AddBounceErrorCodeToEmailLog: migrated (0.0121s) ============


I, [2022-02-15T05:33:38.996639 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
- 正在构建
- 正在构建
- 正在构建... 
102:M 15 Feb 2022 05:38:39.069 * 300 秒内发生 100 次更改。正在保存...
102:M 15 Feb 2022 05:38:39.080 * 后台保存已由 pid 1213 启动
1213:C 15 Feb 2022 05:38:39.863 * 数据库已保存到磁盘
1213:C 15 Feb 2022 05:38:39.867 * RDB: 复制写入使用了 2 MB 内存
102:M 15 Feb 2022 05:38:39.883 * 后台保存成功终止
[WARN] (broccoli-terser-sourcemap) 压缩 "assets/discourse.js" 耗时:35001 毫秒(超过 20,000 毫秒)
Killed
error 命令失败,退出代码 137。
I, [2022-02-15T05:52:50.058283 #1]  INFO -- : yarn run v1.22.17
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
警告:Node v16.13.2 未针对您的平台上的 Ember CLI 进行测试。我们建议您使用最新的「Active LTS」版本的 Node.js。详见 https://git.io/v7S5n。
弃用警告:jQuery 集成到 Ember 中已被弃用,并将在 Ember 4.0 中移除。您可以选择不使用 jQuery,或者安装 `@ember/jquery` 插件以提供 jQuery 集成。请参阅弃用指南以获取更多详情:https://emberjs.com/deprecations/v3.x#toc_jquery-apis
环境:production
有关此命令的文档,请访问 https://yarnpkg.com/en/docs/cli/run

I, [2022-02-15T05:52:50.072549 #1]  INFO -- : 正在终止异步进程
I, [2022-02-15T05:52:50.072816 #1]  INFO -- : 向 HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 41 发送 INT
I, [2022-02-15T05:52:50.073275 #1]  INFO -- : 向 exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 102 发送 TERM
102:signal-handler (1644904370) 收到 SIGTERM,正在调度关闭...
2022-02-15 05:52:50.074 UTC [41] LOG:  收到快速关闭请求
2022-02-15 05:52:50.090 UTC [41] LOG:  中止任何活跃事务
2022-02-15 05:52:50.096 UTC [41] LOG:  后台工作进程 "logical replication launcher" (PID 50) 以退出代码 1 退出
2022-02-15 05:52:50.102 UTC [45] LOG:  正在关闭
102:M 15 Feb 2022 05:52:50.118 # 用户请求关闭...
102:M 15 Feb 2022 05:52:50.120 * 在退出前保存最终的 RDB 快照。
2022-02-15 05:52:50.248 UTC [41] LOG:  数据库系统已关闭
102:M 15 Feb 2022 05:52:51.075 * 数据库已保存到磁盘
102:M 15 Feb 2022 05:52:51.076 # Redis 现在准备退出,再见...


失败
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' 失败,返回 #<Process::Status: pid 1144 exit 137>
失败位置:/usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
执行失败,参数为 {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
1716fd9590e21cdfdaccea0ac6faabd133a6423e1a24ef3b3b5be0e68ce422c9
** 引导失败 ** 请向上滚动查看更早的错误消息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。

正在运行 discourse-doctor,并收集更详细的日志。

这是我制作并已成功使用一年或更长时间的升级脚本:

https://github.com/balupton/dotfiles/blob/master/commands/discourse-upgrader

向上滚动应该在“FAILED”上方看到更具体的错误。

看起来它不喜欢某个主题/组件。您可能需要运行 ./launcher restart app 来恢复重建前的版本,以便您可以使用常规 UI 来禁用您怀疑的那个,然后再尝试升级。向上滚动是否让您对是哪个组件有所了解?

brew doctor 唯一有意义的日志是这些:

I, [2022-02-15T06:14:34.823778 #1]  INFO -- : 
> cd /var/www/discourse 
&& su discourse -c 'bundle exec rake themes:update assets:precompile'
- Building
- Building
- building... 
Killed
error Command failed with exit code 137.
I, [2022-02-15T06:25:24.689000 #1]  INFO -- : yarn run v1.22.17
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
WARNING: Node v16.13.2 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
DEPRECATION: The integration of jQuery into Ember has been deprecated and will be removed with Ember 4.0. You can either opt-out of using jQuery, or install the `@ember/jquery` addon to provide the jQuery integration. Please consult the deprecation guide for further details: https://emberjs.com/deprecations/v3.x#toc_jquery-apis
Environment: production
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

I, [2022-02-15T06:25:24.701625 #1]  INFO -- : Terminating async processes
I, [2022-02-15T06:25:24.702927 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 42
I, [2022-02-15T06:25:24.703765 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 103
103:signal-handler (1644906324) Received SIGTERM scheduling shutdown...
2022-02-15 06:25:24.710 UTC [42] LOG:  received fast shutdown request
2022-02-15 06:25:24.741 UTC [42] LOG:  aborting any active transactions
103:M 15 Feb 2022 06:25:24.777 # User requested shutdown...
103:M 15 Feb 2022 06:25:24.777 * Saving the final RDB snapshot before exiting.
2022-02-15 06:25:24.796 UTC [42] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
2022-02-15 06:25:24.797 UTC [46] LOG:  shutting down
2022-02-15 06:25:25.023 UTC [42] LOG:  database system is shut down
103:M 15 Feb 2022 06:25:26.383 * DB saved on disk
103:M 15 Feb 2022 06:25:26.385 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse 
&& su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #
<Process::Status: pid 1146 exit 137>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
a1a2ad7dab631a87852f269d0de01bee80aea384be8a94ba4eb555f1fa5d9094
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
==================== END REBUILD LOG ====================
Failed to rebuild app.

Checking your domain name . . .

Connection to discuss.bevry.me succeeded.
You should probably remove any non-standard plugins and rebuild.
Attempting to restart existing container. . . 
x86_64 arch detected.

starting up existing container
+ /usr/bin/docker start app
Error response from daemon: driver failed programming external connectivity on endpoint app (924d10c5f09f04b43e96bd6d1a4a13945cd86ebbb12821a4943914538821b856): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use
Error: failed to start containers: app
Failed to restart the container.

I’ve updated the OP to include more of the original logs.

Rerunning discourse-doctor again, as it failed because wget was missing. Will post the full log once that is done.

我可以确认这一点,我已经尝试过在 3 个不同的实例上进行操作,并且构建在达到以下状态后都会失败。

I, [2022-02-15T07:09:36.714521 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
I, [2022-02-15T07:09:46.598212 #1]  INFO -- :
I, [2022-02-15T07:09:46.599983 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile'
- Building
- Building
- building...
Killed
error Command failed with exit code 137.
I, [2022-02-15T07:30:11.622116 #1]  INFO -- : Checking 'Easy Footer' for 'default'... up to date
Checking 'Discourse Loading Slider' for 'default'... up to date
Checking 'discourse-search-banner' for 'sandbox'... up to date
Checking 'discourse-category-sidebars' for 'sandbox'... up to date
Checking 'Hide Users Column' for 'sandbox'... up to date
Checking 'discourse-sidebar-nav' for 'sandbox'... up to date
Checking 'Dracula Theme' for 'sandbox'... up to date
Checking 'discourse-buttons' for 'tekduke'... yarn run v1.22.17
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
WARNING: Node v16.13.2 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
DEPRECATION: The integration of jQuery into Ember has been deprecated and will be removed with Ember 4.0. You can either opt-out of using jQuery, or install the `@ember/jquery` addon to provide the jQuery integration. Please consult the deprecation guide for further details: https://emberjs.com/deprecations/v3.x#toc_jquery-apis
Environment: production
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.



FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1034 exit 137>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
49ed46d025f5fe0a3de022b073b507cc3d94f74f96a60fe2d55042d413def454
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

看起来是 ember CLI 相关的问题。

@balupton,你能试试更改 EMBER_CLI_PROD_ASSETS: 0 然后再重新构建吗?在我进行上述更改后,我至少有 1 次成功的重新构建。

这些似乎是唯一表明有问题相关的日志:

I, [2022-02-15T07:15:48.531001 #1]  INFO -- : 
> cd /var/www/discourse 
&& [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production 
&& yarn cache clean'
warning Resolution field "lodash@4.17.21" is incompatible with requested version "lodash@4.17.15"
warning " > @mixer/parallel-prettier@2.0.1" has unmet peer dependency "prettier@^2.0.0".
I, [2022-02-15T07:19:45.453691 #1]  INFO -- : 
> cd /var/www/discourse 
&& su discourse -c 'bundle exec rake themes:update assets:precompile'
- Building
- Building
- building... 
Killed
error Command failed with exit code 137.
I, [2022-02-15T07:31:39.549100 #1]  INFO -- : yarn run v1.22.17
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build -prod
WARNING: Node v16.13.2 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
DEPRECATION: The integration of jQuery into Ember has been deprecated and will be removed with Ember 4.0. You can either opt-out of using jQuery, or install the `@ember/jquery` addon to provide the jQuery integration. Please consult the deprecation guide for further details: https://emberjs.com/deprecations/v3.x#toc_jquery-apis
Environment: production
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse 
&& su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1145 exit 137>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
a262c461f2ae24390cb1397df309c44738cdc2688483d5fb7d52a3fde3155409
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

我会试试那个,怎么应用?

算了,找到了:

我现在就去试试。

查看更新日志:

我想知道是不是这个:

因为其中一个日志是:

103:M 15 Feb 2022 06:54:18.720 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

内存不足。

请确保您有足够的(虚拟)内存。如今,1GB 内存和 2GB 交换空间可能不足以进行重建。

是的,它奏效了。

nvim /var/discourse/containers/app.yml
env:
  # ...
  ## Workaround for: https://meta.discourse.org/t/failed-to-upgrade-discourse-instance-to-feb-15-2022/218204/7?u=balupton
  EMBER_CLI_PROD_ASSETS: 0

Discourse 现在已成功运行,top 目前返回:

KiB Mem : **2041324** total, **287808** free, **1033300** used, **720216** buff/cache
KiB Swap: **0** total, **0** free, **0** used. **581308** avail Mem

这是来自 Scaleway 的 VC1S 服务器:

在以下位置执行建议的更改:

103:M 15 Feb 2022 06:54:18.720 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

也能解决问题吗?

该 VPS 有 4GB RAM 和 2GB Swap。

你需要添加一些交换空间。看起来你有足够的磁盘空间,所以可以添加 2G 甚至 3G 以确保安全。

我认为 discourse 的标准设置应该已经为你设置好了交换空间。也许可以看看 为你的 Linux 服务器创建交换文件

然而,你却看到了内存不足——这很令人担忧。请粘贴 free 命令的输出。

我注意到,在我安装的两个实例(它们都只有1G内存和2G交换空间)中,我曾按照该建议,在 /etc/sysctl.conf 中设置了 vm.overcommit_memory=1。 (但这并不意味着它能解决当前这个问题。)

我们将很快移除关闭 Ember CLI 资产的功能,因此请确保尽快解决您的设置问题。否则,在未来的更新中它将再次中断。

您至少需要 1GB RAM + 2GB 交换空间(根据我们的标准安装脚本

这确实令人担忧——请告知我们您在 free 输出中看到的内容 @itsbhanusharma

@david
这是 free 命令的输出

root@discourse:~# free
              total        used        free      shared  buff/cache   available
Mem:        3932016     3747708       87928       12812       96380        9960
Swap:       2097148     1095852     1001296

服务器上还有其他东西在运行吗?对于标准的 Discourse 安装来说,那里的“已用”数字似乎相当高 :thinking:

可用 9960

这可不多 :scream:

你们运行了多少个 unicorn?

这是一个多站点 discourse 安装。有几个额外的容器(例如邮件接收器和正常运行时间监视器),但没有什么不寻常的。

UNICORN_WORKERS: 4

重启后 free 的输出是什么样的?