Skip to content

不可变发布与回退

直接在网站当前目录覆盖文件很方便,却可能让访问者在上传过程中同时拿到新旧资源。不可变发布用一个新目录接收完整产物,验证后再一次性切换入口。

基本结构

text
releases/
  20260722T120000Z-ab12cd34/
  20260718T093000Z-ef56ab78/
current -> releases/20260722T120000Z-ab12cd34
previous -> releases/20260718T093000Z-ef56ab78

每个版本一旦上传完成就不再修改。current 只是指向当前版本的软链接,切换动作很快,也容易审计。

健康检查决定结果

切换之后立刻通过本机 Host 头访问 Nginx,检查状态码和页面标识。如果失败,current 恢复到 previous,重新加载配置并再次检查。回退不是临时想办法,而是发布脚本中的正常分支。

个人项目也值得做

个人服务器没有专职值班人员,更需要降低夜间手工修复的概率。两到三个历史版本通常已经足够,不必照搬大型平台的复杂发布系统。