QDAirPortBackend0122/deploy/DeployGuide.md
2026-01-22 13:19:47 +08:00

7.3 KiB
Raw Blame History

QAUP 系统部署和更新说明

一、打包环境操作

1. 生成程序更新文件

修改代码后生成仅包含应用jar的更新包

./deploy/package-update.sh

输出

  • qaup-admin.jar - 应用程序
  • UPDATE-INSTRUCTIONS.md - 更新说明
  • VERSION-INFO.txt - 版本信息

注意如需单独jar文件可直接从更新包中提取。

2. 生成完整部署包

生成包含所有组件的完整部署包(首次部署或重大更新):

./deploy/package-all.sh

二、生产环境操作

1. 首次部署

步骤

  1. 解压部署包

    mkdir qaup-deploy
    
    tar -xzf qaup-deploy-xxx.tar.gz -C qaup-deploy
    cd qaup-deploy
    
    
  2. 执行部署

    ./deploy-all.sh
    
  3. 验证部署

    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

Q: 端口冲突?

A: 检查端口占用:

   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 - 新功能

迁移类型

  1. 结构迁移 - 修改表结构、索引等
  2. 数据迁移 - 数据清洗、转换等
  3. 函数/存储过程迁移 - 业务逻辑更新

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()
  • 优先使用增量迁移脚本
  • 重大变更需要测试环境验证

回滚策略

  1. 自动化回滚 - 备份恢复
  2. 脚本化回滚 - 创建回滚脚本
  3. 版本控制 - 通过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 - 合并迁移脚本(历史用途)