项目部署

GMShop Edge 部署实践记录:使用 Cloudflare Workers 搭建数字商品商城

2026-07-30 #Cloudflare#Workers#部署记录#GMShop Edge#数字商城
早风依旧
正在加载歌曲信息……
私有音源
0:00 0:00

这篇文章记录一下我部署 GMShop Edge 的完整过程。

项目本身是一个运行在 Cloudflare Workers 上的数字商品商城,公开商城、客户中心、订单、库存、交付和管理后台都放在同一个 Worker 中。对我来说,最大的好处是不需要单独准备服务器,也不用维护 Nginx、数据库和 Docker 容器。

项目仓库:

1
https://github.com/GMWalletApp/gmshop-edge

我最终使用的商城域名是:

1
https://shop.mcpq.cc

本文是我实际部署过程的记录。方便我后续维护已经部署的它。

一、GMShop Edge 会创建哪些 Cloudflare 资源

一键部署并不是只创建一个 Worker,它还会创建或绑定一组 Cloudflare 服务。

我这次使用的资源如下:

类型 名称 作用
Worker gmshop-edge 运行商城前台、客户中心和管理后台
D1 gmshop-edge 保存用户、商品、订单、库存、权限和系统配置
KV gmshop-edge-cache 保存短期缓存和带版本的读取数据
R2 gmshop-edge-files 保存私有下载文件、商品媒体、导出文件和自动化制品
Queue gmshop-edge-commerce 异步处理交易、交付、重试等任务
死信 Queue gmshop-edge-commerce-dlq 保存多次重试后仍失败的任务
Cron Trigger * * * * * 每分钟执行一次定时维护任务
Send Email EMAIL 可选的 Cloudflare 邮件发送绑定

其中 D1 是主要数据源,R2 用来保存文件,KV 主要负责缓存,Queue 和 Cron 则把耗时任务从网页请求中拆出去。

需要注意,EMAIL 是可选能力。如果暂时不使用 Cloudflare Send Email,可以先不配置,后面也可以在后台接入 SMTP、Resend、Postmark、SendGrid 或 Mailgun。

二、部署前准备

开始之前需要准备:

  • 一个 Cloudflare 账户
  • 一个 GitHub 账户
  • 已经接入 Cloudflare 的域名
  • 已启用 R2

我使用的是 Cloudflare 官方的一键部署入口:

1
https://deploy.workers.cloudflare.com/?url=https://github.com/GMWalletApp/gmshop-edge

进入后登录 Cloudflare,并授权 GitHub。

三、配置一键部署页面

在部署页面中,我勾选了“创建专用 Git 存储库”。这样 Cloudflare 会在自己的 GitHub 账户里创建一份私有仓库,并连接到 Worker。以后对生产分支的提交也可以自动触发部署。

1. 项目名称

1
gmshop-edge

2. KV 命名空间

选择“新建”,名称填写:

1
gmshop-edge-cache

3. D1 数据库

选择“新建”,名称填写:

1
gmshop-edge

数据库位置选择亚太区域即可,读取复制暂时关闭。个人商城前期没有必要额外开启读取复制。

4. R2 存储桶

选择“新建”,名称填写:

1
gmshop-edge-files

5. Commerce Queue

选择“新建”,名称填写:

1
gmshop-edge-commerce

死信队列:

1
gmshop-edge-commerce-dlq

由项目配置自动创建,不需要在部署表单里单独选择。

6. 构建和部署命令

保持项目默认值:

1
bun run build
1
bun run deploy

确认没有复用其他项目的 D1、KV、R2 和 Queue 后,点击“部署”。

四、确认部署是否成功

部署成功后,日志中应该能看到 Worker 及其绑定资源,并出现类似下面的地址:

1
https://gmshop-edge.963107397.workers.dev

项目还会启用每分钟一次的 Cron,并同时注册 Queue 的生产者和消费者。

如果日志里出现关于 workers_dev 或 Preview URLs 默认开启的警告,一般不影响运行。它只是提示项目配置中没有显式关闭这些入口。

五、初始化商城

第一次部署完成后,访问:

1
https://gmshop-edge.963107397.workers.dev/install

安装页面会要求创建第一个管理员账号。这个账号会成为受保护的 root 管理员,因此密码不要和其他网站共用。

初始化完成后,管理后台地址是:

1
https://gmshop-edge.963107397.workers.dev/admin

安装过程会创建:

  • 第一位 root 管理员
  • 内置角色和权限数据
  • 运行时密钥
  • 必需的系统设置

