Appearance
部署与上线
上线流程围绕「后端服务 → 后台管理前端 → 移动端包体 → 文档与发布页」展开。以下步骤可根据实际环境(测试、预发、生产)调整。
后端服务
打包构建
bashpnpm install pnpm build构建会将 Nest 编译输出至
dist/,并使用@vercel/ncc生成单文件产物ncc-dist/index.js,便于部署。环境变量
- 保持
.env与服务器环境一致,尤其是数据库、Redis、JWT 密钥。 - 生产环境建议关闭
synchronize,仅通过迁移或 SQL 升级。
- 保持
部署方式
- Docker:基于 Node 18/20 镜像执行
node dist/main.js。 - PM2/Systemd:将仓库拉取到服务器后运行
pm2 start ecosystem.config.js(如需自建配置)。
- Docker:基于 Node 18/20 镜像执行
迁移与初始化
- 首次部署执行
pnpm migration:run或手动导入init.sql。 - Redis 无需额外迁移,确保开启持久化即可。
- 首次部署执行
可观测性
- 访问日志由
LoggerMiddleware输出,可接入 Filebeat/Datadog。 - 建议配置健康检查
/auth/refresh/token或/api/mobile/v1/home/type_List。
- 访问日志由
后台管理前端
构建
bashpnpm install pnpm build产物默认输出到
dist/,可直接托管到 Nginx/OSS/CDN。环境变量
- 构建前通过
.env.production指定后端网关,如VITE_API_BASE=https://api.movie.example. - 若使用多环境,统一维护
.env.staging、.env.production。
- 构建前通过
静态托管
- Nginx 示例:nginx
server { listen 80; server_name admin.movie.example; root /var/www/movieapp-admin/dist; try_files $uri $uri/ /index.html; }
- Nginx 示例:
登录验证
- 发布后需确认
auth/captcha可渲染、auth/login正常返回 token。 - 首次上线请手动创建管理员账号或导入初始化数据。
- 发布后需确认
移动端 App
- 版本号:按需求提升
app/build.gradle.kts中的versionCode与versionName。 - 构建渠道包:
- Debug 包:Android Studio 直接
Build > Build Bundle(s)/APK(s) > Build APK(s)。 - Release 包:配置签名信息后执行
./gradlew assembleRelease。
- Debug 包:Android Studio 直接
- 配置对齐:确认 API Base URL 与后端一致,若启用走 CDN 或代理,需要在网络层统一维护。
- 校验数据:上线前至少访问首页、筛选、搜索、播放接口,确保对应 API 文档未遗漏字段。
文档与发布页
构建文档
bashpnpm run docs:build生成的静态资源位于
docs/.vitepress/dist。同步发布页
release/目录存放对外页面,可独立部署或通过 Nginx 子路径托管。- 在发布流程中更新最新版本信息、变更摘要和下载链接。
对外发布
- 若统一部署,可将
dist/和release/一并放入静态站点,分别映射到/docs与/release。 - 对接 CI/CD 时,建议在流水线中加入文档构建步骤,避免遗忘。
- 若统一部署,可将
回顾与验收
- 发布完成后,更新
release/页面中的版本表格或里程碑。 - 记录与接口相关的变动:若 API 调整,需同步通知移动端与后台前端团队。
- 建议在迭代结束召开一次文档回顾会,确保信息与代码保持一致。