运维部署

这个站点是怎么搭起来的

单页改多页:Hugo 静态生成 + Gitea 私有仓库 + 网页后台 + 每分钟自动发布,2 核 2G 小机器上跑完整个链路。

约 1 分钟 Hugo · 自动化 · 运维部署

以前这里是一张单页:所有内容写在一个 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 内存,换来的是可以正常写长文、有归档、有标签、有站内搜索。

← 上一篇
反向代理实现 HTTPS 配置

相关笔记