956 字
5 分钟
折腾了两天,博客总算上线了

一直想有个地方把工作里踩的坑记下来。做后端这些年,很多问题都是查完、解决完就过去了,隔段时间再遇到还得重新查一遍。这次总算动手了。

选了个现成的主题#

前端我是真不会。所以没打算自己写,直接从 GitHub 上 clone 了一个叫 Fuwari 的博客主题,基于 Astro 做的。

Astro 这东西,用后端的话理解就是:它把 Markdown 文件编译成一堆静态 HTML,最后产物是个纯静态站点,没有后端也没有数据库。package.json 相当于 pom.xml,pnpm 相当于 Maven,node_modules 相当于 .m2 仓库——只不过它是放在项目目录里的。

跑起来只要一条命令:

Terminal window
pnpm dev

本地 4321 端口就能看到了。改文件自动热更新,这点比后端调试舒服。

把别人的东西改成自己的#

clone 下来的是人家的 demo 站,到处都是原作者的信息。挨个改:

  • 界面语言换成中文(主题自带 zh_CN 翻译,改一行配置的事)
  • 站点标题、昵称、简介、头像
  • 导航栏和侧边栏的 GitHub 链接指向自己
  • 「关于」页重写

页脚那句 “Powered by Astro & Fuwari” 留着了。项目是 MIT 协议,删掉也不违规,但人家开源出来给你用,署个名是应该的。

一个意外发现#

推代码到自己仓库的时候卡住了,SSH 连不上 GitHub。翻 ~/.ssh/config 一看:

Host github.com
IdentityFile /home/node/.ssh/id_ed25519
IdentitiesOnly yes

/home/node/ 是 Linux 容器里的路径。我这是 macOS,家目录是 /Users/,这文件压根不存在。应该是之前哪次从 devcontainer 里把配置复制过来了,一直没发现。而 IdentitiesOnly yes 意味着”只准用这个密钥”,把本机真实的密钥全挡在外面了。

顺手还发现本机两把密钥不一样:一把是某个仓库的 Deploy Key(只能访问那一个仓库),另一把才是账号密钥。测试的时候能看出来:

Terminal window
ssh -T git@github.com
# Deploy Key 回: Hi 用户名/仓库名!
# 账号密钥回: Hi 用户名!

改对路径就通了。这种从别的环境带过来的配置残留,不出事的时候完全不知道。

部署踩的一个认知坑#

本来想用 Cloudflare Pages,结果部署完发现域名是 xxx.workers.dev 而不是 xxx.pages.dev——才知道自己用的是 Workers。

查了下才搞明白:Cloudflare 这两年在把 Pages 往 Workers 上合并。Workers 原本是跑 Serverless 函数的,后来加了托管静态资源的能力,现在官方文档明确写着新项目请用 Workers,Pages 只是还能用而已。

对纯静态博客来说两者没区别,都是 push 代码自动构建部署。就是给的免费域名后缀不一样。

顺便看了下免费额度,比想象中大方:

服务免费额度
Workers 请求10 万次/天
D1(SQLite)读 500 万行/天,5 GB 存储
KV读 10 万次/天
R2(对象存储)出流量免费

也就是说计算、数据库、缓存、对象存储都齐了。以后想给博客加个评论系统或者访问统计,不用另找服务器。

最后一个乌龙#

改完子域名,浏览器打不开新地址,以为部署挂了。命令行测了一下:

Terminal window
curl -I https://blog.masteryang.workers.dev/
# HTTP/2 200

服务端好好的。是本机代理软件的 DNS 缓存问题——域名被解析到了 198.18.x.x 这种虚拟地址段。虚惊一场。

排查问题还是得先分清是服务端还是客户端,凭感觉容易跑偏。

现在的状态#

从改 Markdown 到线上生效,整条链路是通的:

写 .md 文件 → git push → Cloudflare 自动构建 → 约 2 分钟上线

内容还很空,就先这样。慢慢写。

折腾了两天,博客总算上线了
https://blog.masteryang.workers.dev/posts/building-this-blog/
作者
yang
发布于
2026-08-30
许可协议
CC BY-NC-SA 4.0