# S3 端点变更流程？

**URL:** https://meta.discourse.org/t/s3-endpoint-change-procedure/145762
**Category:** Self-hosting
**Created:** [2020年三月27日 00:39 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762 "2020-03-27T00:39:16Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![plague69](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/plague69/32/154687_2.png) [@plague69](https://meta.discourse.org/u/plague69)
#### Post date: [2020年三月27日 00:39 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762/1 "2020-03-27T00:39:16Z")

</div>

你好，

似乎一直无法解决这个问题。所有帖子中仍然保留着旧的端点。

步骤：

1. 在管理设置中更改“S3 端点”
2. 重新生成所有帖子（执行 `rake posts:rebake`）
3. 清除 Redis 缓存

确认上述操作无效后：  
4) 执行 `rake posts:remap['旧端点（不含 http）', '新端点（不含 http）']`  
5) 重新生成所有帖子  
6) 重启容器  
7) 重启整个服务器

仍无效后：  
8) 编辑数据库，在“posts”表的“raw”和“image\_url”列中，将所有旧端点替换为新端点  
9) 重新生成所有帖子

完成以上所有操作后，不仅旧帖子仍保留旧端点，包含新附件的新帖子也显示旧端点。“short-url”链接也指向旧端点。

正确的步骤应该是什么？

#bringBackMinio

---

<div class="post-metadata">

### Author: ![plague69](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/plague69/32/154687_2.png) [@plague69](https://meta.discourse.org/u/plague69)
#### Post date: [2020年三月29日 22:27 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762/2 "2020-03-29T22:27:46Z")

</div>

抱歉，有人知道怎么做吗？应该很简单，但我就是想不出来。

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [2020年三月30日 04:44 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762/3 "2020-03-30T04:44:52Z")

</div>

这里有什么建议吗 @falco？

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2020年四月1日 01:31 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762/4 "2020-04-01T01:31:17Z")

</div>

@plague69 你能分享一下更多关于你的配置细节吗？

旧的 S3 端点和新的 S3 端点值分别是什么？

你是否为 S3 使用了 CDN？

---

<div class="post-metadata">

### Author: ![plague69](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/plague69/32/154687_2.png) [@plague69](https://meta.discourse.org/u/plague69)
#### Post date: [2020年四月1日 02:37 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762/5 "2020-04-01T02:37:56Z")

</div>

我原以为这没关系？因为如果它变了且出错，我可以修复，但我很难让它生效。

旧端点：  
`http://discourse.domain.tld:9000`

新端点：（仅端口变更，因冲突且其他服务无法迁移）  
`http://discourse.domain.tld:9001`

CDN 未变：  
`http://files.domain.tld:80`

如有需要，我可以移除 CDN，目前暂无此必要。

谢谢 @Falco

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2020年四月2日 15:36 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762/6 "2020-04-02T15:36:32Z")

</div>

我从未在非标准端口上使用过 S3 服务器，因为这不是我们测试的范围。

不过，你能否尝试在 app.yml 文件中通过环境变量设置 S3 端点？

```yaml
env:
   # 当前设置 ...
   DISCOURSE_S3_ENDPOINT: http://discourse.domain.tld:9001

```

---

<div class="post-metadata">

### Author: ![plague69](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/plague69/32/154687_2.png) [@plague69](https://meta.discourse.org/u/plague69)
#### Post date: [2020年四月6日 07:15 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762/7 "2020-04-06T07:15:58Z")

</div>

恐怕那不起作用。仍然卡在 9000。

添加该环境变量后，必须重新构建容器才能生效，而不仅仅是重启。该选项已从设置中移除，因此我知道它已生效，并且该变量在重新构建后确实存在于容器的启动参数中。

如果我们停止使用 S3，有什么方法可以将所有内容下载到本地驱动器吗？由于备份不包含 S3，我甚至无法进行备份和恢复。

posts:rebake 会重新生成短链接吗？

---

<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: [2020年四月6日 11:41 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762/8 "2020-04-06T11:41:55Z")

</div>

> [@plague69](#):
>
> 如果我们停止使用 S3，有什么方法可以将所有内容下载到本地驱动器吗？

我相信有一个从 S3 到本地的 rake 任务。你可以在这里搜索，或者查看源代码。这可能是你最好的选择。

---

<div class="post-metadata">

### Author: ![plague69](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/plague69/32/154687_2.png) [@plague69](https://meta.discourse.org/u/plague69)
#### Post date: [2020年四月7日 00:11 UTC](https://meta.discourse.org/t/s3-endpoint-change-procedure/145762/9 "2020-04-07T00:11:28Z")

</div>

以前有：`rake uploads:migrate_from_s3`。这是在他们更改 S3 URL 格式（从子域名风格改为斜杠风格）时，用于从 Minio 迁移到 S3 的脚本。

现在我甚至看不到它了。
