4.8 KiB
4.8 KiB
08. RailwaySystem 部署与发布指南
文档定位:面向运维工程师、发布主管及系统管理员的生产与测试环境部署、数据库迁移及服务维护手册。 当前基线:Final Candidate
5a49b2e2988bf23ca2a70568264c05b24dfda1b6(origin/feat/cicd-pipeline)
1. 目标运行环境标准
系统在多环境部署中遵循标准化的网络拓扑与端口规划:
flowchart LR
subgraph Clients["客户端层"]
Web["PC 浏览器 (Admin/教师/学员)"]
BoardDev["物联网终端 (电子班牌)"]
end
subgraph ReverseProxy["反向代理与静态托管 (端口 8082)"]
Nginx["Nginx Web 服务<br/>静态托管 build_ui / SSL 443 / 8082"]
end
subgraph AppCluster["业务应用服务 (端口 8092)"]
SpringBoot["Spring Boot 容器 (ruoyi-admin)<br/>JVM 4GB+ / 端口 8092"]
end
subgraph DataTier["国产数据库与缓存层"]
KB[("人大金仓 KingbaseES V9<br/>端口 54321 / 4321")]
Redis[("Redis 缓存服务<br/>端口 6379")]
end
Web -->|HTTP / HTTPS| Nginx
BoardDev -->|HTTP API| Nginx
Nginx -->|反向代理 /prod-api| SpringBoot
SpringBoot -->|JDBC 8.6.0| KB
SpringBoot -->|Jedis / Lettuce| Redis
| 组件名称 | 本地开发环境端口 | 集成与验收测试环境端口 | 生产环境建议规范 |
|---|---|---|---|
| 后端 API 服务 (Spring Boot) | 8090 |
8092 |
8090~8099 负载均衡集群,JVM 内存建议分配 4GB+ |
| 前端交互应用 (Vue/Nginx) | 8080 |
8082 |
Nginx 反向代理(443/80),开启 Gzip 压缩与静态缓存 |
| KingbaseES 国产主库 | 127.0.0.1:4321 (SSH隧道) |
直连实例 54321 / 4321 |
国产人大金仓数据库实例,标准单主库配置 |
| Redis 缓存服务 | 6379 (无密码) |
6379 (带密码预检) |
标准 Redis 缓存服务,用于 Token 校验与验证码防重放 |
2. 发布增量迁移规范 (Release DB Delta)
在系统从初始 V2 物理结构演进到当前 Final Candidate 的过程中,形成了正式的发布增量迁移序列:
正式发布增量版本:
CURRENT_RELEASE_DB_DELTA = 3
2.1 正式 Delta 脚本清单
- Delta 001 ——
RuoYi-Vue/sql/system/kingbase/001_sys_oper_log_cost_time.sql- 作用:补齐 Kingbase 系统操作日志表中的消耗时间(
cost_time)统计字段,保障运维监控正常运行。
- 作用:补齐 Kingbase 系统操作日志表中的消耗时间(
- Delta 002 ——
RuoYi-Vue/sql/system/kingbase/002_legacy_analytics_permissions.sql- 作用:将旧分析模块菜单权限与 V2 契约精准对齐,建立只读报表查询与导出安全屏障。
- Delta 003 ——
RuoYi-Vue/sql/system/kingbase/003_report_attendance_action_permissions.sql- 作用:向
public.sys_menu表声明开班现场报到确认(train:report:confirm)、课次考勤打卡(train:attendance:checkin)与考勤人工修正(train:attendance:edit)三项按钮级原子权限。
- 作用:向
2.2 字典初始化红线警示
- ⚠️
007_dicts.sql明确执行禁令:DO NOT EXECUTE:该脚本包含了大量未经环境幂等校验的历史字典初始数据,若盲目物理执行会污染生产sys_dict_data主键并引发唯一性冲突。在当前发布版本中严格禁止在生产库物理执行!
3. 标准发布与升级步骤
生产升级必须遵循受控操作规程:
# 步骤 1:拉取受控发布分支最新代码
git checkout feat/cicd-pipeline
git pull origin feat/cicd-pipeline
# 步骤 2:驱动依赖与环境预检
bash scripts/bootstrap/check-kingbase-jdbc.sh
# 步骤 3:数据库增量应用 (仅执行当前 Delta 001/002/003)
ksql -U SYSTEM -d training -f RuoYi-Vue/sql/system/kingbase/001_sys_oper_log_cost_time.sql
ksql -U SYSTEM -d training -f RuoYi-Vue/sql/system/kingbase/002_legacy_analytics_permissions.sql
ksql -U SYSTEM -d training -f RuoYi-Vue/sql/system/kingbase/003_report_attendance_action_permissions.sql
# 步骤 4:后端服务编译打包与启动 (8092 目标端口)
mvn clean package -DskipTests
java -Xms2048m -Xmx4096m -jar RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar --server.port=8092 &
# 步骤 5:前端静态资源编译并由 Nginx 承载 (8082 目标端口)
cd build_ui
npm run build:prod
# 部署至 Nginx html 目录,加载 deploy/nginx.conf.example 配置
4. 技术参考链接 (Technical References)
- Kingbase JDBC 驱动依赖说明:deployment/kingbase-jdbc-provisioning.md
- 发版说明与变更记录:docs/reports/release-notes.md
- 部署验收与就绪报告:docs/reports/deployment-report.md
- 数据库物理模型清单:docs/database-v2/01_table_inventory.md