wenqin
1
我想咨询一个关于 Discourse 对 Amazon S3 存储支持的技术问题。
我看到一篇论坛帖子,早在 2013 年就讨论过 Discourse 的 S3 支持。我还找到了一些关于 CDN 卸载的帖子,但关于这个话题似乎没有太多详细信息。
我自己搭建了一个 Discourse 论坛,并且一直很想启用视频上传功能。我有很多想法,但由于我不是程序员,很难将它们付诸实践——我总是需要别人的帮助才能一点一点地取得进展。
Discourse 本身支持小视频上传,我已经启用了该功能。然而,Discourse 的架构并不适合高效地处理视频上传。经过大量研究,我发现实际上可以使用 Amazon S3 存储并结合 CDN 卸载,或者使用 S3 存储并配置代理缓存。
事实上,我已经请朋友帮我配置了 S3 存储和代理缓存。(澄清一下,我没有考虑使用 CDN 是因为成本问题——Amazon S3 的 CDN 服务可能相当昂贵。)
现在我遇到了一个问题:在测试过程中,尽管 S3 存储已正确配置,并且理论上论坛的所有上传都应该直接发送到 S3,但视频文件仍然无法上传到 S3 存储。
有谁能解释一下可能配置错误的地方,或者是什么原因导致了这个问题?
谢谢
RGJ
(Richard - Communiteq)
2
而是发生了什么?您是否收到错误消息?
您可能还想检查“Site Settings - Files”中的“max attachment size kb”和“authorized extensions”设置。
请注意,即使使用 CDN 和 S3,此设置对于视频来说仍然不太合适,因为没有转码来为客户提供最适合其带宽和分辨率的视频。
wenqin
3
非常感谢您的回复。目前的情况是这样的:
目前,我的论坛中的图片可以成功上传到S3,但视频却不行。这让我感到非常困惑。
虽然我明白S3可能仍然不适合处理视频,但论坛的主要内容是文本和图片。视频功能只是为了满足部分用户的需求,而且视频本身不会很大。非常感谢您的提醒。
pfaffman
(Jay Pfaffman)
5
亚马逊的 CDN 比从 S3 存储桶流出的成本更低。你肯定希望在 S3 存储桶前面有一个 CDN。
我怀疑你没有告诉我们的错误与视频太大有关。有一些设置可以更改这一点,但启用“启用直接 S3 上传”可能更好。
wenqin
6
当我尝试将视频上传到我的论坛时,它直接显示了以下消息:
“抱歉,该文件太大(最大尺寸为 50 MB)。为什么不将大文件上传到云共享服务,然后粘贴链接?”
然而,我的视频本身只有 10 MB。目前,我正在使用 S3 存储和 CloudFront CDN 进行交付。
我觉得故障排除非常困难。您能否提供正确的操作步骤,假设之前没有进行任何操作?我会请我的朋友按照正确的步骤再试一次。
wenqin
7
您好,感谢您的回复。
我已经让我的朋友从 S+ 存储配合缓存代理的方法切换到 S3 存储 + CloudFront CDN 的分发方式。但似乎失败了,我还不清楚具体原因,所以想请您提供准确的执行命令,以便我的朋友可以重新尝试。
另外,为了方便用户,我一直很希望在论坛中加入视频功能。我有一个新的想法,想请教您是否可行,非常希望能得到您的意见。
首先,我需要说明的是,我完全不懂编程。我的大学专业是日语,除了学习日语之外,我对代码一窍不通。如果我的想法有些地方看起来很天真,请您多多包涵。
由于我论坛使用的服务器关闭了,我不得不花精力重建论坛,这让我得以学习 S3 存储和 CloudFront CDN 的关键知识。然后,我将这些知识应用到实践中,并开始思考是否有其他的存储和 CDN 服务提供商。我咨询了 ChatGPT,并很高兴得到了想要的答案。
其实我一直想建立一个视频网站,但因为硬盘成本太高而很快放弃了。现在我知道了新的解决方案,我重新燃起了建立视频网站的想法,以支持 Discourse 论坛的视频功能。
根据 GPT 的建议,我了解到可以使用 PeerTube 或 MediaCMS 作为视频网站系统——两者都很优秀。
我目前有两个疑问:
第一个疑问: 这两个视频网站系统都可以支持 Backblaze B2 存储配合 Cloudflare CDN 的分发。由于视频不是存储在我的硬盘上,视频网站的播放已经调用了 Backblaze B2 的 API。我希望论坛能够连接到视频网站,不是通过发布链接,而是通过论坛的上传按钮直接调用我的 MediaCMS(例如)视频网站作为源。这意味着两次 API 调用:
- 论坛调用 MediaCMS 视频网站。
- MediaCMS 视频网站调用 Backblaze B2 存储。
我想知道这种重复的 API 调用在技术上是否可行。
第二个疑问: 论坛系统和视频网站系统是否可以共享用户账户系统,让用户可以使用同一个账户。这会影响 API 的调用方式。
- 方案 1: 作为视频网站的管理员,我注册一个与论坛关联的管理员账户。当论坛通过 API 上传视频时,技术上是由管理员上传到 MediaCMS 网站。
- 方案 2: 通过共享用户账户系统,视频上传由用户自己的论坛账户执行,并通过 API 同步到 MediaCMS 网站。然后用户可以在视频网站上看到自己账户下的已上传视频。
我咨询了 GPT 关于这些方案的看法,GPT 的总体反馈是积极的。然而,在反复使用中,我发现 GPT 可以在宏观决策上提供指导和帮助,但在详细解答方面,有时会不准确。由于我本人不懂代码,我不确定这些想法是否真的可行。
如果可能的话,我将非常感谢您能指出这些想法中哪些部分是可行的,哪些部分可能不可行。
pfaffman
(Jay Pfaffman)
8
他们可能应该参与这个话题。他们是否遵循了为上传配置 S3 兼容对象存储提供商并在 ymll 文件中设置了配置,并添加了将资产推送到 S3 的部分?
也许浏览器以某种方式没有正确传达大小。
你试过这个吗?
wenqin
9
你好。实际情况是这样的:
小于10MB的视频可以上传到我自己的服务器,但视频文件本身无法上传到S3。
上传视频时,系统会自动捕捉第一帧作为缩略图,缩略图可以上传到S3。
但是,对于大于10MB的视频,什么都无法上传。
pfaffman
(Jay Pfaffman)
10
如果您的朋友遵循了配置 S3 兼容对象存储提供商以下载,您就不会看到 enable_s3_uploads。尚不清楚是在数据库中设置这些值而不是在 ENV 中设置是问题的一部分。
这与“启用直接 S3 上传”不同。那是“启用直接 S3 上传”。
您还需要更改“最大图片大小 KB”和“最大附件大小 KB”。
但我将我的最大上传量更改为 100MB 并尝试上传一个 37MB 的文件,却收到了“文件太大”的错误,所以您可能是对的,存在一个 bug。我有一段时间没有更新我测试过的网站了。
wenqin
12
非常感谢您的所有帮助。
他说他遵循了 Configure an S3 compatible object storage provider for uploads 中的说明,但没有成功。
不过,就在刚才,在他按照您的建议操作并将最大上传文件大小更改为 100MB 后,视频已成功上传到 S3 存储。
非常感谢!
pfaffman
(Jay Pfaffman)
13
那他就是做错了,应该寻求帮助。他可能省略了将资产上传到S3的部分。
太好了!有一个关于如何增加这个100MB限制的主题。