我花了很长时间才弄清楚如何完成所有这些,因此我想制作这份指南,让其他人更容易上手。以这种方式提供图像据说可以加快网站加载速度。我的 Discourse 设置结合了 DigitalOcean 的 Droplet、BackBlaze B2 S3、BunnyCDN 以及 Cloudflare 的免费版本。
在研究了可靠性、价格和基准测试之后,我选择了这些服务。它们对我来说似乎是最佳选择。Cloudflare 有助于安全,但据我了解,它也会稍微减慢网站速度,因此您应该对此进行调研。Backblaze 与 Cloudflare 和 Bunny 都有合作伙伴关系,允许免费数据传输。
虽然 Cloudflare 被称为 CDN,但它的工作方式与普通 CDN 不同,可能无法单独用于在 Discourse 中设置 S3。您可能需要另一个 CDN 提供商,BunnyCDN 对我来说效果很好。如果有人仅使用 Cloudflare 就成功完成了设置,请告诉我如何操作:stuck_out_tongue:
如何将上传设置为 S3:
首先,您需要在 Backblaze 注册,然后创建存储桶,并将详细信息插入 Discourse 设置中:
然后,您需要在 BunnyCDN 注册并按照以下指南操作:
bunny.net - The Global Edge Platform that truly Hops 20 美元额度)
创建 BunnyCDN 拉取区域后,您需要获取正确的 URL,以便将其插入 Discourse 管理后台的“s3 cdn url”设置中。进入您的 BunnyCDN 仪表板 > 拉取区域 > 管理拉取区域 > 点击您的区域 > 复制“主机名”旁边的 URL。
URL 应类似于 example.b-cdn.net,但您需要在前面加上 https://,如下所示:https://example.b-cdn.net
在 Discourse 管理设置区域保存更改。
在浏览器中按两次 Ctrl+F5 刷新您的 Discourse 网站。
通过在 Discourse 文本编辑器中上传图片进行测试。检查测试图片元素,或查看图片源以确认是否成功。URL 应不同于您的正常域名,应类似于 example.b-cdn.net / 文件名。
现在,每次有人上传图片时,图片都会存储在您的 Backblaze 存储桶中,而不会占用 DigitalOcean Droplet 的空间:stuck_out_tongue:
将备份上传到 S3
如果您希望将 Discourse 备份设置到 Backblaze 存储桶中,您需要执行以下操作:
在我之前发布的指南中,请注意他解释您需要两个独立的存储桶。一个存储桶是公开的,这是您的用户上传论坛图片的上传存储桶。另一个存储桶是私有的,这是您的备份存储桶。对 Discourse 进行自动备份非常重要,以防任何损坏,这样您就可以加载备份并修复问题。
在 BunnyCDN 仪表板上,您应该创建第二个拉取区域。您的第一个拉取区域用于上传,这个新的拉取区域将用于备份。
bunnycdn 仪表板 > 拉取区域 > 添加拉取区域
按照我之前链接的 BunnyCDN“如何使用 BunnyCDN 加速 Backblaze B2 文件交付”指南操作,但这次将新的拉取区域链接到您的备份存储桶,而不是上传存储桶。
我建议在 BunnyCDN 的拉取区域创建页面使用“高容量层级 5 美元/TB",我认为备份不需要我用于上传存储桶的更昂贵/更快的“标准层级 10 美元/TB"。
在 Discourse 管理设置区域设置备份设置。“备份位置”应设置为 S3,“s3 端点”应指向您在 Backblaze 上的设置,例如:
s3.us-west-002.backblazeb2.com
在网站上按两次 Ctrl+F5 清除缓存
开始备份,等待其完成。然后等待 5 分钟,检查您的 Backblaze 备份文件夹,您应该在那里看到新的备份。
迁移旧图片:
此步骤是可选的,但建议执行,尤其是如果您的服务器存储空间不足。因此,您已经为新的图片上传设置好了所有内容,但旧图片也可以传输到您的存储桶中。要使此过程生效,您需要遵循以下步骤:
设置 Cloudflare CDN
此步骤是可选的,因为 Backblaze 已达成合作伙伴关系,使数据传输到 Bunny 也免费,但为了额外的安全性和其他功能,您可以让数据先经过 Cloudflare,然后让 Bunny 从 Cloudflare 放置数据的位置拉取数据。
https://help.backblaze.com/hc/en-us/articles/217666928-Using-Backblaze-B2-with-the-Cloudflare-CDN


