开发日志
开发日志 003:让部署更新不再覆盖线上内容
将应用代码和真实内容彻底分离,形成可发布、可备份、可恢复的部署方案。
发现的风险
Markdown 文件进入仓库后,新的问题变得明显:如果线上应用目录直接由 Git 更新,部署、回滚或重新拉取代码都可能影响后台刚刚保存的真实文章与图片。对个人博客而言,这种风险比一次功能缺失更不可接受。
方案设计
本阶段确定“代码可替换、内容必须持久化”的边界。应用目录只保存可发布的程序代码;生产环境中的设置、项目、文章和上传图片放在应用目录之外。程序通过 CONTENT_DIR 环境变量定位真实内容根目录,图片目录通过软链接或等效映射对外提供访问。
仓库中保留 content.example 作为新环境初始化模板,但不再将线上真实内容作为代码发布物管理。内容目录中还增加内部状态与备份位置,用于保存内容版本信息、会话状态和历史副本。
迁移与恢复
为了让改造可以落地,项目补充了持久化部署说明:迁移前先备份旧 JSON、原内容、上传图片和环境变量;再创建外部内容目录、设置 CONTENT_DIR、迁移内容并验证页面读取。恢复时优先从备份还原内容与上传目录,而不是依赖 Git 历史寻找真实文章。
文档还明确了一个操作原则:不要用针对代码的清理或恢复命令处理用户内容。代码可以回滚,内容需要单独备份、单独恢复。
阶段结果
经过这次调整,发布应用版本与维护博客内容成为两条相互独立的链路。部署不再天然意味着内容风险,后续的安全和后台体验优化也有了稳定的存储基础。