用 Cloudflare R2 作图床,迁移 WordPress

我的博客之前放在一台荷兰的主机上,那台主机上有 Minio 图床,有 WordPress, 还有一个额外的 web server. 我的主页是放在额外的 server 上的。之前,域名的 DNS 服务商还是 Fastmail. 虽然知道可以通过 cname 的方式来使用 Cloudflare 的 CDN, 但秉持着能用就不折腾的原则,我干脆没有用 Cloudflare 的任何服务。

而我搬进 Cloudflare 的初衷也很纯粹,单纯是想看有多少人访问了我的博客/网站。我之前没有加过任何的 tracker, 也完全不知道有多少访问量。Cloudflare 可以直接告诉我我的网站有多少访问。我不知道这个数据算高还是低,但光是看统计数据本身,就很让我着迷。

从 Minio 迁移到 Cloudflare R2

迁移过程需要 rclone. 一是因为我的博客年代久远,还有过一段时间是静态博客,所以文件路径不都遵循 WordPress 的默认规则,直接从 Minio 拷贝到 Cloudflare R2 是最简单省事儿的。二是现在 Cloudflare R2 的网页端上传有着诸多限制,网页上传繁琐且低效。

在 macOS 里安装 rclone, 并且分别添加响应的配置文件(CLI,很友好)。

brew install rclone
rclone config

Minio 和 Cloudflare R2 都属于 Amazon S3 Compliant Storage Provider, 直接选择对应的选项即可。 注意,在迁移完成之前可以先不修改图床所用域名的指向记录。Cloudflare 的 API 会提供 end-point URL, 而 Minio 的 end-point URL 在大部分情况下可能是你图床的地址。

在添加完 remote 之后,就可以开始迁移了。

rclone copy /path/to/source folder remote:destination --progress

由于我们是从一个 remote 迁移到另一个 remote, 所以可以写成

rclone copy minio:source-folder cloudflare:destination --progress

可能需要等待一段时间才能复制完毕,添加 --progress 可以查看进度。

迁移完毕之后,可以在 Cloudflare R2 的 buckets 里看到目录结构。

将图片默认上传到 Cloudflare R2

我一直以来使用的插件是 Media Cloud. 在 WordPress 后台直接搜索即可下载,可以选择很多服务商。我用 Minio 的时候就用的 Media Cloud 插件。在迁移到 Cloudflare R2 之后,直接在 Media Cloud 的设置里添加对应 provider 的配置文件,插件会自行验证有没有足够的权限(添加,查看,删除等)。

迁移 WordPress

WordPress 的迁移出乎意料地简单。先在现有的 WordPress 里安装 UpdraftPlus 插件,并且备份一切内容(数据库和上传的文件等)。在新的服务器上部署完 WordPress 之后,只需要安装 UpdraftPlus 插件,然后把之前备份的文件上传,即可直接恢复。新环境和旧环境最好使用相同版本的数据库和 PHP. 但我新环境是 php 8.2, 旧环境是 php 7.x 没有出现什么问题。But, YMMV. 使用 UpdraftPlus 恢复的插件和主题会因为权限问题无法修改删除,需要手动 chmod 一下。谨慎起见,还可以使用 WordPress 自带的重新安装功能让自己更安心。

在迁移过程中,可以暂时修改 hosts 文件来确认新环境下的 WordPress 是否成功运行。在确认没有问题之后,就可以在 DNS 服务商那里修改指向,然后上线了。

在迁移之后,理论上来说我的访问速度会提高。相比较之前在荷兰的服务器,我现在在美东,新服务器在美东,我这里 Cloudflare 回源美东会更快。不幸的消息是,在亚洲太平洋地区的朋友们访问可能会慢一些,但只要我这里快就够了。

One Comment

面条 2024-01-08 Reply

为了 Cloudflare 不绑卡,在还在使用 Backblaze B2 。CDN 套了 Cloudflare

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据