# 更新 Discourse 失败

**URL:** https://meta.discourse.org/t/updating-discourse-fails/311691
**Category:** Self-hosting
**Created:** [2024年六月12日 06:20 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691 "2024-06-12T06:20:18Z")
**Posts on this page:** 14
**Page:** 1

<div class="post-metadata">

### Author: ![arjunaskykok](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arjunaskykok/32/423947_2.png) [@arjunaskykok](https://meta.discourse.org/u/arjunaskykok)
#### Post date: [2024年六月12日 06:20 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/1 "2024-06-12T06:20:18Z")

</div>

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

```plaintext
********************************************************
 ***请耐心等待，下一步可能需要一些时间***
 ********************************************************
正在重启 Unicorn，以释放内存
正在重启 unicorn pid: 548
等待 Unicorn 重新加载。
等待 Unicorn 重新加载..
等待 Unicorn 重新加载...
等待 Unicorn 重新加载....
等待 Unicorn 重新加载.....
等待 Unicorn 重新加载......
等待 Unicorn 重新加载.......
等待 Unicorn 重新加载........
等待 Unicorn 重新加载.........
正在停止 3 个 Unicorn 工作进程，以释放内存
正在停止作业队列以回收内存，主进程 pid 为 2943724
$ cd /var/www/discourse &amp;&amp; git fetch --tags --prune-tags --prune --force
$ cd /var/www/discourse &amp;&amp; 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: 升级失败
#&lt;RuntimeError: RuntimeError&gt;
/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 &lt;main&gt;'
/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 `&lt;main&gt;'
/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 `&lt;main&gt;'
/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 `&lt;main&gt;'
正在启动最初停止的 3 个 Unicorn 工作进程

```

有什么想法吗？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2024年六月12日 14:00 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/2 "2024-06-12T14:00:49Z")

</div>

您应该执行命令行升级。

./launcher rebuild app

---

<div class="post-metadata">

### Author: ![arjunaskykok](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arjunaskykok/32/423947_2.png) [@arjunaskykok](https://meta.discourse.org/u/arjunaskykok)
#### Post date: [2024年六月13日 06:45 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/3 "2024-06-13T06:45:09Z")

</div>

嗨 Jay，

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

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

附件是一些信息。

 ![Screenshot 2024-06-13 134233](https://global.discourse-cdn.com/meta/original/4X/b/9/7/b97447e6736fa6e68eb7d6083f325cb1c614ffa9.png)

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2024年六月13日 10:05 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/4 "2024-06-13T10:05:54Z")

</div>

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

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

---

<div class="post-metadata">

### Author: ![arjunaskykok](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arjunaskykok/32/423947_2.png) [@arjunaskykok](https://meta.discourse.org/u/arjunaskykok)
#### Post date: [2024年六月13日 10:54 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/5 "2024-06-13T10:54:27Z")

</div>

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

 ![df](https://global.discourse-cdn.com/meta/original/4X/0/d/d/0dd77e6fada558997c452eb8bed799333699e61d.png)

---

<div class="post-metadata">

### Author: ![arjunaskykok](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arjunaskykok/32/423947_2.png) [@arjunaskykok](https://meta.discourse.org/u/arjunaskykok)
#### Post date: [2024年六月13日 11:25 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/6 "2024-06-13T11:25:38Z")

</div>

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

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

 ![Screenshot 2024-06-13 182316](https://global.discourse-cdn.com/meta/original/4X/6/4/7/6476d675eb500126b576fd722202d7a0ab0f7cc1.png)

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

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2024年六月13日 15:06 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/7 "2024-06-13T15:06:32Z")

</div>

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

---

<div class="post-metadata">

### Author: ![arjunaskykok](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arjunaskykok/32/423947_2.png) [@arjunaskykok](https://meta.discourse.org/u/arjunaskykok)
#### Post date: [2024年六月14日 09:59 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/8 "2024-06-14T09:59:55Z")

</div>

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

 ![unicorn](https://global.discourse-cdn.com/meta/original/4X/4/e/0/4e0a3916a6ea1f2f45b68d3f1098e0334b101008.png)

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

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2024年六月14日 10:02 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/9 "2024-06-14T10:02:29Z")

</div>

> [@arjunaskykok](#):
>
> `postgres_data` 中的文件归我的用户名所有

为什么？

这不是标准安装吗？

---

<div class="post-metadata">

### Author: ![arjunaskykok](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arjunaskykok/32/423947_2.png) [@arjunaskykok](https://meta.discourse.org/u/arjunaskykok)
#### Post date: [2024年六月14日 10:21 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/10 "2024-06-14T10:21:11Z")

</div>

我使用了标准安装。

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

那么，`postgres_data` 应该归谁所有？Root？

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [2024年六月14日 10:33 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/11 "2024-06-14T10:33:30Z")

</div>

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

---

<div class="post-metadata">

### Author: ![arjunaskykok](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arjunaskykok/32/423947_2.png) [@arjunaskykok](https://meta.discourse.org/u/arjunaskykok)
#### Post date: [2024年六月14日 11:03 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/12 "2024-06-14T11:03:29Z")

</div>

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

---

<div class="post-metadata">

### Author: ![arjunaskykok](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/arjunaskykok/32/423947_2.png) [@arjunaskykok](https://meta.discourse.org/u/arjunaskykok)
#### Post date: [2024年六月15日 16:11 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/13 "2024-06-15T16:11:24Z")

</div>

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

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

从

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

```

到

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

```

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

谢谢！

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2024年七月15日 16:11 UTC](https://meta.discourse.org/t/updating-discourse-fails/311691/14 "2024-07-15T16:11:37Z")

</div>

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