From 3ccb2b70ba29420cf8608d60d3cb22f5874931c0 Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Thu, 20 Nov 2025 15:35:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E7=BD=B2=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adxp-adapter/README.md | 19 +- adxp-adapter/start.sh | 51 --- deploy/BUILD-GUIDE.md | 118 ------ deploy/DeployGuide.md | 340 +++++++----------- deploy/build-and-upload.sh | 65 ---- deploy/create-init-sql.sh | 71 ---- deploy/database-init.sh | 67 ++++ deploy/{deploy.sh => deploy-all.sh} | 2 +- deploy/{update.sh => deploy-update.sh} | 0 deploy/{package-server.sh => package-all.sh} | 21 +- deploy/{build-update.sh => package-update.sh} | 2 +- 11 files changed, 208 insertions(+), 548 deletions(-) delete mode 100755 adxp-adapter/start.sh delete mode 100644 deploy/BUILD-GUIDE.md delete mode 100755 deploy/build-and-upload.sh delete mode 100755 deploy/create-init-sql.sh create mode 100755 deploy/database-init.sh rename deploy/{deploy.sh => deploy-all.sh} (95%) rename deploy/{update.sh => deploy-update.sh} (100%) rename deploy/{package-server.sh => package-all.sh} (74%) rename deploy/{build-update.sh => package-update.sh} (99%) diff --git a/adxp-adapter/README.md b/adxp-adapter/README.md index 404c9c96..eca9101b 100644 --- a/adxp-adapter/README.md +++ b/adxp-adapter/README.md @@ -28,18 +28,6 @@ docker compose logs -f docker compose down ``` -### 方式2:本地运行(需要 JDK 8) - -```bash -# 1. 编译 -mvn clean package - -# 2. 运行 -java -jar target/adxp-adapter.jar \ - --adxp.host=localhost \ - --adxp.port=7001 -``` - ## API 文档 ### 1. 登录 @@ -135,7 +123,6 @@ curl "http://localhost:8086/api/adxp/messages?sessionId=YOUR_SESSION_ID" | `ADXP_PORT` | ADXP 数据中台端口 | 7001 | | `ADXP_USERNAME` | ADXP 用户名 | dianxin | | `ADXP_PASSWORD` | ADXP 密码 | dianxin@123 | -| `SPRING_PROFILES_ACTIVE` | Spring Profile | prod | ### application.yml @@ -152,11 +139,7 @@ adxp: ### 开发环境 ```bash -# 1. 启动 mock ADXP 服务器 -cd /path/to/QAUP-Management/tools -python3 mock_adxp.py --auto --interval 10 - -# 2. 启动适配器(默认指向 localhost) +# 1. 启动适配器(默认指向 localhost) docker compose up -d ``` diff --git a/adxp-adapter/start.sh b/adxp-adapter/start.sh deleted file mode 100755 index 7c3ef899..00000000 --- a/adxp-adapter/start.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -# ADXP Adapter 启动脚本 - -# 项目路径 -PROJECT_DIR="$(pwd)" -JAR_FILE="$PROJECT_DIR/target/adxp-adapter.jar" - -# 检查项目目录是否存在 -if [ ! -d "$PROJECT_DIR" ]; then - echo "❌ 项目目录不存在: $PROJECT_DIR" - exit 1 -fi - -# 进入项目目录 -cd "$PROJECT_DIR" - -# 检查JAR文件是否存在,如果不存在则编译 -if [ ! -f "$JAR_FILE" ]; then - echo "🔨 正在编译adxp-adapter项目..." - mvn clean package - if [ $? -ne 0 ]; then - echo "❌ 编译失败" - exit 1 - fi -fi - -# 检查JAR文件是否存在 -if [ ! -f "$JAR_FILE" ]; then - echo "❌ JAR文件不存在: $JAR_FILE" - exit 1 -fi - -echo "🚀 正在启动ADXP Adapter服务..." -echo "📄 JAR文件: $JAR_FILE" - -# 启动服务 -java -jar "$JAR_FILE" & - -# 等待几秒钟让服务启动 -sleep 5 - -# 检查服务是否启动成功 -if pgrep -f "adxp-adapter" > /dev/null; then - echo "✅ ADXP Adapter服务启动成功" - echo "🌐 WebSocket端点: ws://localhost:8086/ws/flight-notifications" - echo "📊 健康检查: http://localhost:8086/actuator/health" -else - echo "❌ ADXP Adapter服务启动失败" - exit 1 -fi \ No newline at end of file diff --git a/deploy/BUILD-GUIDE.md b/deploy/BUILD-GUIDE.md deleted file mode 100644 index 7223d5de..00000000 --- a/deploy/BUILD-GUIDE.md +++ /dev/null @@ -1,118 +0,0 @@ -# QAUP 构建打包指南 - -## 方案:macOS构建 + Ubuntu打包 - -### 开发环境操作(macOS) - -#### 1. 构建jar文件 -```bash -# 在项目根目录 -mvn clean package -DskipTests -``` - -#### 2. 上传jar文件到打包服务器 -```bash -# 方式一:使用scp -scp qaup-admin/target/qaup-admin.jar code@your-server:/home/code/apps/QAUP_Management/qaup-admin/target/ - -# 方式二:使用自动化脚本(需要先配置服务器信息) -./deploy/simple/build-and-upload.sh -``` - -### 打包服务器操作(Ubuntu) - -#### 1. 确认jar文件已上传 -```bash -ls -la qaup-admin/target/qaup-admin.jar -``` - -#### 2. 执行打包 -```bash -./deploy/simple/package-server.sh -``` - -#### 3. 下载部署包 -```bash -# 生成的文件类似:qaup-deploy-20250105-143022.tar.gz -ls -la qaup-deploy-*.tar.gz -``` - -## 日常更新流程 - -### 程序更新(推荐) -```bash -# macOS开发环境 -mvn clean package -DskipTests -scp qaup-admin/target/qaup-admin.jar production-server:/path/to/qaup-deploy/new-app.jar - -# 生产服务器 -cd qaup-deploy -./update.sh -``` - -**注意:** 从v1.0.1版本开始,系统集成了Flyway数据库迁移功能: -- 应用启动时会自动执行数据库迁移 -- 新版本的数据库结构变更会自动应用 -- 无需手动执行SQL脚本 -- 迁移失败时应用会启动失败,确保数据一致性 - -### 完整重新部署 -```bash -# macOS → 打包服务器 → 生产服务器 -# 按照上述完整流程操作 -``` - -## 服务器配置要求 - -### 打包服务器(Ubuntu) -- ✅ Docker已安装 -- ✅ 网络连接正常(拉取镜像) -- ✅ 足够磁盘空间(约2GB) - -### 生产服务器(Ubuntu) -- ✅ Docker已安装 -- ✅ 解压工具(unzip) - -## 故障排除 - -### Q: Docker拉取镜像很慢 -A: 使用国内镜像加速器,脚本已配置daocloud加速器 - -### Q: jar文件上传失败 -A: 检查网络连接和服务器路径是否正确 - -### Q: 打包过程中断 -A: 重新运行package-server.sh脚本,会自动清理并重新开始 - -### Q: 数据库迁移失败 -A: 检查应用日志中的Flyway错误信息: -```bash -docker compose logs qaup-app | grep -i flyway -``` -常见问题: -- 数据库连接失败:检查数据库服务是否正常 -- 迁移脚本错误:检查SQL语法和数据库权限 -- 版本冲突:可能需要手动修复迁移历史表 - -### Q: 应用启动失败(Flyway相关) -A: 查看详细错误信息: -```bash -# 查看应用日志 -docker compose logs qaup-app - -# 检查数据库迁移状态 -docker exec -it qaup-postgres psql -U qaup qaup -c "SELECT * FROM flyway_schema_history ORDER BY installed_rank;" -``` - -## 脚本说明 - -### 开发环境脚本: -- `build-and-upload.sh` - 自动构建和上传(需配置服务器信息) -- 手动操作:`mvn package` + `scp` - -### 打包服务器脚本: -- `package-server.sh` - 使用已有jar文件进行打包 - -### 生产服务器脚本: -- `deploy.sh` - 首次部署 -- `update.sh` - 程序更新 \ No newline at end of file diff --git a/deploy/DeployGuide.md b/deploy/DeployGuide.md index 8135c58a..b313e0ca 100644 --- a/deploy/DeployGuide.md +++ b/deploy/DeployGuide.md @@ -1,131 +1,117 @@ # QAUP 系统部署和更新说明 -## 开发环境操作 - -### 生成程序更新文件 - -当代码修改后,需要生成新的jar文件供客户更新: +## 一、打包环境操作 +### 1. 生成程序更新文件 +修改代码后,生成仅包含应用jar的更新包: ```bash -./deploy/simple/build-update.sh +./deploy/package-update.sh ``` -生成包含详细说明的更新包: +**输出**: - `qaup-admin.jar` - 应用程序 -- `UPDATE-INSTRUCTIONS.md` - 详细更新说明 +- `UPDATE-INSTRUCTIONS.md` - 更新说明 - `VERSION-INFO.txt` - 版本信息 -**注意**:如果只需要jar文件,可以从生成的更新包中提取 `qaup-admin.jar` 文件单独发送给客户。 +**注意**:如需单独jar文件,可直接从更新包中提取。 -### 生成完整部署包 +### 2. 生成完整部署包 +生成包含所有组件的完整部署包(首次部署或重大更新): ```bash -./deploy/simple/package.sh +./deploy/package-all.sh ``` -生成包含所有组件的完整部署包,用于首次部署或重大版本更新。 --- -## 客户环境操作 +## 二、生产环境操作 -### 首次部署 +### 1. 首次部署 -### 1. 解压部署包 -```bash -mkdir qaup-deploy -tar -xzf qaup-deploy-20250105-143022.tar.gz -C qaup-deploy -cd qaup-deploy -``` - -### 2. 执行部署 -```bash -./deploy.sh -``` - -### 3. 验证部署 -```bash -# 检查服务状态 -docker compose ps - -# 访问系统 -curl http://localhost:8080/actuator/health -``` - -## 程序更新(仅更新jar文件) - -### 更新前准备 - -1. **确认当前系统状态**: +#### 步骤 +1. **解压部署包**: ```bash - cd qaup-deploy - docker compose ps + mkdir qaup-deploy +tar -xzf qaup-deploy-xxx.tar.gz -C qaup-deploy +cd qaup-deploy ``` -2. **备份重要数据**(可选但推荐): +2. **执行部署**: ```bash - # 备份数据库 - docker exec qaup-postgres pg_dump -U qaup qaup > backup-$(date +%Y%m%d).sql - - # 备份配置文件 - cp config.yml config.yml.backup + ./deploy-all.sh ``` -### 更新步骤 +3. **验证部署**: + ```bash + docker compose ps # 检查服务状态 + curl http://localhost:8080/actuator/health # 验证应用健康 + ``` -### 1. 准备新版本文件 +### 2. 程序更新(仅更新jar文件) -#### 如果收到的是完整更新包(.tar.gz文件): -```bash -# 解压更新包 -tar -xzf qaup-update-20250105-143022.tar.gz -cd qaup-update-20250105-143022 - -# 查看更新说明 -cat UPDATE-INSTRUCTIONS.md - -# 复制jar文件到部署目录 -cd ../qaup-deploy -cp ../qaup-update-20250105-143022/qaup-admin.jar new-app.jar -``` - -#### 如果收到的是jar文件: +#### 前置准备 ```bash cd qaup-deploy -cp /path/to/qaup-admin-20250105-143022.jar new-app.jar -``` -### 2. 执行程序更新 -```bash -./update.sh -``` - -### 3. 验证更新结果 -```bash -# 检查服务状态 +# 1. 确认当前系统状态 docker compose ps -# 检查应用日志 -docker compose logs -f qaup-app - -# 访问系统确认功能正常 -curl http://localhost:8080/actuator/health +# 2. 备份重要数据(推荐) +docker exec qaup-postgres pg_dump -U qaup qaup > backup-$(date +%Y%m%d).sql +cp config.yml config.yml.backup ``` -## 更新失败处理 - -如果更新失败,脚本会自动尝试回滚。如果自动回滚也失败: - -### 手动回滚: +#### 更新步骤 ```bash -# 停止应用 -docker compose stop qaup-app +# 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. 配置文件更新 +如果需要更新配置文件: +```bash +cd qaup-deploy + +# 1. 备份当前配置 +cp config.yml config.yml.backup + +# 2. 编辑配置文件 +vi config.yml + +# 3. 重启应用 + docker compose restart qaup-app +``` + +### 4. 更新失败处理 + +#### 自动回滚 +更新失败时脚本会自动尝试回滚。 + +#### 手动回滚 +```bash +cd qaup-deploy + +# 1. 停止应用 + docker compose stop qaup-app + +# 2. 恢复备份文件 cp app.jar.backup.* app.jar -# 启动应用 -docker compose start qaup-app +# 3. 启动应用 + docker compose start qaup-app ``` -### 检查问题: +#### 问题排查 ```bash # 查看应用日志 docker compose logs qaup-app @@ -134,137 +120,71 @@ docker compose logs qaup-app docker compose ps -a ``` -## 配置文件更新 +### 5. 完全重新部署 +如果需要重新部署整个系统(包括更新镜像、配置): -如果新版本需要更新配置文件: - -1. **备份当前配置**: - ```bash - cp config.yml config.yml.backup - ``` - -2. **更新配置**: - ```bash - # 编辑配置文件 - vi config.yml - ``` - -3. **重启应用**: - ```bash - docker compose restart qaup-app - ``` - -## 常见问题 - -### Q: 更新后无法访问系统 -A: 检查端口是否被占用,查看应用日志: +#### 方案A:不保留数据 ```bash -docker compose logs qaup-app +cd qaup-deploy + +# 1. 清理旧环境 + docker compose down +rm -rf data/ # 注意:会删除所有数据 + +# 2. 重新部署 +./deploy-all.sh +``` + +#### 方案B:保留数据 +```bash +# 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: 检查端口和应用日志: +```bash + docker compose logs qaup-app netstat -tlnp | grep 8080 ``` -### Q: 数据库连接失败 +### Q: 数据库连接失败? A: 检查数据库服务状态: ```bash -docker compose logs qaup-postgres + docker compose logs qaup-postgres docker exec qaup-postgres pg_isready -U qaup ``` -### Q: 如何完全重新部署 -A: 如果更新出现严重问题,可以重新部署: -```bash -# 停止所有服务 -docker compose down - -# 清理数据(注意:这会删除所有数据) -rm -rf data/ - -# 重新部署 -./deploy.sh +## 四、更新记录 +建议记录每次更新信息: +``` +时间 | 版本号 | 人员 | 类型 | 结果 | 问题 +2025-01-05 | v1.0.1→v1.0.2 | 张三 | 程序更新 | 成功 | - +2025-01-10 | v1.0.2→v1.0.3 | 李四 | 程序更新 | 失败 | 配置错误,已回滚 ``` -## 完整系统重新部署 +## 五、文件说明 -如果需要重新部署整个系统(包括更新Docker镜像、配置等): +### 打包环境脚本 +- `deploy/package-update.sh` - 生成程序更新包 +- `deploy/package-all.sh` - 生成完整部署包 -### 1. 获取新的部署包 -```bash -# 解压新的部署包到新目录 -mkdir qaup-deploy-new -tar -xzf qaup-deploy-new-20250110-100000.tar.gz -C qaup-deploy-new -cd qaup-deploy-new -``` - -### 2. 迁移数据(如果需要保留数据) -```bash -# 从旧系统备份数据 -cd ../qaup-deploy -docker exec qaup-postgres pg_dump -U qaup qaup > ../data-backup.sql - -# 停止旧系统 -docker compose down - -# 在新系统中恢复数据 -cd ../qaup-deploy-new -./deploy.sh -docker exec -i qaup-postgres psql -U qaup qaup < ../data-backup.sql -``` - -## 操作流程总结 - -### 开发环境 → 客户环境流程 - -#### 程序更新流程: -``` -开发环境: -1. 代码修改完成 -2. ./deploy/simple/build-update.sh # 生成更新包 -3. 发送更新包或jar文件给客户 - -客户环境: -1. cd qaup-deploy -2. cp new-jar-file.jar new-app.jar # 重命名文件 -3. ./update.sh # 执行更新 -4. 验证更新结果 -``` - -#### 完整部署流程: -``` -开发环境: -1. ./deploy/simple/package.sh # 生成完整部署包 -2. 发送部署包给客户 - -客户环境: -1. mkdir qaup-deploy && tar -xzf qaup-deploy-xxx.tar.gz -C qaup-deploy # 解压部署包 -2. cd qaup-deploy -3. ./deploy.sh # 执行部署 -4. 验证部署结果 -``` - -## 更新记录 - -建议记录每次更新的信息: -- 更新时间 -- 版本号 -- 更新人员 -- 更新类型(程序更新/完整部署) -- 是否成功 -- 遇到的问题 - -示例: -``` -2025-01-05 14:30 - v1.0.1 → v1.0.2 - 张三 - 程序更新 - 成功 -2025-01-10 09:15 - v1.0.2 → v1.0.3 - 李四 - 程序更新 - 失败,已回滚 -2025-01-15 16:00 - v1.0.3 → v1.1.0 - 王五 - 完整部署 - 成功 -``` - -## 文件说明 - -### 开发环境脚本: -- `deploy/simple/build-update.sh` - 生成程序更新包 -- `deploy/simple/package.sh` - 生成完整部署包 - -### 客户环境脚本: -- `deploy.sh` - 首次部署脚本 -- `update.sh` - 程序更新脚本 +### 生产环境脚本 +- `deploy-all.sh` - 首次部署/完全重新部署 +- `deploy-update.sh` - 程序更新脚本 - `DeployGuide.md` - 本说明文档 \ No newline at end of file diff --git a/deploy/build-and-upload.sh b/deploy/build-and-upload.sh deleted file mode 100755 index f5f8816a..00000000 --- a/deploy/build-and-upload.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -# QAUP macOS构建和上传脚本 -# 在macOS开发环境运行,构建jar并上传到打包服务器 - -set -e - -# 配置打包服务器信息(请根据实际情况修改) -PACK_SERVER_HOST="10.0.0.58" -PACK_SERVER_USER="code" -PACK_SERVER_PATH="/home/code/apps/QAUP_Management" - -# 颜色输出 -GREEN='\033[0;32m' -BLUE='\033[0;34m' -RED='\033[0;31m' -NC='\033[0m' - -print_message() { - echo -e "${1}${2}${NC}" -} - -print_message $BLUE "=== QAUP macOS构建和上传脚本 ===" - -# 1. 构建应用 -print_message $BLUE "构建应用..." -mvn clean package -DskipTests -q - -# 检查构建结果 -JAR_FILE="qaup-admin/target/qaup-admin.jar" -if [ ! -f "$JAR_FILE" ]; then - print_message $RED "❌ jar文件构建失败" - exit 1 -fi - -print_message $GREEN "✓ jar文件构建成功" - -# 2. 上传jar文件到打包服务器 -print_message $BLUE "上传jar文件到打包服务器..." - -# 检查是否配置了服务器信息 -if [ "$PACK_SERVER_HOST" = "your-pack-server" ]; then - print_message $RED "❌ 请先配置打包服务器信息" - echo "编辑脚本,修改以下变量:" - echo "PACK_SERVER_HOST=\"your-pack-server-ip\"" - echo "PACK_SERVER_USER=\"your-username\"" - echo "PACK_SERVER_PATH=\"/path/to/QAUP_Management\"" - exit 1 -fi - -# 上传jar文件 -scp "$JAR_FILE" "$PACK_SERVER_USER@$PACK_SERVER_HOST:$PACK_SERVER_PATH/qaup-admin/target/" - -print_message $GREEN "✓ jar文件上传成功" - -# 3. 在打包服务器上执行打包 -print_message $BLUE "在打包服务器上执行打包..." -ssh "$PACK_SERVER_USER@$PACK_SERVER_HOST" "cd $PACK_SERVER_PATH && ./deploy/simple/package-server.sh" - -print_message $GREEN "✅ 完整打包流程完成" - -echo "" -echo "下一步操作:" -echo "1. 从打包服务器下载生成的 qaup-deploy-*.tar.gz 文件" -echo "2. 将部署包传输到生产服务器进行部署" \ No newline at end of file diff --git a/deploy/create-init-sql.sh b/deploy/create-init-sql.sh deleted file mode 100755 index b7d28009..00000000 --- a/deploy/create-init-sql.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash - -# 创建简化的数据库初始化脚本 -# 从现有的数据库架构文件生成init.sql - -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" - -echo "=== 创建数据库初始化脚本 ===" - -# 输出文件 -INIT_SQL="$SCRIPT_DIR/init.sql" - -# 创建初始化脚本 -cat > "$INIT_SQL" << 'EOF' --- QAUP 数据库初始化脚本 --- 简化版本:只创建必要的扩展和导入数据 - --- 创建PostGIS扩展 -CREATE EXTENSION IF NOT EXISTS postgis; -CREATE EXTENSION IF NOT EXISTS postgis_topology; - --- 显示扩展信息 -SELECT 'PostGIS扩展安装完成' as message; - -EOF - -# 如果存在数据库架构文件,追加到初始化脚本 -SCHEMA_FILE="$PROJECT_ROOT/deploy/docker/postgres/qaup_database_schema.sql" -if [ -f "$SCHEMA_FILE" ]; then - echo "-- 导入数据库架构" >> "$INIT_SQL" - cat "$SCHEMA_FILE" >> "$INIT_SQL" - echo "✓ 已添加数据库架构" -else - echo "⚠ 未找到数据库架构文件: $SCHEMA_FILE" -fi - -# 添加完整初始数据(优先使用完整数据文件) -COMPLETE_DATA_FILE="$PROJECT_ROOT/deploy/docker/postgres/export/initial_data_complete.sql" -if [ -f "$COMPLETE_DATA_FILE" ]; then - echo "" >> "$INIT_SQL" - echo "-- 导入完整初始数据" >> "$INIT_SQL" - cat "$COMPLETE_DATA_FILE" >> "$INIT_SQL" - echo "✓ 已添加完整初始数据文件" -else - echo "⚠ 未找到完整初始数据文件: $COMPLETE_DATA_FILE" - echo "-- 注意:数据库将只包含基础结构,无初始数据" >> "$INIT_SQL" -fi - -# 添加完成信息 -cat >> "$INIT_SQL" << 'EOF' - --- 显示数据库信息 -SELECT - current_database() as database_name, - current_user as current_user, - version() as postgresql_version; - --- 显示表数量 -SELECT - schemaname, - COUNT(*) as table_count -FROM pg_tables -WHERE schemaname = 'public' -GROUP BY schemaname; - -SELECT 'QAUP数据库初始化完成' as message; -EOF - -echo "✅ 初始化脚本创建完成: $INIT_SQL" -echo "文件大小: $(du -sh "$INIT_SQL" | cut -f1)" \ No newline at end of file diff --git a/deploy/database-init.sh b/deploy/database-init.sh new file mode 100755 index 00000000..8ef0b78d --- /dev/null +++ b/deploy/database-init.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# QAUP 数据库初始化脚本 +# 直接执行完整的数据库初始化SQL文件 + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" + +echo "=== QAUP 数据库初始化脚本 ===" +echo "版本: 1.0.0" +echo "日期: $(date +%Y-%m-%d %H:%M:%S)" +echo "" + +# 检查必要文件是否存在 +COMPLETE_INIT_FILE="$SCRIPT_DIR/qaup_database_export.sql" +if [ ! -f "$COMPLETE_INIT_FILE" ]; then + echo "❌ 错误: 未找到完整数据库初始化文件" + echo " 文件路径: $COMPLETE_INIT_FILE" + exit 1 +fi + +echo "✅ 找到完整数据库初始化文件: $COMPLETE_INIT_FILE" +echo " 文件大小: $(du -sh "$COMPLETE_INIT_FILE" | cut -f1)" +echo "" + +# 检查PostgreSQL是否可用 +if ! command -v psql &> /dev/null; then + echo "❌ 错误: PostgreSQL客户端(psql)未安装或未在PATH中" + echo " 请确保已安装PostgreSQL并配置环境变量" + exit 1 +fi + +echo "✅ PostgreSQL客户端已检测到: $(psql --version | head -1)" +echo "" + +# 设置默认数据库信息 +DEFAULT_DB="qaup" +DEFAULT_USER="qaup" + +# 询问用户数据库连接信息 +read -p "请输入数据库名称(默认: $DEFAULT_DB): " DB_NAME +DB_NAME=${DB_NAME:-$DEFAULT_DB} + +read -p "请输入数据库用户名(默认: $DEFAULT_USER): " DB_USER +DB_USER=${DB_USER:-$DEFAULT_USER} + +read -s -p "请输入数据库密码: " DB_PASSWORD +echo "" + +# 连接并执行初始化脚本 +echo "开始执行数据库初始化..." +echo "=========================================" + +PGPASSWORD="$DB_PASSWORD" psql -U "$DB_USER" -d "$DB_NAME" -f "$COMPLETE_INIT_FILE" 2>&1 | grep -v "NOTICE" + +if [ $? -eq 0 ]; then + echo "=========================================" + echo "✅ 数据库初始化成功完成!" + echo " 数据库: $DB_NAME" + echo " 用户: $DB_USER" +else + echo "=========================================" + echo "❌ 数据库初始化失败!" + echo " 请检查连接信息和数据库权限" + echo " 确保数据库已经创建: createdb -U $DB_USER $DB_NAME" + exit 1 +fi \ No newline at end of file diff --git a/deploy/deploy.sh b/deploy/deploy-all.sh similarity index 95% rename from deploy/deploy.sh rename to deploy/deploy-all.sh index dd36d290..947224c3 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy-all.sh @@ -40,7 +40,7 @@ if curl -f -s http://localhost:8080/actuator/health > /dev/null 2>&1; then echo " 查看状态: docker compose ps" echo " 查看日志: docker compose logs -f qaup-app" echo " 停止服务: docker compose down" - echo " 升级应用: ./update.sh" + echo " 升级应用: ./deploy-update.sh" else echo "❌ 服务启动失败,请检查日志:" docker compose logs diff --git a/deploy/update.sh b/deploy/deploy-update.sh similarity index 100% rename from deploy/update.sh rename to deploy/deploy-update.sh diff --git a/deploy/package-server.sh b/deploy/package-all.sh similarity index 74% rename from deploy/package-server.sh rename to deploy/package-all.sh index cee46daa..78e01f71 100755 --- a/deploy/package-server.sh +++ b/deploy/package-all.sh @@ -52,21 +52,16 @@ docker save $POSTGRES_IMAGE $REDIS_IMAGE $OPENJDK_IMAGE | gzip > qaup-deploy/ima # 复制必要文件 print_message $BLUE "准备部署文件..." cp "$JAR_FILE" qaup-deploy/app.jar -cp deploy/simple/docker-compose.yml qaup-deploy/ -cp deploy/simple/config.yml qaup-deploy/ +cp deploy/docker-compose.yml qaup-deploy/ +cp deploy/config.yml qaup-deploy/ +cp deploy/deploy-all.sh qaup-deploy/ +cp deploy/deploy-update.sh qaup-deploy/ # 复制数据库相关文件 -mkdir -p qaup-deploy/sql -cp deploy/docker/postgres/qaup_database_schema.sql qaup-deploy/sql/ 2>/dev/null || echo "⚠ 数据库架构文件不存在" -cp deploy/docker/postgres/export/initial_data_complete.sql qaup-deploy/sql/ 2>/dev/null || echo "⚠ 完整初始数据文件不存在" +cp deploy/qaup_database_export.sql qaup-deploy/qaup_database_export.sql 2>/dev/null || echo "⚠ 完整初始数据文件不存在" +cp deploy/database-init.sh qaup-deploy/ 2>/dev/null || echo "⚠ 数据库初始化脚本不存在" -# 创建数据库初始化脚本 -./deploy/simple/create-init-sql.sh -cp deploy/simple/init.sql qaup-deploy/ - -cp deploy/simple/deploy.sh qaup-deploy/ -cp deploy/simple/update.sh qaup-deploy/ -cp deploy/simple/DeployGuide.md qaup-deploy/ +cp deploy/DeployGuide.md qaup-deploy/ # 创建部署包 PACKAGE_NAME="qaup-deploy-$(date +%Y%m%d-%H%M%S).tar.gz" @@ -79,4 +74,4 @@ echo "" echo "部署说明:" echo "1. 将 $PACKAGE_NAME 传输到目标服务器" echo "2. mkdir qaup-deploy && tar -xzf $PACKAGE_NAME -C qaup-deploy" -echo "3. cd qaup-deploy && ./deploy.sh" \ No newline at end of file +echo "3. cd qaup-deploy && ./deploy-all.sh" \ No newline at end of file diff --git a/deploy/build-update.sh b/deploy/package-update.sh similarity index 99% rename from deploy/build-update.sh rename to deploy/package-update.sh index 8927c3e7..940c4d52 100755 --- a/deploy/build-update.sh +++ b/deploy/package-update.sh @@ -60,7 +60,7 @@ cp qaup-admin.jar new-app.jar ### 3. 执行更新 ```bash -./update.sh +./deploy-update.sh ``` ### 4. 验证更新