Sakura-Cactus 部署教程:Cloudflare Workers + D1 + R2
Sakura-Cactus部署教程

本文记录 Sakura-Cactus 项目部署到 Cloudflare Workers 的完整流程。
项目地址:
https://github.com/mx-love/Sakura-Cactus
本项目主要用到:
Cloudflare Workers:运行博客程序
Cloudflare D1:保存文章、设置、友链等数据
Cloudflare R2:保存后台上传的图片
GitHub:存放代码,并连接 Cloudflare 自动部署
部署时最容易混淆的是变量位置:
D1 / R2 相关变量:创建部署时填写,也就是 Build variables
后台用户名 / 密码:部署完成后填写,也就是 Runtime Variables & Secrets
一、Fork 项目
打开项目仓库:
https://github.com/mx-love/Sakura-Cactus
点击右上角 Fork,把项目复制到自己的 GitHub 账号下。
后面 Cloudflare 连接 GitHub 仓库时,选择你自己 Fork 后的仓库。
二、创建 D1 数据库
进入 Cloudflare 控制台:
存储和数据库 → D1 SQL 数据库 → 创建数据库
数据库名称固定填写:
sakura_blog_prod
创建完成后,进入这个 D1 数据库详情页,复制 Database ID。
后面创建 Worker 部署时需要填写:
SAKURA_D1_DATABASE_ID=你的 D1 Database ID
三、创建 R2 Bucket
Sakura-Cactus 使用 R2 保存后台上传的图片。
进入 Cloudflare 控制台:
存储和数据库 → R2 对象存储 → 创建 Bucket
Bucket 名称固定填写:
sakura-blog-media-prod
后面创建 Worker 部署时需要填写:
SAKURA_R2_BUCKET_NAME=sakura-blog-media-prod
R2 Bucket 保持默认私有即可,不需要开启 Public Development URL,也不需要单独给 R2 绑定自定义域名。
四、连接 GitHub 仓库创建 Worker
进入 Cloudflare 控制台:
Workers 和 Pages → 创建应用 → 连接 Git 仓库
选择你自己 Fork 后的 Sakura-Cactus 仓库。
项目名称可以填写:
sakura-cactus
这个名称主要影响 Worker 名称和 workers.dev 域名,按自己的习惯填写即可。都是要自定义域名的
五、填写构建命令和部署命令
在 Set up your application 页面填写构建配置。
Build command
pnpm install --frozen-lockfile && node scripts/prepare-cloudflare-config.mjs && pnpm build
Deploy command
npx wrangler deploy
不要按普通 Astro 静态站的方式部署。Sakura-Cactus 是运行在 Cloudflare Workers 上的项目,需要通过 Wrangler 部署。
六、填写 Build variables
在创建 Worker 部署时,展开高级设置,添加 Build variables。
这里填写的是构建阶段变量,用来生成 D1 和 R2 的绑定配置。
只需要添加下面两个变量:
SAKURA_D1_DATABASE_ID=你的 D1 Database ID
SAKURA_R2_BUCKET_NAME=sakura-blog-media-prod
变量说明:
| 变量名 | 填写位置 | 类型 | 是否必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
SAKURA_D1_DATABASE_ID |
Build variables | 文本 | 是 | 你的 D1 Database ID |
从 D1 数据库详情页复制 |
SAKURA_R2_BUCKET_NAME |
Build variables | 文本 | 是 | sakura-blog-media-prod |
固定填写,和 R2 Bucket 名称一致 |
确认以下内容无误后点击部署
七、首次部署
点击部署后,Cloudflare 会自动执行:
拉取 GitHub 仓库代码
安装依赖
执行 prepare-cloudflare-config.mjs
生成 D1 / R2 bindings
构建项目
使用 wrangler deploy 部署 Worker
八、添加后台登录变量
首次部署完成后,进入刚创建好的 Worker:
Worker → 设置 → 变量和密钥
这里填写的是 Runtime Variables & Secrets,也就是网站运行时读取的配置。
添加后台登录账号密码:
ADMIN_USERNAME=你自己设置的后台用户名
ADMIN_PASSWORD=你自己设置的后台密码
建议填写方式:
| 变量名 | 填写位置 | 类型建议 | 是否必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
ADMIN_USERNAME |
Runtime Variables & Secrets | 文本 | 是 | admin |
后台登录用户名,自己设置 |
ADMIN_PASSWORD |
Runtime Variables & Secrets | 密钥 / Secret | 是 | 你的强密码 |
后台登录密码,自己设置 |
九、绑定自定义域名并配置 SITE_URL
首次部署完成后,建议先给 Worker 绑定自己的正式域名。
进入 Cloudflare Worker:
Worker → 设置 → 域和路由 → 添加自定义域
填写并绑定自己的域名,例如:
blog.example.com
自定义域名生效后,再进入:
Worker → 设置 → 变量和密钥
添加一个普通文本变量:
SITE_URL=https://你的自定义域名
例如:
SITE_URL=https://blog.example.com
填写时注意:
- 必须包含
https://; - 填写实际绑定到当前 Worker 的正式域名;
- 域名末尾不要添加
/; - 每位部署者都需要将
SITE_URL替换为自己的正式博客地址。
Note
如果不绑定自定义域名,只使用 Cloudflare Workers 自动生成的 workers.dev 地址,则无需额外配置 SITE_URL,项目直接以当前 Workers 域名作为正式地址。
配置完成后,需要重新部署一次 Worker。
十、可选站点配置
下面这些变量不是部署必须项,可以后面再配置。
如果需要,可以在同一个页面添加为普通文本变量:
SITE_NAME=你的博客名称
SITE_TAGLINE=你的博客标语
SITE_DESCRIPTION=你的博客描述
SITE_AVATAR_URL=https://example.com/avatar.png
PUBLIC_COMMENTS_SERVER_URL=https://your-waline.example.com
变量说明:
| 变量名 | 填写位置 | 类型建议 | 是否必填 | 说明 |
|---|---|---|---|---|
SITE_NAME |
Runtime Variables & Secrets | 文本 | 否 | 站点名称 |
SITE_TAGLINE |
Runtime Variables & Secrets | 文本 | 否 | 站点标语 |
SITE_DESCRIPTION |
Runtime Variables & Secrets | 文本 | 否 | 站点描述 |
SITE_AVATAR_URL |
Runtime Variables & Secrets | 文本 | 否 | 头像地址 |
PUBLIC_COMMENTS_SERVER_URL |
Runtime Variables & Secrets | 文本 | 否 | Waline 评论服务地址 |
十一、重新部署一次
添加 Runtime Variables & Secrets 后,建议重新部署一次。
可以在 Cloudflare Worker 的部署页面中手动触发重新部署。
这样可以确保后台账号密码和站点配置正常生效。
十二、访问网站和后台
部署完成后,访问 Cloudflare 分配的 Worker 域名,或者你绑定的自定义域名。
后台登录地址:
https://你的域名/admin/login
使用刚才设置的后台账号密码登录:
ADMIN_USERNAME=你自己设置的后台用户名
ADMIN_PASSWORD=你自己设置的后台密码
首次访问时,项目会初始化 D1 中需要的数据表和默认设置。
如果刚创建完 D1 时看到数据为 0,这是正常的,访问网站或后台后才会产生实际读写。
十三、变量总表
| 变量名 | 填写位置 | 类型建议 | 是否必填 | 示例值 | 用途 |
|---|---|---|---|---|---|
SAKURA_D1_DATABASE_ID |
Build variables | 文本 | 是 | 你的 D1 Database ID |
绑定 D1 数据库 |
SAKURA_R2_BUCKET_NAME |
Build variables | 文本 | 是 | sakura-blog-media-prod |
绑定 R2 Bucket |
ADMIN_USERNAME |
Runtime Variables & Secrets | 文本 | 是 | admin |
后台登录用户名 |
ADMIN_PASSWORD |
Runtime Variables & Secrets | 密钥 / Secret | 是 | 你的强密码 |
后台登录密码 |
SITE_NAME |
Runtime Variables & Secrets | 文本 | 可选 | Sakura Cactus |
站点名称 |
SITE_TAGLINE |
Runtime Variables & Secrets | 文本 | 可选 | 温柔地写,安静地收录。 |
站点标语 |
SITE_DESCRIPTION |
Runtime Variables & Secrets | 文本 | 可选 | 一些文章、笔记,以及慢慢整理的想法。 |
站点描述 |
SITE_AVATAR_URL |
Runtime Variables & Secrets | 文本 | 可选 | https://example.com/avatar.png |
头像地址 |
PUBLIC_COMMENTS_SERVER_URL |
Runtime Variables & Secrets | 文本 | 可选 | https://your-waline.example.com |
Waline 评论服务地址 |
总结
Sakura-Cactus 推荐部署顺序:
Fork 项目
→ 创建 D1 数据库,名称固定为 sakura_blog_prod
→ 创建 R2 Bucket,名称固定为 sakura-blog-media-prod
→ Cloudflare 连接 GitHub 仓库
→ 填写构建命令和部署命令
→ 填写 Build variables
→ 首次部署
→ 添加 Runtime Variables & Secrets
→ 重新部署
→ 登录后台
记住一句话:
D1 / R2 填在 Build variables;
后台账号密码填在 Runtime Variables & Secrets。
按照这个顺序部署,基本可以避免 D1、R2 和后台登录变量混乱的问题。

图片资源出自互联网收集整理,如果侵犯了您的合法权益,请联系我删除。