开发在测试环境跑得好好的,一到线上就白屏、图片不显示、表单提交失败。这类问题的根源多半是:部署这件事没有清单,全靠记忆。
把上线拆成可检查的步骤,是避免事故最简单有效的办法。
环境准备
上线前确认服务器这几项都就位:
- 运行环境版本:语言版本、数据库版本要和开发环境一致,版本不一致是经典故障源
- 域名备案已完成:用国内服务器必须备案,流程通常一到两周,别卡在最后一步
- 解析已生效:提前把解析做好并留足生效时间,别在上线当天改
- 目录权限正确:上传目录可写,代码目录不可写
- 防火墙与安全组:只开放必要的端口
配置与密钥
配置文件是最容易出错的地方,几个原则:
- 数据库账号、接口密钥不要写进代码仓库,用环境变量或独立配置文件
- 区分环境配置:开发、测试、生产各自一套,别互相串
- 关闭调试模式:生产环境必须关,否则报错页面会暴露数据库结构和路径
- 开启缓存与压缩:页面缓存、静态资源压缩、浏览器缓存都要配
- 配置 HTTPS 并强制跳转,证书设置自动续期
发布动作本身
发布时按顺序做,减少中断时间:
- 先备份:代码和数据库各留一份,出问题能立刻回滚
- 选在低峰时段:深夜或清晨,影响最小
- 静态资源先上传:图片、样式、脚本先就位,再切换程序代码
- 数据库变更单独执行:改表结构前先确认影响,别和代码同时上
- 保留回滚方案:旧版本目录留着,五分钟内能切回去
数据库变更尤其要小心,加字段可以,删字段和改类型一定要先备份,并且先在测试库验证。
上线后的检查清单
发布完别急着下班,逐项确认:
- 首页和几个核心页面能正常打开,无报错
- 手机端和电脑端各看一遍
- 表单实际提交一次,确认收到通知且后台能看到
- 图片、下载文件、视频都能正常加载
- HTTPS 正常,地址栏没有不安全提示
- 后台能登录,关键功能可操作
- 404 页面和 500 页面有友好提示
- robots 文件没有误屏蔽整站
- 站点地图已生成并提交
- 统计代码已安装且能收到数据
交接要拿到手的东西
如果是外包项目,上线同时完成交接:
- 源码与数据库:完整可运行的版本
- 域名、主机、CDN 的管理账号:必须在自己名下
- 部署文档:环境要求、部署步骤、常见问题
- 后台使用说明:给日常操作人员看的版本
- 第三方服务账号:短信、邮件推送、地图、支付等
上线不是终点,而是网站真正开始工作的第一天。发布清单越细,第一天出事的概率越低。
—— 一位半夜处理过太多线上事故的运维