目录
以前这里是一张单页:所有内容写在一个 HTML 里,改一句话就得重新排版。现在它变成了正经的多页博客,而整条发布链路只有三个环节。
内容 → 仓库
文章是 Markdown,放在 Gitea 的私有仓库里。Gitea 也跑在这台 2 核 2G 的机器上,用 Docker 启动,内存上限 384 MB,实际常驻不到 200 MB。
仓库 → 构建
服务器上一分钟跑一次构建脚本:git fetch 看有没有新提交,有新提交就用 Hugo 生成静态站。Hugo 构建这个站只要两百毫秒左右,全部产物不到 500 KB。
构建写在临时目录里,成功才原子替换线上目录,失败就保留旧版本——所以发布过程中不会出现半成品页面。
写文章在哪
网页后台,地址是 /cms/。它是纯前端的 CMS,登录复用 Gitea 账号(PKCE 流程,不需要额外注册 OAuth 应用),写完直接提交到仓库,几十秒后站点就更新了。
不想用后台也行,本地写 Markdown git push 效果一样。
几个取舍
- 不用数据库:内容就是文件,备份就是打包一个 git 仓库。
- 不为后台单独起服务:CMS 是静态页面,读写都走 Gitea 的 API。
- 缓存策略保守:HTML 一律 no-cache,改版立刻可见;CSS/JS 文件名带内容哈希,可以放心长缓存。
- 构建失败不影响线上:临时目录构建,成功才切换。
整套东西的资源占用比原来一张单页多了大约 200 MB 内存,换来的是可以正常写长文、有归档、有标签、有站内搜索。