零成本把项目部署到 Cloudflare Workers:从 D1 数据库到自定义域名全流程
摘要
手把手教你把一个 Workers 项目免费部署到 Cloudflare:注册账号、Wrangler CLI、创建 D1 数据库、设置管理密钥、绑定自定义域名、Cron 时区坑,全程 15 分钟。
前言
前几天写了一个拼多多福袋邀请码互助平台,整个项目就一个 src/index.js 文件,跑在 Cloudflare Workers + D1 上,零服务器、零成本。这篇文章手把手教你把这个项目(或任何类似的 Workers 项目)部署到 Cloudflare,全程免费,15~20 分钟搞定。
不需要服务器,不需要域名也能用(有域名更好)。
一、你需要准备什么
项目 | 是否必须 | 说明 |
|---|---|---|
电脑(Windows / Mac / Linux) | ✅ 必须 | 用来执行命令 |
Cloudflare 账号 | ✅ 必须 | 免费注册 |
Node.js 16+ | ✅ 必须 | 运行 Wrangler 工具 |
一个域名 | ❌ 可选 | 没有也能用,只是网址长一点 |
没有域名?部署后会得到一个
xxx.workers.dev的网址,直接用就行。不过中国大陆可能无法访问 workers.dev,建议有条件的绑一个自己的域名(后面会讲)。
二、注册 Cloudflare 账号
打开浏览器,访问 https://dash.cloudflare.com/sign-up
输入邮箱和密码,点 Create Account
去邮箱收验证邮件,点验证链接
登录成功,看到 Cloudflare 控制台首页
已经有账号的直接登录就行。
三、安装 Node.js 和 Wrangler
3.1 安装 Node.js
下载 LTS(长期支持版),一路下一步安装
安装完成后,打开终端验证:
应该显示类似 v20.11.0 的版本号。
3.2 安装 Wrangler
Wrangler 是 Cloudflare 的命令行工具,用来部署代码:
如果提示权限错误(Mac / Linux),前面加 sudo。安装完验证:
四、登录 Cloudflare
会自动打开浏览器,显示 Cloudflare 授权页面,点 Allow,看到 "You have granted authorization" 就成功了。
如果浏览器没有自动弹出:终端里会显示一个网址,手动复制到浏览器打开就行。
五、创建 D1 数据库
D1 是 Cloudflare 的 SQLite 数据库,免费 5GB,用来存储邀请码、黑名单等数据:
输出大概长这样:
⚠️ 重要! 把 database_id(那一串 UUID)记下来,下一步要用。
六、初始化数据库表
进入项目目录,执行建表命令:
看到 ✅ Executed 9 queries in 0.12s 就成功了。这会创建 5 张表:
表名 | 用途 |
|---|---|
| 邀请码(用户提交的互助码) |
| IP 黑名单 |
| 假码举报记录 |
| 提交日志(用于防刷统计) |
| 站点设置(公告、广告、QQ 等) |
七、设置管理密钥
管理密钥是进后台的密码,一定要设一个复杂的:
终端会提示 Enter a secret value:,输入你自己想好的密码,回车。
请牢记这个密码! 后台登录、API 管理都需要它,丢失了只能重新设置。
八、部署到 Cloudflare Workers
8.1 修改配置文件
打开项目目录下的 wrangler.toml,把 database_id 换成第五步记下来的那串 UUID:
8.2 执行部署
看到类似输出就成功了:
把网址复制到浏览器打开,就能看到首页了。
中国大陆用户注意:
workers.dev域名在中国大陆可能打不开,请看下一步绑定自己的域名。
九、绑定自定义域名(推荐)
有自己的域名体验会好很多,网址短好记,全球可访问。
9.1 域名接入 Cloudflare
如果你的域名不在 Cloudflare 管理:
登录 Cloudflare Dashboard,点 Add a Site,输入你的域名
选择 Free(免费)计划
Cloudflare 会给你 2 个 NS 地址
去你的域名注册商(阿里云/腾讯云/GoDaddy 等)把 DNS 的 NS 记录改成 Cloudflare 给的那两个
等待生效(通常几分钟到几小时)
9.2 添加 DNS 记录
Cloudflare Dashboard → 你的域名 → DNS → Records → Add record
填写:
Type:
AName:
fudai(或者你想要的子域名前缀)IPv4 address:
192.0.2.1(占位地址,Workers 会自动接管)Proxy status: 🟠 Proxied(橙色云朵,必须开)
9.3 修改配置文件并重新部署
在 wrangler.toml 里加上路由:
Zone ID 在 Cloudflare Dashboard → 你的域名 → Overview 页面右侧边栏可以找到。改完执行 wrangler deploy,输出里会显示你的自定义域名。
十、Cron 定时任务的时区坑
项目内置了每天 23:59 自动清空互助码的定时任务:
为什么是 59 15 而不是 59 23? 因为 Cron 用的是 UTC 时间,中国时间 = UTC + 8,所以 23:59 CST = 15:59 UTC。改成其他时间的换算表:
中国时间 | UTC 时间 | Cron 表达式 |
|---|---|---|
23:59 | 15:59 |
|
00:00 | 16:00 |
|
06:00 | 22:00 |
|
12:00 | 04:00 |
|
十一、后台管理
打开 https://你的域名/admin,输入第七步设置的 ADMIN_KEY 即可进入后台,功能包括:
数据统计:活跃码、已使用、黑名单数、今日提交/拦截
站点设置:公告、广告位、QQ 群/站长 QQ、智能直达开关、刷新间隔
邀请码管理:查看完整码、归属地、手动删除
IP 黑名单:添加/移除,支持封禁期限(24 小时 / 1 个月 / 1 年 / 永久)
举报管理:处理/驳回假码举报
提交日志:分页审计所有提交记录
十二、常见问题
Q: 部署后打开网站是白屏? 检查 wrangler.toml 里的 database_id 是否已改成自己的,数据库表是否已建(第六步),然后重新 wrangler deploy。
Q: workers.dev 打不开? 中国大陆网络环境下可能被屏蔽。绑定自己的域名(第九步),或者挂代理访问。
Q: 后台进不去,提示密码错误? 重新设置管理密钥:wrangler secret put ADMIN_KEY,然后重新部署。
Q: 提示"提交过于频繁"? 防刷规则生效了:同一 IP 1 分钟内最多提交 5 次、1 天最多 30 次。等一会儿再试。
Q: 免费额度够用吗? Workers 免费计划每天 100,000 次请求,D1 免费 5GB 存储,Cron 免费。个人互助平台完全够用;流量大了再考虑 $5/月的付费计划。
附录:部署命令速查
写在最后
整个部署过程只需要一条条复制命令,最大的坑其实就两个:database_id 忘了替换、Cron 时区没换算。希望这篇教程能帮你少走弯路。有问题欢迎评论区留言。
