把这个博客迁到静态生成:全过程和我踩的坑
2026-10-12 · 静态站点 / 部署这个站原来是动态的,跑在一个小进程后面。上个月我把它迁成了静态生成 + nginx 直出。动机很简单:动态进程半夜挂过两次,而博客这种"写完就不怎么改"的内容,根本不需要运行时。
迁移顺序(照这个来能少踩坑)
- 先把旧站全量备份(数据库导出 + 上传目录打包),放到服务器另一个目录,别放在 web 根里。
- 本地搭静态生成器,把旧文章导成 markdown。导的时候顺手修 frontmatter(title/date/tags)。
- 本地构建,用一个临时端口预览,逐篇抽查渲染结果(代码块、图片、表格是重灾区)。
- nginx 加一个新的 server block 指向静态目录,先用一个临时域名/端口验证,不动主域。
- 验证没问题,再把主域 root 切到静态目录,保留旧配置注释掉以便回滚。
坑一:base 路径
构建器默认 base 是 /。我本地预览用的是子路径,构建出来资源全 404。排查半小时才发现是 base 没设对。教训:本地预览的路径要和最终部署路径一致,或者显式设 base。
坑二:RSS 的绝对链接
RSS 里的 link 必须是绝对 URL。我一开始用了相对路径,订阅器全解析错。这个错不报错、只是订阅者收到坏链接,很隐蔽。改法是构建时注入 site.url,RSS 模板里拼绝对地址。
回滚方案
nginx 旧 server block 我注释保留没删。万一静态站有问题,把注释打开、reload 就回到旧站,十秒级回滚。这个习惯救过我一次(某次构建产物漏传了图片目录)。
静态化之后最爽的不是快,是"没有运行时"。没有进程会半夜挂,没有依赖会升级炸,nginx 直出 HTML,出问题的面一下子小了很多。
现在整站构建+部署一条命令,产物就是纯文件。备份=拷贝目录,迁移=拷贝目录,省心。
← 返回首页