7.2 KiB
7.2 KiB
QAUP 系统部署和更新说明
一、打包环境操作
1. 生成程序更新文件
修改代码后,生成仅包含应用jar的更新包:
./deploy/package-update.sh
输出:
qaup-admin.jar- 应用程序UPDATE-INSTRUCTIONS.md- 更新说明VERSION-INFO.txt- 版本信息
注意:如需单独jar文件,可直接从更新包中提取。
2. 生成完整部署包
生成包含所有组件的完整部署包(首次部署或重大更新):
./deploy/package-all.sh
二、生产环境操作
1. 首次部署
步骤
- 解压部署包:
mkdir qaup-deploy
tar -xzf qaup-deploy-xxx.tar.gz -C qaup-deploy cd qaup-deploy
2. **执行部署**:
```bash
./deploy-all.sh
- 验证部署:
docker compose ps # 检查服务状态 curl http://localhost:8080/actuator/health # 验证应用健康
2. 程序更新(仅更新jar文件)
前置准备
cd qaup-deploy
# 1. 确认当前系统状态
docker compose ps
# 2. 备份重要数据(推荐)
docker exec qaup-postgres pg_dump -U qaup qaup > backup-$(date +%Y%m%d).sql
cp config.yml config.yml.backup
更新步骤
# 1. 准备新版本文件(二选一)
# 方案A:使用完整更新包
cp /path/to/qaup-update-xxx/qaup-admin.jar new-app.jar
# 方案B:直接使用jar文件
cp /path/to/qaup-admin-xxx.jar new-app.jar
# 2. 执行更新
./deploy-update.sh
# 3. 验证更新
docker compose ps # 检查服务状态
docker compose logs -f qaup-app # 查看应用日志
curl http://localhost:8080/actuator/health # 验证应用健康
3. 配置文件更新
如果需要更新配置文件:
cd qaup-deploy
# 1. 备份当前配置
cp config.yml config.yml.backup
# 2. 编辑配置文件
vi config.yml
# 3. 重启应用
docker compose restart qaup-app
4. 更新失败处理
自动回滚
更新失败时脚本会自动尝试回滚。
手动回滚
cd qaup-deploy
# 1. 停止应用
docker compose stop qaup-app
# 2. 恢复备份文件
cp app.jar.backup.* app.jar
# 3. 启动应用
docker compose start qaup-app
问题排查
# 查看应用日志
docker compose logs qaup-app
# 查看所有服务状态
docker compose ps -a
5. 完全重新部署
如果需要重新部署整个系统(包括更新镜像、配置):
方案A:不保留数据
cd qaup-deploy
# 1. 清理旧环境
docker compose down
rm -rf data/ # 注意:会删除所有数据
# 2. 重新部署
./deploy-all.sh
方案B:保留数据
# 1. 备份旧数据
cd qaup-deploy
docker exec qaup-postgres pg_dump -U qaup qaup > ../data-backup.sql
# 2. 清理旧环境
docker compose down
# 3. 部署新系统
mkdir qaup-deploy-new
tar -xzf qaup-deploy-new-xxx.tar.gz -C qaup-deploy-new
cd qaup-deploy-new
./deploy-all.sh
# 4. 恢复数据
docker exec -i qaup-postgres psql -U qaup qaup < ../data-backup.sql
三、常见问题
Q: 更新后无法访问系统?
A: 检查端口和应用日志:
docker compose logs qaup-app
netstat -tlnp | grep 8080
Q: 数据库连接失败?
A: 检查数据库服务状态:
docker compose logs qaup-postgres
docker exec qaup-postgres pg_isready -U qaup
四、更新记录
建议记录每次更新信息:
时间 | 版本号 | 人员 | 类型 | 结果 | 问题
2025-01-05 | v1.0.1→v1.0.2 | 张三 | 程序更新 | 成功 | -
2025-01-10 | v1.0.2→v1.0.3 | 李四 | 程序更新 | 失败 | 配置错误,已回滚
五、数据库部署和更新策略
1. 数据库版本管理
系统使用Flyway进行数据库版本管理,所有迁移脚本位于qaup-admin/src/main/resources/db/migration/目录下。
迁移脚本列表:
V1.0.0__Initial_baseline.sql- 基线结构(86KB)V1.0.1__Initial_data.sql- 初始数据(50KB)README.md- 迁移脚本说明
Flyway配置(在docker-compose.yml中)
SPRING_FLYWAY_ENABLED: true # 启用Flyway
SPRING_FLYWAY_BASELINE_ON_MIGRATE: true # 基线迁移(支持已有数据库)
SPRING_FLYWAY_VALIDATE_ON_MIGRATE: true # 验证迁移
SPRING_FLYWAY_CLEAN_DISABLED: true # 禁止清理生产数据库
SPRING_FLYWAY_LOCATIONS: classpath:db/migration # 迁移脚本路径
2. 数据库部署流程
首次部署(全新环境)
# 1. 启动基础服务(PostgreSQL + Redis)
docker compose up -d qaup-postgres qaup-redis
# 2. 等待数据库就绪
sleep 30
# 3. 初始化数据库(执行Flyway迁移)
# 应用启动时会自动执行Flyway迁移
docker compose up -d qaup-app
# 4. 验证部署
docker compose ps
curl http://localhost:8080/actuator/health
已有环境更新
# Flyway自动处理数据库迁移
# 应用启动时会自动检测并执行需要的迁移
docker compose restart qaup-app
# 检查迁移状态
docker exec qaup-postgres psql -U qaup -d qaup -c "SELECT * FROM flyway_schema_history ORDER BY installed_rank;"
3. 数据库迁移脚本管理
脚本命名规范
V{版本号}__{描述}.sql- 版本化迁移脚本V1.0.0__Initial_baseline.sql- 基线结构V1.0.1__Initial_data.sql- 初始数据V1.0.2__Add_new_feature.sql- 新功能
迁移类型
- 结构迁移 - 修改表结构、索引等
- 数据迁移 - 数据清洗、转换等
- 函数/存储过程迁移 - 业务逻辑更新
4. 数据库维护操作
数据备份和恢复(仅限紧急情况)
# 备份数据
docker exec qaup-postgres pg_dump -U qaup qaup > backup-$(date +%Y%m%d_%H%M%S).sql
# 恢复数据(生产环境需要谨慎)
cat backup-20250115_143000.sql | docker exec -i qaup-postgres psql -U qaup -d qaup
数据库状态监控
# 查看Flyway迁移状态(应用启动日志)
docker compose logs qaup-app | grep -i flyway
# 直接查询迁移历史
docker exec qaup-postgres psql -U qaup -d qaup -c "
SELECT version, description, installed_on
FROM flyway_schema_history
ORDER BY installed_rank;"
# 检查应用健康状态
curl http://localhost:8080/actuator/health
5. 数据库更新最佳实践
开发环境
- 可以使用
flyway.clean()清理数据库 - 可以使用
flyway.migrate().clean()重建
生产环境
- 禁止使用
flyway.clean() - 优先使用增量迁移脚本
- 重大变更需要测试环境验证
回滚策略
- 自动化回滚 - 备份恢复
- 脚本化回滚 - 创建回滚脚本
- 版本控制 - 通过Flyway版本管理
六、文件说明
打包环境脚本
deploy/package-update.sh- 生成程序更新包deploy/package-all.sh- 生成完整部署包
生产环境脚本
deploy-all.sh- 首次部署/完全重新部署deploy-update.sh- 程序更新脚本(自动处理数据库迁移)DeployGuide.md- 本说明文档
数据库脚本目录
src/main/resources/db/migration/- Flyway迁移脚本sql/qaup_database_complete_init.sql- 完整初始化脚本(参考用途)sql/unified_database_migration.sql- 合并迁移脚本(历史用途)