3. 部署前准备
这一章只做准备,不会修改学校数据。全部准备好以后,再进入正式部署流程。
账号清单
准备一个能够正常接收验证邮件的邮箱,并注册以下账号:
| 平台 | 官方地址 | 用途 |
|---|---|---|
| GitHub | github.com | 保存项目源码 |
| Vercel | vercel.com | 部署网页和 API |
| Neon | neon.tech | 创建 PostgreSQL 数据库 |
| 域名服务商 | 由你选择 | 购买并解析自定义域名 |
建议使用 GitHub 账号登录 Vercel,这样导入仓库时步骤更少。
浏览器与设备
建议使用最新版 Chrome 或 Edge,在电脑上完成部署。手机可以完成部分操作,但环境变量和 DNS 记录较长,复制时容易出错。
准备两种网络用于最终验收:
- 学校实际使用的有线或无线网络;
- 手机移动数据。
两种网络都能访问,才说明域名在目标场景下具有基本可用性。
提前确定的信息
部署前记录以下内容:
- 学校完整名称;
- 学校所在省份;
- 需要创建的年级;
- 每个年级的班级数量或名称;
- 当前学期开始和结束日期;
- 用于管理后台的初始密码;
- 首次初始化后用于保存自动生成恢复密钥的密码管理器或受控离线介质;
- 准备绑定的域名,例如
exam.example.com。
生成管理员初始密码
ADMIN_PASSWORD 至少 8 位,建议使用 12 位以上、没有出现在其他网站中的随机密码。不要使用学校名称、手机号、生日或 12345678。
可使用密码管理器生成,例如:
长度:16 至 24 位
包含:大写字母、小写字母、数字、符号
用途:仅 Novora 初始管理员不要把真实密码写进教程截图、群聊、GitHub README 或 .env.example。
准备保存超级管理员恢复密钥
V2.5.5 不再要求部署者提前填写 ADMIN_RECOVERY_KEY。项目会在超级管理员完成首次初始化时自动生成高强度恢复密钥,并且只显示一次。
请提前准备可信密码管理器或学校受控的离线介质。恢复密钥只用于所有超级管理员都忘记密码时的应急恢复,不能用于日常登录,也不要分发给年级或班级管理员。
域名准备
推荐使用子域名,例如:
exam.example.com使用子域名不会影响根域名上的其他网站,也更容易使用 CNAME 记录连接 Vercel。确认你有该域名的 DNS 管理权限。
域名和备案
域名指向 Vercel 境外服务时,通常不因为“购买了国内域名”就自动获得大陆加速。将来若迁移到中国大陆服务器或大陆 CDN,应按照服务商要求完成实名认证、ICP 备案及其他合规流程。
安全准备
部署与初始化过程中会出现四项敏感信息:
- Neon 的
DATABASE_URL; - Novora 的
ADMIN_PASSWORD; - Vercel 的
VERCEL_DEPLOY_HOOK_URL; - 初始化后自动生成的超级管理员恢复密钥。
前三项按教程保存到 Vercel 项目环境变量;自动生成的恢复密钥保存到受控密码管理器或离线介质。四项都不要放入 GitHub 仓库或公开问题反馈。
时间预估
| 工作 | 常见耗时 |
|---|---|
| 注册三个平台账号 | 10 至 20 分钟 |
| 导入源码并创建数据库 | 10 至 20 分钟 |
| 首次 Vercel 构建 | 2 至 5 分钟 |
| DNS 和 HTTPS 生效 | 数分钟至 48 小时 |
| 学校结构初始化和验收 | 15 至 40 分钟 |
DNS 生效时间不可完全控制,建议不要在正式使用当天才开始部署。
准备完成检查
- [ ] GitHub、Vercel、Neon 均可登录
- [ ] Vercel 已授权读取 GitHub 仓库
- [ ] 已准备自定义域名并能管理 DNS
- [ ] 已生成独立的管理员初始密码
- [ ] 已准备安全位置,用于保存初始化后只显示一次的恢复密钥
- [ ] 已整理学校、年级、班级和学期信息
- [ ] 已准备电脑和目标学校网络