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,此设置对于视频来说仍然不太合适,因为没有转码来为客户提供最适合其带宽和分辨率的视频。
3 个赞
wenqin
3
非常感谢您的回复。目前的情况是这样的:
目前,我的论坛中的图片可以成功上传到S3,但视频却不行。这让我感到非常困惑。
虽然我明白S3可能仍然不适合处理视频,但论坛的主要内容是文本和图片。视频功能只是为了满足部分用户的需求,而且视频本身不会很大。非常感谢您的提醒。
pfaffman
(Jay Pfaffman)
5
亚马逊的 CDN 比从 S3 存储桶流出的成本更低。你肯定希望在 S3 存储桶前面有一个 CDN。
我怀疑你没有告诉我们的错误与视频太大有关。有一些设置可以更改这一点,但启用“启用直接 S3 上传”可能更好。
3 个赞
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。我有一段时间没有更新我测试过的网站了。
1 个赞
wenqin
12
非常感谢您的所有帮助。
他说他遵循了 Configure an S3 compatible object storage provider for uploads 中的说明,但没有成功。
不过,就在刚才,在他按照您的建议操作并将最大上传文件大小更改为 100MB 后,视频已成功上传到 S3 存储。
非常感谢!
pfaffman
(Jay Pfaffman)
13
那他就是做错了,应该寻求帮助。他可能省略了将资产上传到S3的部分。
太好了!有一个关于如何增加这个100MB限制的主题。
1 个赞