MakerJackie

部署

把你的博客网站发布到互联网上。

什么是「部署」

部署 = 把你的网站上传到互联网,让全世界都能通过网址访问。

打个比方:你在电脑上写好了一本书,「部署」就是把这本书送到书店的书架上,这样读者才能看到。在部署之前,网站只存在于技术人员的电脑上,只有他自己能看到。

你的网站住在哪里:Cloudflare

你的网站运行在 Cloudflare 的服务器上。

问题回答
Cloudflare 是什么?一家美国上市公司,全球最大的网络基础设施服务商之一
为什么选它?免费额度慷慨、速度快(全球都有服务器)、稳定可靠
要花钱吗?核心博客通常在免费额度内;R2 可能需要先绑定付款方式,Email Sending 需要付费计划

网站需要哪些「基础设施」

你的网站由三个核心组件支撑,可以用一个餐厅来类比:

组件类比做什么
Workers服务员接待每一位访问你网站的人,把页面送到他们面前
D1表格仓库(数据库)存储你的文章、评论、用户信息等结构化数据
R2文件柜存储你上传的图片、备份文件等

还有一些可选组件(比如 KV 缓存、邮件发送),不影响核心功能,按需开启即可。

部署步骤概述

对你来说,部署的体验是这样的:

  1. 你在后台写好文章、调整好设置
  2. 技术人员在终端运行一个命令,网站就更新了

整个过程通常只需要几十秒。

如果你使用 AI 初始化建站,AI 可以继续负责创建 D1、KV、R2、Worker、DNS 绑定、D1 migrations 和部署验证。你只需要在 Cloudflare 登录、付款方式确认、域名 nameserver、OAuth 应用或邮件验证这些环节手动确认。

本地开发是什么

「本地开发」是指技术人员在自己的电脑上运行一个网站的副本来测试效果。就像厨师在后厨试菜——只有他自己能吃到,顾客看不到。

本地开发的用途:

  • 开发新功能时先在本地验证
  • 修改样式后先看看效果对不对
  • 不会影响已经上线的正式网站

技术人员参考

以下内容面向负责部署和维护的开发人员。如果你是产品经理或站点拥有者,可以跳过这部分。

本地开发管理员

给本地 Wrangler D1 数据库写入固定管理员账号:

pnpm db:seed:local-admin

默认本地登录信息:

email: a@a.test
password: 1

此命令只写入 .wrangler/state 下的本地 D1,不会创建生产管理员账号。需要覆盖默认值时设置 BLOGCMS_LOCAL_ADMIN_EMAILBLOGCMS_LOCAL_ADMIN_NAMEBLOGCMS_LOCAL_ADMIN_PASSWORD

生产部署

部署前替换 apps/web/wrangler.jsonc 里的 D1 database id、KV namespace id、公开站点 URL 及可选自定义域名。Placeholder 未替换时 pnpm deploy:web 会提前失败。

pnpm deploy:web

此命令会:检查 R2 存储桶 → 构建 Web 应用 → 应用远程 D1 migrations → 部署 Worker → 同步 Git 管理的笔记(需配置 CMS_PUBLIC_SITE_URLCMS_API_TOKEN)。

如果提示缺少 R2 存储桶:

pnpm --filter @repo/web exec wrangler r2 bucket create blog-starter-assets --config wrangler.jsonc

运行时资源

Workers: 公开站点、后台、API 路由、feeds、sitemap、robots
D1: 文章、评论、设置、用户、会话、tokens
R2: 资产、导入包、导出包、备份
KV: 缓存元数据和可选短期记录

环境变量

本地开发读取 apps/web/.env,生产环境读取 Wrangler vars 与 secrets。变量名以 apps/web/wrangler.jsonc 为准。

生产环境设置 secrets:

pnpm --filter @repo/web exec wrangler secret put BETTER_AUTH_SECRET --config wrangler.jsonc
pnpm --filter @repo/web exec wrangler secret put GITHUB_CLIENT_ID --config wrangler.jsonc
pnpm --filter @repo/web exec wrangler secret put GITHUB_CLIENT_SECRET --config wrangler.jsonc
pnpm --filter @repo/web exec wrangler secret put GOOGLE_CLIENT_ID --config wrangler.jsonc
pnpm --filter @repo/web exec wrangler secret put GOOGLE_CLIENT_SECRET --config wrangler.jsonc

D1 Migrations

pnpm deploy:web 自动应用远程 D1 migrations。仅自定义流水线或定向维护时手动运行:

pnpm --filter @repo/web exec wrangler d1 migrations apply <d1-database-name> --remote --config wrangler.jsonc

可选 Email Sending

Cloudflare Email Sending 默认关闭(需要 Workers Paid)。用于密码重置、后台通知、导入导出通知等场景。未配置时核心功能不受影响。

社交账号评论登录

GitHub/Google OAuth 配置详见 评论文档