它不会自动创建虚假商品、库存或支付渠道,这些内容需要后续自己配置。

六、绑定自定义域名

我最终给商城绑定的是:

1
shop.mcpq.cc

进入 Cloudflare:

1
2
3
4
5
6
Workers 和 Pages
→ gmshop-edge
→ 设置
→ 域和路由
→ 添加
→ 自定义域

填写:

1
shop.mcpq.cc

等待证书和路由生效后,访问:

1
https://shop.mcpq.cc

七、处理 Misdirected Request

我第一次绑定自定义域名后,页面返回了:

1
Misdirected Request

这不是域名解析错误,而是 GMShop Edge 有严格的主机访问控制。新域名没有被加入 Allowed Hosts 时,程序会拒绝请求。

解决方法是在后台修改两项配置。

1. 修改应用地址

进入:

1
2
系统设置
→ 认证配置

把应用地址改成:

1
https://shop.mcpq.cc

2. 修改 Allowed Hosts

进入:

1
2
系统设置
→ 访问控制

一行填写一个主机名:

1
2
shop.mcpq.cc
gmshop-edge.963107397.workers.dev

这里不要填写协议,也不要写路径。保存后重新打开自定义域名,商城即可正常访问。

保留 workers.dev 主机名的好处是:自定义域名配置出现问题时,仍然可以通过原始 Worker 地址进入后台修复。

八、后台还需要配置什么

商城可以打开并不代表已经适合正式营业。至少还需要完成下面这些内容:

1. 品牌和站点信息

设置站点名称、说明、Logo、背景图和默认语言。

2. 注册与认证

决定是否允许注册、是否允许游客购买,以及是否启用邮箱验证或第三方登录。

3. 邮件服务

根据需要配置 SMTP、Resend、Postmark、SendGrid、Mailgun 或 Cloudflare Send Email。

4. 商品和交付

创建商品、售卖项,并根据商品类型配置:

  • 卡密或账号库存
  • R2 私有下载文件
  • 自动化交付
  • 上游供货平台

5. 支付渠道

GMShop Edge 是商城,不是支付网关。它不会自己扫描区块链,需要接入外部支付服务,例如 Stripe、GMpay、EPay、支付宝或微信支付。

我后续使用的是单独部署的 GMPay Edge,用于接收 USDT TRC20 和 USDC Base。对应部署过程放在另一篇文章中。
https://blog.mcpq.cc/posts/gmpay-edge-cloudflare-deployment

九、部署后的完整结构

1
2
3
4
5
6
7
8
9
10
11
访问者
↓
shop.mcpq.cc
↓
GMShop Edge Worker
├─ D1:用户、商品、订单、库存、权限
├─ KV:缓存
├─ R2:商品文件和导出文件
├─ Commerce Queue:异步交易和交付任务
├─ Dead Letter Queue:失败任务
└─ Cron:每分钟维护和重试

十、费用和免费额度

这个项目可以先使用 Cloudflare 免费套餐部署。个人站点和低订单量使用时,通常可以在免费额度内运行,但并不等于所有资源永远免费。

需要重点观察:

  • Workers 每日请求量
  • D1 读取、写入和存储
  • KV 读写次数
  • Queues 操作次数
  • R2 存储和请求次数

R2 属于按量计费产品,超过免费额度后可能产生费用。正式使用前建议在 Cloudflare Billing 中检查用量和账单设置。具体额度以 Cloudflare 官方最新价格页面为准。

十一、备份和安全建议

正式添加商品和订单前,建议做好这些事情:

  1. 定期导出 D1 数据库。
  2. 备份 R2 中的重要商品文件。
  3. 保存后台运行时配置,但不要把密钥提交到 GitHub。
  4. root 账号使用独立强密码,并开启二次验证。
  5. 正式开放前完成一次真实支付和自动交付测试。
  6. 更新项目之前先备份,不要直接在生产环境盲目升级。

十二、总结

GMShop Edge 的部署本身并不复杂,一键部署会把 Worker、D1、KV、R2、Queue 和 Cron 一起准备好。实际最容易遇到的问题反而是自定义域名绑定后的 Allowed Hosts 配置。

这次最终完成了:

1
2
3
4
5
6
7
商城地址:https://shop.mcpq.cc
Worker:gmshop-edge
D1:gmshop-edge
KV:gmshop-edge-cache
R2:gmshop-edge-files
Queue:gmshop-edge-commerce
Cron:每分钟执行

接下来只需要继续配置商品、邮件、支付渠道和交付方式,就可以把它作为自己的数字商品商城使用。

评论
分享

评论