banner
约 2,400 字
8 分钟

零成本把项目部署到 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 账号

  1. 打开浏览器,访问 https://dash.cloudflare.com/sign-up

  2. 输入邮箱和密码,点 Create Account

  3. 去邮箱收验证邮件,点验证链接

  4. 登录成功,看到 Cloudflare 控制台首页

已经有账号的直接登录就行。

三、安装 Node.js 和 Wrangler

3.1 安装 Node.js

  1. 打开 https://nodejs.org/

  2. 下载 LTS(长期支持版),一路下一步安装

  3. 安装完成后,打开终端验证:

bash
node -v

应该显示类似 v20.11.0 的版本号。

3.2 安装 Wrangler

Wrangler 是 Cloudflare 的命令行工具,用来部署代码:

bash
npm install -g wrangler

如果提示权限错误(Mac / Linux),前面加 sudo。安装完验证:

bash
wrangler --version

四、登录 Cloudflare

bash
wrangler login

会自动打开浏览器,显示 Cloudflare 授权页面,点 Allow,看到 "You have granted authorization" 就成功了。

如果浏览器没有自动弹出:终端里会显示一个网址,手动复制到浏览器打开就行。

五、创建 D1 数据库

D1 是 Cloudflare 的 SQLite 数据库,免费 5GB,用来存储邀请码、黑名单等数据:

bash
wrangler d1 create pdd-fudai-db

输出大概长这样:

纯文本
✅ Successfully created DB 'pdd-fudai-db'
┌───────────────────────────────────────┬───────────────────────────────┐
│ database_id                           │ database_name                 │
├───────────────────────────────────────┼───────────────────────────────┤
│ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  │ pdd-fudai-db                  │
└───────────────────────────────────────┴───────────────────────────────┘

⚠️ 重要!database_id(那一串 UUID)记下来,下一步要用。

六、初始化数据库表

进入项目目录,执行建表命令:

bash
cd pdd-fudai
wrangler d1 execute pdd-fudai-db --remote --file=schema.sql

看到 ✅ Executed 9 queries in 0.12s 就成功了。这会创建 5 张表:

表名

用途

codes

邀请码(用户提交的互助码)

blacklist

IP 黑名单

reports

假码举报记录

submit_logs

提交日志(用于防刷统计)

settings

站点设置(公告、广告、QQ 等)

七、设置管理密钥

管理密钥是进后台的密码,一定要设一个复杂的:

bash
wrangler secret put ADMIN_KEY

终端会提示 Enter a secret value:,输入你自己想好的密码,回车。

请牢记这个密码! 后台登录、API 管理都需要它,丢失了只能重新设置。

八、部署到 Cloudflare Workers

8.1 修改配置文件

打开项目目录下的 wrangler.toml,把 database_id 换成第五步记下来的那串 UUID:

toml
name = "pdd-fudai"
main = "src/index.js"
compatibility_date = "2024-09-23"

[[d1_databases]]
binding = "DB"
database_name = "pdd-fudai-db"
database_id = "你的-database-id"

[triggers]
crons = ["59 15 * * *"]

8.2 执行部署

bash
wrangler deploy

看到类似输出就成功了:

纯文本
Total Upload: 89.2 KiB / gzip: 22.1 KiB
Uploaded pdd-fudai (1.23 sec)
  Deployed pdd-fudai triggers
    - https://pdd-fudai.<你的子域名>.workers.dev

把网址复制到浏览器打开,就能看到首页了。

中国大陆用户注意workers.dev 域名在中国大陆可能打不开,请看下一步绑定自己的域名。

九、绑定自定义域名(推荐)

有自己的域名体验会好很多,网址短好记,全球可访问。

9.1 域名接入 Cloudflare

如果你的域名不在 Cloudflare 管理:

  1. 登录 Cloudflare Dashboard,点 Add a Site,输入你的域名

  2. 选择 Free(免费)计划

  3. Cloudflare 会给你 2 个 NS 地址

  4. 去你的域名注册商(阿里云/腾讯云/GoDaddy 等)把 DNS 的 NS 记录改成 Cloudflare 给的那两个

  5. 等待生效(通常几分钟到几小时)

9.2 添加 DNS 记录

  1. Cloudflare Dashboard → 你的域名 → DNSRecordsAdd record

  2. 填写:

    • Type: A

    • Name: fudai(或者你想要的子域名前缀)

    • IPv4 address: 192.0.2.1(占位地址,Workers 会自动接管)

    • Proxy status: 🟠 Proxied(橙色云朵,必须开)

9.3 修改配置文件并重新部署

wrangler.toml 里加上路由:

toml
routes = [
  { pattern = "fudai.你的域名.com/*", zone_id = "你的Zone-ID" }
]

Zone ID 在 Cloudflare Dashboard → 你的域名 → Overview 页面右侧边栏可以找到。改完执行 wrangler deploy,输出里会显示你的自定义域名。

十、Cron 定时任务的时区坑

项目内置了每天 23:59 自动清空互助码的定时任务:

toml
[triggers]
crons = ["59 15 * * *"]

为什么是 59 15 而不是 59 23 因为 Cron 用的是 UTC 时间,中国时间 = UTC + 8,所以 23:59 CST = 15:59 UTC。改成其他时间的换算表:

中国时间

UTC 时间

Cron 表达式

23:59

15:59

59 15 * * *

00:00

16:00

0 16 * * *

06:00

22:00

0 22 * * *

12:00

04:00

0 4 * * *

十一、后台管理

打开 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/月的付费计划。

附录:部署命令速查

bash
npm install -g wrangler        # 安装 CLI
wrangler login                 # 登录
wrangler d1 create pdd-fudai-db    # 创建数据库
wrangler d1 execute pdd-fudai-db --remote --file=schema.sql  # 建表
wrangler secret put ADMIN_KEY  # 设置管理密钥
wrangler deploy                # 部署 / 更新

写在最后

整个部署过程只需要一条条复制命令,最大的坑其实就两个:database_id 忘了替换、Cron 时区没换算。希望这篇教程能帮你少走弯路。有问题欢迎评论区留言。

END