11. 正式上线
正式上线不是再次点击 Deploy,而是确认访问入口、安全、数据责任和故障处理方式都已经确定。
设置唯一正式域名
在 Vercel Settings → Domains 中,把学校对外使用的域名设为 Primary Domain。其他已添加域名应跳转到主域名,避免用户收藏多个入口。
建议统一发布:
text
https://exam.example.com不要把 Vercel Preview 地址或带随机后缀的 Deployment URL 发给普通用户。
大陆网络上线条件
至少完成以下测试:
- [ ] 学校教师网络可访问
- [ ] 教室大屏所在网络可访问
- [ ] 至少两种移动网络完成抽样
- [ ] 上课高峰时段 API 延迟可接受
- [ ] 连续刷新和登录没有大量超时
如果默认 Vercel 域名不可用、自定义域名仍在部分线路失败,说明问题不只是域名。此时应评估其他托管架构,而不是不断更换 DNS 记录。
需要中国大陆稳定托管时,通常要考虑中国大陆云服务器、ICP 备案、公安备案适用性、合规 CDN 和数据管理要求。具体要求以学校、云服务商和当地法规为准。
管理员安全
- 超级管理员只保留给系统负责人;
- 教师使用年级或班级范围账号;
- 每个人使用独立账号,不共享密码;
- 定期停用离职、调岗或不再需要的账号;
- 定期检查审计日志;
- 不在教室大屏保存管理员密码;
- Deploy Hook、GitHub Token 和数据库连接串按密钥管理。
数据与隐私
上线前告知管理人员:
- 学校结构、考试、周测、用户、设备绑定保存在 Neon;
- 当前设备偏好和离线数据还会保存在浏览器本地;
- 遥测启用后会上报版本、运行环境、匿名实例标识、省份和完整校名;
- 遥测不应包含考试正文、管理员密码和登录会话;
- 是否启用遥测应依据学校内部要求决定。
创建首份备份
在录入正式考试数据前建立一次基线备份。可使用 Neon 提供的分支、恢复或备份能力;也可使用 PostgreSQL 官方工具:
bash
pg_dump --dbname="生产连接串" --format=custom --no-owner --no-privileges --file=novora.dump备份文件和连接串包含敏感数据,应加密保存并限制访问。必须定期做恢复演练,只有无法验证恢复的文件不能算可靠备份。
固定责任人
至少明确:
| 事项 | 责任人应掌握的权限 |
|---|---|
| GitHub 源码更新 | GitHub 仓库维护权限 |
| Vercel 部署和域名 | Vercel 项目管理权限 |
| Neon 数据库和恢复 | Neon 项目管理权限 |
| DNS 修改 | 域名解析权限 |
| Novora 用户管理 | 超级管理员账号 |
不要让所有关键账号都只绑定一个无法交接的个人邮箱。
上线公告应包含什么
给校内用户的通知只需包含:
- 正式访问地址;
- 适用范围;
- 管理员联系渠道;
- 计划维护时间;
- 数据录入职责。
不要公开数据库连接串、环境变量截图、Deploy Hook 或超级管理员密码。
最终上线清单
- [ ] 已完成第 10 章全部核心验收
- [ ] 主域名与 HTTPS 正常
- [ ] 已删除验收测试数据和测试账号
- [ ] 超级管理员已更换初始密码
- [ ] 已创建最小权限的日常管理账号
- [ ] 已确认遥测选择
- [ ] 已完成首次备份
- [ ] 已记录 GitHub、Vercel、Neon 和 DNS 责任人
- [ ] 已准备故障时的校内通知渠道