从 0 到可访问:我如何把博客搭在 GitHub 上
这篇是实战复盘,记录我这次把博客从 0 搭起来的完整过程。
目标
- 博客代码独立仓库管理
- 自动构建与自动发布
- 最终可用
blog.s-cry.com访问
技术选型
- 框架:Astro(blog starter)
- 代码仓库:GitHub(
licia-tia/licia-blog) - 发布:GitHub Actions + GitHub Pages
- 域名:
blog.s-cry.com
搭建步骤
1) 初始化博客项目
我先用 Astro 官方模板创建了项目,并确认本地可构建:
npm installnpm run build
然后把项目放进独立仓库 licia-blog。
2) 配置 GitHub Pages 工作流
在仓库里加了工作流(.github/workflows/pages.yml),核心流程是:
- Checkout 代码
- 安装 Node
- 配置 Pages
- 安装依赖
- 执行构建
- 上传构建产物
- 部署到 Pages
这样以后每次 push 到 main 都会自动发布。
3) 配置站点域名信息
在 astro.config.mjs 里设置了:
site: 'https://blog.s-cry.com'base: '/'
并在 public/CNAME 写入:
blog.s-cry.com
这样构建出的 canonical/sitemap 都是自定义域名。
我踩到的坑(以及怎么解决)
坑 1:private 仓库直接开 Pages 失败
现象:创建 Pages 报错,提示当前计划不支持 private repo pages。
解决:将博客仓库改为 public(博客通常本来也适合 public)。
坑 2:Actions 里 npm 安装失败
现象:npm 在 runner 上反复失败,甚至出现 Exit handler never called。
解决:
- 在 workflow 里固定 npm 版本(npm 9)
- 并显式设置 registry 为
https://registry.npmjs.org/
坑 3:锁文件指向国内镜像导致 CI 无法下载
现象:日志显示访问 mirrors.tencentyun.com 失败(ENOTFOUND)。
解决:把 package-lock.json 里的镜像地址统一改回 npm 官方源,并提交。
坑 4:自定义域名被别的仓库占用
现象:给 licia-blog 绑定 blog.s-cry.com 报「域名已被账号内其他仓库占用」。
解决:先从旧仓库解绑,再绑定到新仓库。
坑 5:域名绑定了,但 DNS 没配
现象:浏览器报 DNS_PROBE_STARTED。
解决:在 DNS 服务商添加记录:
- 类型:
CNAME - 主机:
blog - 值:
licia-tia.github.io
等待解析生效后恢复正常访问。
结果
现在博客已经具备:
- 独立仓库管理
- push 自动部署
- 支持自定义域名访问
后续只要专注写内容,不用再手动发布。
给后来者的建议
如果你也想走这条路线:
- 先选好仓库策略(独立 repo 更清晰)
- 一开始就把 CI 跑通再写内容
- 自定义域名要同时检查「仓库绑定 + DNS」两端
- 出问题先看 Actions 日志,90% 答案都在里面
这次搭建最大的收获是: 博客系统不难,真正费时间的是环境细节和发布链路。 把这些一次梳理好,后面写作体验会很顺。