上线 runbook:部署到 Cloudflare Pages 并绑定 papalabs.dev
内容整理得差不多之后,照这篇操作就能上线。流程和 Fitness Tracker 一样是 Cloudflare Pages,只是这次是纯静态站,更简单。

静态站放 Pages:免费额度对个人 blog 绰绰有余
方式一:Git 集成(推荐)
推荐这条路,以后 git push 就自动发布:
- 把 blog repo 推到 GitHub(private 也可以);
- Cloudflare Dashboard → Workers & Pages → Create → Pages → Connect to Git,选中 repo;
- 构建配置:
| 配置项 | 值 |
|---|---|
| Build command | npm run build |
| Build output directory | dist |
| 环境变量 | NODE_VERSION = 22 |
NODE_VERSION 一定要设 —— Pages 默认的 Node 版本偏旧,Astro 5 需要较新的版本。
Build command 用 npm run build 而不是 astro build,因为搜索索引(Pagefind)是挂在这个 script 里生成的,直接跑 astro 会得到一个没有搜索功能的站。
方式二:wrangler 直接上传
不想连 GitHub 的话,本地构建完直接推:
npm run build
npx wrangler pages deploy dist --project-name papalabs-blog
适合临时预览或者还没准备好公开 repo 的阶段。
绑定域名
- Pages 项目 → Custom domains → 添加
papalabs.dev; - 域名本来就在 Cloudflare 上的话,DNS 记录自动配好,几分钟内 HTTPS 证书就绪;
- 建议同时把
www.papalabs.dev加上(自动 301 到主域名)。
上线前 checklist
-
astro.config.mjs里的site是正式域名(影响 RSS 和 sitemap 里的绝对链接); - 所有还没写完的文章都标了
draft: true; - 本地
npm run build && npm run preview过一遍,搜索、mindmap、暗色模式都点一点; - 上线后 Google Search Console 提交
https://papalabs.dev/sitemap-index.xml。
静态站的好处在这一刻兑现:没有数据库要迁、没有 secret 要配、没有 server 要看护。build 出来的文件夹放哪里都能跑。