为什么要迁移到cloudflare#
原因有几个:
- 我碰巧注册了cloudflare的账号,而且买了个域名,也就想拿来用了
- cloudflare的云生态很发达,而且免费计划很给力,例如有ddos保护、爬虫防护等功能,生态扩展也有免费的KV数据库和SQLite数据库,自定义域名也有,SSL也有,网站/请求分析也有
- cloudflare的CI/CD功能更强大,构建速度和资源挺快的,而且还支持多版本预览:在非
main分支提交代码,cloudflare会生成一个预览链接,可以先预览效果,再合并到主分支
cloudflare免费计划的限制#
虽然 Cloudflare 的免费额度极度慷慨,但它依然有硬性指标:
- 构建次数: 免费版每月限制 500 次构建(对于个人博客来说完全用不完)。
- 单文件大小限制: Cloudflare Pages 限制单个静态资源文件不能超过 25MB(如果博客里挂载了极大的高清视频或压缩包需要注意,建议大文件走对象存储)
- 部署文件总数: 单次部署文件数上限通常为 20,000 个(超大型博客需注意)。
迁移过程#
在 Cloudflare 上关联并构建项目#
- 登录/注册: 登录到 Cloudflare 控制台。
- 进入 Pages 页面: 在左侧导航栏中点击 “Workers 和 Pages”(Workers & Pages),然后点击 “创建” -> 选择 “Pages” 标签页。
- 连接 GitHub: 点击 “连接到 Git”(Connect to Git),按照提示授权 Cloudflare 访问你的 GitHub 账号,并选择你存放静态博客源码的那个私有或公开仓库。
- 配置构建设置:
- 项目名称: 默认即可(这会决定 *.pages.dev 二级域名)。
- 生产分支: 选择主分支
- 构建命令: 因为是
hugo框架,所以写hugo -b / --minify就好
- 部署: 点击 “保存并部署”。Cloudflare 会拉取代码并开始首次构建。几分钟后获得一个 https://your-project.pages.dev 的独享域名,打开它确认博客内容显示正常。
需要写清楚hugo版本,因为不知道cloudflare上的hugo是新或旧,所以需要自己指定
指定方式是添加HUGO_VERSION环境变量,位于设置>构建>变量与机密。名称是HUGO_VERSION,值是<HUGO_VERSION>,例如v0.158.0
第二步:迁移自定义域名(关键步骤)#
因为我早就把域名的DNS解析托管给了cloudflare所以就很简单了,
找到域tab,选择添加域名就OK了
踩坑#
一开始构建完成的项目是排版完全混乱的:图片非常大,文字效果像是html
cloudflare上的文档说构建命令是hugo -b $CF_PAGES_URL
Base URL configuration
Hugo allows you to configure the baseURL of your application. This allows you to utilize the absURL helper to construct full canonical URLs. In order to do this with Pages, you must provide the -b or –baseURL flags with the CF_PAGES_URL environment variable to your hugo build command.
Your final build command may look like this:
这完全是在扯淡,我打印了CF_PAGES_URL的值,结果为空
最后我问了AI是应该设置CF_PAGES_URL环境变量的值吗,AI让我直接写hugo -b / --minify。我试了一下,确实有效果,也就不管那么多了。