本指南介绍如何启用 Discourse 中的隐藏设置,将 Amazon S3(简单存储服务)上传包含在备份中。
Discourse 能够将媒体上传存储在 Amazon S3 上,以实现可扩展性和可靠性。但是,默认情况下,这些上传不包含在备份中。
本指南涵盖了启用隐藏设置以将 S3 上传包含在备份中的方法,并提供了通过 Rails 控制台或 app.yml 文件进行配置的选项。
使用 Rails 控制台
要通过 Rails 控制台启用将 S3 上传包含在备份中,您可以按照以下步骤操作:
通过 SSH 访问您的 Discourse 服务器。
运行以下命令进入 Discourse Docker 容器:
cd /var/discourse
./launcher enter app
启动 Rails 控制台:
rails c
通过执行以下命令启用设置:
SiteSetting.include_s3_uploads_in_backups = true
键入以下命令退出控制台和容器:
exit
exit
此更改会立即生效。无需进一步操作。
修改 app.yml 文件
您还可以通过在 env: 部分中添加修改 app.yml 文件来完成此更改。
访问 Discourse 应用程序容器目录:
cd /var/discourse
打开位于 containers 目录中的 app.yml 文件:
nano containers/app.yml
在 env: 部分下,添加以下行:
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
保存文件并退出编辑器。
通过重建应用程序来应用更改:
./launcher rebuild app
要使此更改生效,您需要运行 ./launcher rebuild app 命令来应用设置。
9 个赞
我认为您不需要销毁,重启就足够了。我稍后会确认。
无论如何,感谢 @pfaffman 提供的另一个 howto 指南 ,我以此为模板创建了这个指南。
2 个赞
pfaffman
(Jay Pfaffman)
2023 年8 月 25 日 01:12
4
Vinoth Kannan:
我认为您不需要销毁,重新启动就足够了
我确定您需要销毁并重新启动才能更改应用于容器的环境变量。
当然,如果他们使用 docker manager 进行了升级,这些在容器销毁时将会丢失,这就是为什么重建是最安全的建议。也许最好推荐重建,因为它是最万无一失的。
3 个赞
Bathinda
(Bathinda Helper)
2024 年8 月 16 日 14:15
9
为什么,此设置 不足以包含所有上传内容到备份中吗:
pfaffman
(Jay Pfaffman)
2024 年8 月 16 日 14:18
10
这将包括本地上传,但不会下载 s3 中的文件以包含在备份中。
1 个赞
Bathinda
(Bathinda Helper)
2024 年8 月 16 日 14:24
11
好的。我不知道。
但是,“本地上传”和“存储在 S3 ‘Uploads’ 中的文件”文件夹有什么区别?
另外,虽然我还没有像上面那样在 web_only 或 rails 控制台中更改设置,但只选择了这里 告诉我的一个设置。
但当我 10 分钟前运行备份时,它显示下载了数千个文件(我猜测这些文件只能在我的 AWS S3 存储桶中,“下载”一词本身就意味着它正在从远程 S3 存储桶文件夹下载)。
它还显示我“下载失败”了很多文件。所以我想,如果这些文件在本地云服务器上,为什么备份会遗漏这些文件呢?请看这张截图:
pfaffman
(Jay Pfaffman)
2024 年8 月 16 日 14:44
12
如果您已配置 为上传配置 S3 兼容对象存储提供商 并将本地上传移至 S3,那么您的上传就在那里。它们不会被备份,因为假定 S3 已备份,并且下载它们成本高昂且通常不必要。
如果您需要将它们从 S3 中移出(例如,如果您托管在 discourse.org 上并迁移到其他托管服务),那么您需要一个包含存储在 S3 上的文件的备份。
您为什么想从 S3 下载文件?
Bathinda Helper:
它显示 下载失败,很多,很多文件。S
是的,看起来它无法从 S3 下载文件。我猜它没有下载任何文件,尽管您的磁盘可能已满(我期望一个磁盘已满的错误,但也许不是?)。
1 个赞
Bathinda
(Bathinda Helper)
2024 年8 月 16 日 14:54
13
谢谢。再说一遍。
Jay Pfaffman:
您为什么要从 S3 下载文件?
我的网站非常非常小,每月支付几美元,而且随着每月的小更新,费用还在不断增加,这对我来说有点不切实际。我将把“上传”(也许还有“备份”文件夹位置)转移到其他提供商,如 Google One Drive、iDrive、Hetzner 等廉价替代品。
我现在发现,即使是 AWS 的不同存储类型(从最活跃的到归档类型的存储),如果我一开始明智地选择了它们,相同数量/文件数量的费用也将减半。
但我现在就会这么做。
1 个赞
Bathinda
(Bathinda Helper)
2024 年8 月 17 日 06:18
14
Jay Pfaffman:
是的,看起来它无法从 S3 下载文件。
多年前,当我选择将我的媒体“上传”存储到 AWS S3 存储桶时,当时(据我所知)也将用户上传的所有现有媒体移动到了 S3。
此外,我现在检查我的 /var/discourse/shared/web_only/uploads/default/optimized/1X 文件夹,它只有 63 个 png 文件,而 /var/discourse/shared/web_only/uploads/default/original/1X 只有 3 个。(除了 1x,在“uploads 或 default”文件夹中不存在其他类似的文件夹)。
而且,我还没有在 rails 控制台或 Yml 文件中更改任何选项以将 S3 上传包含在我的备份中。那么,为什么它显示它从 S3 下载了这么多“媒体上传”!!!
并且,未能下载如此多的上传文件?截图在此 。
此外,我在 S3 上的上传文件夹大约有 3 GB(32k 个文件),而备份日志显示它只下载了大约 3.2k(总数的 10%)。
非常令人困惑。
是否有任何其他 rails 命令可以确保该选项在多年前我迁移到 AWS S3 时没有被启用?
任何解释都会有帮助。