# 生产升级 - 应遵循的正确流程

**URL:** <https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550>\
**Category:** Self-hosting\
**Created:** [2026年三月30日 09:27 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550 "2026-03-30T09:27:26Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![stevejr](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stevejr/32/292622_2.png) [@stevejr](https://meta.discourse.org/u/stevejr)\
**Post date:** [2026年三月30日 09:27 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/1 "2026-03-30T09:27:26Z")

</div>

您好，

我们即将升级生产环境的 Discourse 服务器（我们按照官方安装说明在 EC2 上自建托管），想确认推荐的升级方法。

我们在 UI 中未启用升级按钮，因此升级将在 EC2 实例上手动执行。据我了解，主要有两种方法：

- 重建我们的 EC2 服务器，拉取 discourse\_docker GitHub 仓库的最新副本，并使用其中的模板。例如，当前 `web.template.yml` 引用的基础镜像为 `discourse/base:2.0.20260209-1300`。此方法将停止当前运行的服务器并启动新服务器。
- 登录到现有的 EC2 服务器，执行以下命令以重建当前镜像并重启容器：
  - `./launcher rebuild app`

我有两个问题：

1. 对于常规维护，应采用哪种方法？
2. 如果执行 `rebuild app` 命令，是否仍会拉取 discourse\_docker 仓库的 `main` 分支？

我已查阅 [https://releases.discourse.org](https://releases.discourse.org) 网站，发现版本 `2026.3.0` 尚未发布。我的理解是，在生产环境中不应使用处于活跃开发中的主分支最新版本。

非常感谢您的帮助。谢谢。

---

<div class="post-metadata">

**Author:** ![singi2016cn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/singi2016cn/32/532755_2.png) [@singi2016cn](https://meta.discourse.org/u/singi2016cn)\
**Post date:** [2026年三月30日 10:08 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/2 "2026-03-30T10:08:50Z")

</div>

如果你想升级到最新版，那么管理后台手动升级就可以了。  
如果想升级到`esr`版本，只需要在`containers/app.yml`的最后面指定`esr`

```plaintext
params:
  version: esr

```

然后重新构建即可。

> 请确保网络一切正常。

---

<div class="post-metadata">

**Author:** ![stevejr](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stevejr/32/292622_2.png) [@stevejr](https://meta.discourse.org/u/stevejr)\
**Post date:** [2026年三月30日 10:20 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/3 "2026-03-30T10:20:51Z")

</div>

感谢您的回复。

那么，将版本设置为 `esr` 是否会覆盖模板中使用的基础镜像？

我们不希望在管理 UI 中启用升级功能，因此需要一种在实例中实现此目的的方法，或者简单地重建实例并让 AutoScaler 进行管理。

如果我们使用 `esr`，当推送关键修复时，它是如何更新的？同样，我们是否只需每月通过启动器/新的 EC2 实例重建，以纳入对 `esr` 版本的任何更新？

---

<div class="post-metadata">

**Author:** ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)\
**Post date:** [2026年三月30日 10:28 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/4 "2026-03-30T10:28:34Z")

</div>

> [@stevejr](#):
>
> 我的理解是，我们不应该在生产环境中使用主版本发布的最新版本，因为它们仍处于积极开发阶段。

您是否阅读过 [Understanding Discourse release channels](https://meta.discourse.org/t/understanding-discourse-release-channels/264400) 和 [https://meta.discourse.org/t/configure-a-supported-tracking-branch-to-get-discourse-software-updates/17014？我更倾向于将两者的区别描述为：是立即获得最新变更，还是稍后接收。后者对于需要首先进行适配的自定义开发非常有用。否则，我更倾向于获得最新的功能和修复。当然，这存在引入新错误的风险，但三周前冻结的版本也包含错误，这些错误可能已在最新版本中修复，但通常严重性不足以支持向后移植到上一个发布版本。](https://meta.discourse.org/t/configure-a-supported-tracking-branch-to-get-discourse-software-updates/17014%EF%BC%9F%E6%88%91%E6%9B%B4%E5%80%BE%E5%90%91%E4%BA%8E%E5%B0%86%E4%B8%A4%E8%80%85%E7%9A%84%E5%8C%BA%E5%88%AB%E6%8F%8F%E8%BF%B0%E4%B8%BA%EF%BC%9A%E6%98%AF%E7%AB%8B%E5%8D%B3%E8%8E%B7%E5%BE%97%E6%9C%80%E6%96%B0%E5%8F%98%E6%9B%B4%EF%BC%8C%E8%BF%98%E6%98%AF%E7%A8%8D%E5%90%8E%E6%8E%A5%E6%94%B6%E3%80%82%E5%90%8E%E8%80%85%E5%AF%B9%E4%BA%8E%E9%9C%80%E8%A6%81%E9%A6%96%E5%85%88%E8%BF%9B%E8%A1%8C%E9%80%82%E9%85%8D%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BC%80%E5%8F%91%E9%9D%9E%E5%B8%B8%E6%9C%89%E7%94%A8%E3%80%82%E5%90%A6%E5%88%99%EF%BC%8C%E6%88%91%E6%9B%B4%E5%80%BE%E5%90%91%E4%BA%8E%E8%8E%B7%E5%BE%97%E6%9C%80%E6%96%B0%E7%9A%84%E5%8A%9F%E8%83%BD%E5%92%8C%E4%BF%AE%E5%A4%8D%E3%80%82%E5%BD%93%E7%84%B6%EF%BC%8C%E8%BF%99%E5%AD%98%E5%9C%A8%E5%BC%95%E5%85%A5%E6%96%B0%E9%94%99%E8%AF%AF%E7%9A%84%E9%A3%8E%E9%99%A9%EF%BC%8C%E4%BD%86%E4%B8%89%E5%91%A8%E5%89%8D%E5%86%BB%E7%BB%93%E7%9A%84%E7%89%88%E6%9C%AC%E4%B9%9F%E5%8C%85%E5%90%AB%E9%94%99%E8%AF%AF%EF%BC%8C%E8%BF%99%E4%BA%9B%E9%94%99%E8%AF%AF%E5%8F%AF%E8%83%BD%E5%B7%B2%E5%9C%A8%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC%E4%B8%AD%E4%BF%AE%E5%A4%8D%EF%BC%8C%E4%BD%86%E9%80%9A%E5%B8%B8%E4%B8%A5%E9%87%8D%E6%80%A7%E4%B8%8D%E8%B6%B3%E4%BB%A5%E6%94%AF%E6%8C%81%E5%90%91%E5%90%8E%E7%A7%BB%E6%A4%8D%E5%88%B0%E4%B8%8A%E4%B8%80%E4%B8%AA%E5%8F%91%E5%B8%83%E7%89%88%E6%9C%AC%E3%80%82)

此外，请记住降级不受支持，因此如果您使用的版本在当前 ESR（延长支持版）之后，您需要等待下一个 ESR 发布。

---

<div class="post-metadata">

**Author:** ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)\
**Post date:** [2026年三月30日 12:20 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/5 "2026-03-30T12:20:04Z")

</div>

如果您当前使用的是非常旧的版本，在执行启动器命令之前，您可能受益于执行 `git pull`。

---

<div class="post-metadata">

**Author:** ![stevejr](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stevejr/32/292622_2.png) [@stevejr](https://meta.discourse.org/u/stevejr)\
**Post date:** [2026年三月30日 13:07 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/6 "2026-03-30T13:07:54Z")

</div>

啊，我错过了 [Configure a supported tracking branch to get Discourse software updates](https://meta.discourse.org/t/configure-a-supported-tracking-branch-to-get-discourse-software-updates/17014) 这篇帖子。

根据目前的回答，我认为我们将使用 `release` 分支，因为我们会进行月度更新。

非常感谢。

---

<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:** [2026年三月30日 18:33 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/7 "2026-03-30T18:33:08Z")

</div>

> [@stevejr](#):
>
> 我们不希望在管理界面中启用升级功能

那么，你并没有安装 discourse-docker。

---

<div class="post-metadata">

**Author:** ![sniper756](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sniper756/32/545002_2.png) [@sniper756](https://meta.discourse.org/u/sniper756)\
**Post date:** [2026年三月31日 12:00 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/8 "2026-03-31T12:00:14Z")

</div>

我把discourse用作个人知识库，几乎是每天rebuild一下 🤣

---

<div class="post-metadata">

**Author:** ![fuse](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fuse/32/221005_2.png) [@fuse](https://meta.discourse.org/u/fuse)\
**Post date:** [2026年四月2日 01:00 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/9 "2026-04-02T01:00:03Z")

</div>

我想补充一下，而不是创建一个新主题。

有没有其他人也遇到从应用/界面更新时的问题？

我似乎偶尔能通过移动应用更新 docker\_manager，但 discourse 本身始终显示为“更新中”状态，我必须通过控制台才能完成更新。

目前版本是 2026 年 4 月最新版（截至几分钟前）。

欢迎提供任何见解。

谢谢！

---

<div class="post-metadata">

**Author:** ![sniper756](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sniper756/32/545002_2.png) [@sniper756](https://meta.discourse.org/u/sniper756)\
**Post date:** [2026年四月6日 16:16 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/10 "2026-04-06T16:16:03Z")

</div>

我有一次在discourse的管理后台进行更新，丢失了很多帖子附件。后来再没使用这种更新方式，之后都是用rebulid进行更新。

---

<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:** [2026年五月6日 16:16 UTC](https://meta.discourse.org/t/production-upgrades-correct-procedure-to-follow/399550/11 "2026-05-06T16:16:10Z")

</div>

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