使用cloudflare-page部署digital-biome

使用 Cloudflare Pages 部署静态站点的完整流程与注意事项

#type / howto #status / growing #resource / cloudflare

[!info] related notes

使用 Cloudflare Pages 部署 digital-biome

目标

使用 Cloudflare Pages 部署静态站点(如 Astro、Hugo、Vite 等构建的网站),享受免费托管、全球 CDN 和自动部署。

前置条件

  • GitHub / GitLab 账号,且项目代码已推送到远程仓库
  • Cloudflare 账号(免费即可)
  • 项目使用静态站点生成器(Astro、Hugo、Next.js SSG 等)或纯 HTML

步骤

1. 连接仓库

  1. 登录 Cloudflare Dashboard
  2. 左侧菜单 → Workers & Pages
  3. 点击 Create applicationPagesConnect to Git
  4. 授权 Cloudflare 访问你的 GitHub/GitLab
  5. 选择要部署的仓库

[!warning] 子仓库使用 HTTP 地址 如果项目中引用了 Git 子模块(submodule),子仓库必须使用 HTTP 地址而非 SSH。否则 Cloudflare Pages 拉取时没有权限,会导致构建失败。

2. 构建配置

设置项示例值(Astro 项目)
Production branchmain
Build commandnpm run build
Build output directorydist

常见框架的构建输出目录:

  • Astro: dist
  • Hugo: public
  • Vite / Vue / React: dist
  • Next.js SSG: out
  • Gatsby: public

3. 环境变量

在项目的 Pages 设置中添加环境变量:

  • NODE_VERSION:设为 1820(默认可能太旧)
  • NODE_ENVproduction
  • 其他项目需要的环境变量(如 API key)

4. 自定义域名

  1. 在 Pages 项目设置中点击 Custom domains
  2. 输入你的域名(如 digital-biome.example.com
  3. 按提示添加 DNS 记录(CNAME 指向 xxx.pages.dev
  4. Cloudflare 会自动配置 SSL 证书

5. 触发部署

  • 推送到 Production 分支会自动触发构建和部署
  • Pull Request 会生成预览 URL(Preview deployment)

Cloudflare Pages 入口

[!tip] Pages 入口在底部 Cloudflare Dashboard 的导航栏中,Workers & Pages 在左侧菜单底部,容易被忽略。

cloudflare-pages-entry

验证

  • Cloudflare Pages 项目页面显示最近一次部署状态为 Success
  • 访问 xxx.pages.dev 能看到网站内容
  • 自定义域名解析正常,HTTPS 证书有效
  • Push 代码后自动触发重新部署
  • PR 生成了预览链接

常见问题

Q: 构建失败,提示 “Build output directory not found”? A: 检查 Build output directory 设置是否与框架的输出目录一致。Astro 是 dist 而非 build

Q: 部署成功但访问 404? A: 检查构建输出目录是否正确,以及项目根目录下是否有 index.html。SPA 项目可能需要配置 _redirects_headers 文件。

Q: 子模块拉取失败? A: 将子模块 URL 从 SSH(git@github.com:...)改为 HTTPS(https://github.com/...)。在 .gitmodules 中修改。

Q: 环境变量不生效? A: Cloudflare Pages 的环境变量在构建时注入,需要在 Pages 项目设置中添加(而非 .env 文件)。构建后变量不会暴露给客户端(除非以 PUBLIC_ 前缀命名)。

Q: 如何回滚到之前的部署? A: 在 Pages 项目的 Deployments 页面,找到想回滚的版本,点击右侧菜单 → Rollback to this deployment

创建于 2026/3/6 更新于 2026/5/27