一、先说一个容易踩的坑
很多人第一反应是「用 GitHub Pages 不就行了」。但 GitHub 官方文档写得很明确:
GitHub Pages 在 GitHub Free 下只支持公开仓库; 私密仓库需要 GitHub Pro、Team 或 Enterprise。
也就是说,私密仓库 + 免费账户 = 用不了 GitHub Pages。
有两条路可以走:
- 把仓库改成公开,继续用 GitHub Pages。
- 保持私密,改用 Cloudflare Pages——它免费支持私密仓库。
仓库保持私密,托管交给 Cloudflare Pages。 顺便还能拿到全球 CDN 和自动 HTTPS,域名解析本来就在 Cloudflare,链路最短。
二、准备仓库
在 GitHub 上创建私密仓库 linqian,然后把本地文件推上去。
git init
git add .
git commit -m "init: 博客初始版本"
git branch -M main
git remote add origin https://github.com/jeskuns/linqian.git
git push -u origin main
站点文件放在仓库根目录:
index.html、about.html、
404.html、posts/、assets/。
三、连接 Cloudflare Pages
- 登录 Cloudflare Dashboard,进入 Workers & Pages。
- 点击 Create → 选择 Pages 标签页。
- 选择 Connect to Git。
- 授权 Cloudflare 访问 GitHub,选中
linqian仓库。 - 点击 Begin setup。
构建配置
因为这个站是纯静态的、没有构建步骤,所以配置非常简单:
| 配置项 | 填写内容 |
|---|---|
| Project name | linqian |
| Production branch | main |
| Framework preset | None |
| Build command | 留空 |
| Build output directory | / |
点击 Save and Deploy。第一次部署大约几十秒,
完成后会给你一个 linqian.pages.dev 的预览地址。
页面是手写的 HTML,不需要打包。留空能减少一个失败环节—— 很多人的部署失败都是因为构建命令写错。
四、绑定自定义域名
- 进入 Pages 项目 → Custom domains 标签页。
- 点击 Set up a custom domain。
- 输入
linqian-1ar.pages.dev,确认。 - 因为域名的 DNS 已经在同一个 Cloudflare 账户里, 系统会自动创建 CNAME 记录。点击 Activate domain 即可。
证书签发通常几分钟内完成。之后访问
https://linqian-1ar.pages.dev 就能看到站点了。
顺便加上 www
如果你希望 www.linqian-1ar.pages.dev 也能访问,
在 Custom domains 里再加一条,Cloudflare 会处理跳转。
五、验证部署
# 检查解析
dig +short linqian-1ar.pages.dev
# 检查 HTTP 状态与证书
curl -I https://linqian-1ar.pages.dev
# 预期看到
# HTTP/2 200
# cf-cache-status: HIT 或 DYNAMIC
六、以后怎么更新
非常简单——改文件、提交、推送,Cloudflare 会自动重新部署:
git add .
git commit -m "post: 新增一篇文章"
git push
另外,推送到非 main 分支时会生成独立的预览地址,
适合先看效果再合并。
七、本地预览
因为是纯静态站,本地预览需要一个简单的 HTTP 服务
(直接双击 index.html 会因为绝对路径失效):
# 方式一:Node
npx serve .
# 方式二:Python
python -m http.server 8000
# 然后浏览器打开 http://localhost:8000
站内链接使用 /assets/... 这样的根绝对路径,
所以必须用自定义域名或本地服务器访问。
直接访问 jeskuns.github.io/linqian/ 这类子路径地址会 404。
八、检查清单
- GitHub 私密仓库已创建并推送成功。
- Cloudflare Pages 项目构建通过,
*.pages.dev可访问。 - 自定义域名已激活,HTTPS 证书已签发。
dig与curl -I均返回预期结果。- 随便点几个站内链接,确认没有 404。
全部打勾,这个站就正式上线了。