Skip to content

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 责任人
  • [ ] 已准备故障时的校内通知渠道

下一章:日常维护 →

Novora 部署与维护文档