From 2263def8800bbd5dbb99a460bae4781a6efe0d80 Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Tue, 5 Aug 2025 16:24:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E7=BD=B2=E6=96=B9?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/simple/BUILD-GUIDE.md | 92 +++++++++++++++++++ deploy/simple/build-and-upload.sh | 65 +++++++++++++ ...ckage-with-docker.sh => package-server.sh} | 41 ++++----- deploy/simple/package.sh | 73 --------------- 4 files changed, 175 insertions(+), 96 deletions(-) create mode 100644 deploy/simple/BUILD-GUIDE.md create mode 100644 deploy/simple/build-and-upload.sh rename deploy/simple/{package-with-docker.sh => package-server.sh} (77%) delete mode 100755 deploy/simple/package.sh diff --git a/deploy/simple/BUILD-GUIDE.md b/deploy/simple/BUILD-GUIDE.md new file mode 100644 index 00000000..4eb0932e --- /dev/null +++ b/deploy/simple/BUILD-GUIDE.md @@ -0,0 +1,92 @@ +# 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.zip +ls -la qaup-deploy-*.zip +``` + +## 日常更新流程 + +### 程序更新(推荐) +```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 +``` + +### 完整重新部署 +```bash +# macOS → 打包服务器 → 生产服务器 +# 按照上述完整流程操作 +``` + +## 服务器配置要求 + +### 打包服务器(Ubuntu) +- ✅ Docker已安装 +- ✅ 网络连接正常(拉取镜像) +- ✅ 足够磁盘空间(约2GB) + +### 生产服务器(Ubuntu) +- ✅ Docker已安装 +- ✅ 解压工具(unzip) + +## 故障排除 + +### Q: Docker拉取镜像很慢 +A: 使用国内镜像加速器,脚本已配置daocloud加速器 + +### Q: jar文件上传失败 +A: 检查网络连接和服务器路径是否正确 + +### Q: 打包过程中断 +A: 重新运行package-server.sh脚本,会自动清理并重新开始 + +## 脚本说明 + +### 开发环境脚本: +- `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/simple/build-and-upload.sh b/deploy/simple/build-and-upload.sh new file mode 100644 index 00000000..93fd7b44 --- /dev/null +++ b/deploy/simple/build-and-upload.sh @@ -0,0 +1,65 @@ +#!/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-*.zip 文件" +echo "2. 将部署包传输到生产服务器进行部署" \ No newline at end of file diff --git a/deploy/simple/package-with-docker.sh b/deploy/simple/package-server.sh similarity index 77% rename from deploy/simple/package-with-docker.sh rename to deploy/simple/package-server.sh index 93236701..55db5fd3 100644 --- a/deploy/simple/package-with-docker.sh +++ b/deploy/simple/package-server.sh @@ -1,7 +1,7 @@ #!/bin/bash -# QAUP Docker构建打包脚本 -# 在Ubuntu打包服务器上运行,使用Docker构建jar文件 +# QAUP 服务器端打包脚本 +# 在Ubuntu打包服务器上运行,使用已构建的jar文件进行打包 set -e @@ -15,7 +15,18 @@ print_message() { echo -e "${1}${2}${NC}" } -print_message $BLUE "=== QAUP Docker构建打包脚本 ===" +print_message $BLUE "=== QAUP 服务器端打包脚本 ===" + +# 检查jar文件是否存在 +JAR_FILE="qaup-admin/target/qaup-admin.jar" +if [ ! -f "$JAR_FILE" ]; then + print_message $RED "❌ 未找到jar文件: $JAR_FILE" + echo "请先在macOS上构建jar文件并上传到服务器" + echo "或者将jar文件放到正确位置" + exit 1 +fi + +print_message $GREEN "✓ 找到jar文件: $JAR_FILE" # 检查Docker是否可用 if ! command -v docker &> /dev/null; then @@ -23,23 +34,7 @@ if ! command -v docker &> /dev/null; then exit 1 fi -# 1. 使用Docker构建jar文件 -print_message $BLUE "使用Docker构建应用..." -docker run --rm \ - --platform linux/amd64 \ - -v "$(pwd)":/workspace \ - -w /workspace \ - m.daocloud.io/docker.io/library/maven:latest \ - 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 - -# 2. 准备镜像版本 +# 准备镜像版本 POSTGRES_IMAGE="m.daocloud.io/docker.io/postgis/postgis:17-3.5-alpine" REDIS_IMAGE="m.daocloud.io/docker.io/library/redis:8.0-alpine" OPENJDK_IMAGE="m.daocloud.io/docker.io/library/eclipse-temurin:17-jre" @@ -49,12 +44,12 @@ docker pull --platform linux/amd64 $POSTGRES_IMAGE docker pull --platform linux/amd64 $REDIS_IMAGE docker pull --platform linux/amd64 $OPENJDK_IMAGE -# 3. 导出镜像 +# 导出镜像 print_message $BLUE "导出镜像..." mkdir -p qaup-deploy docker save $POSTGRES_IMAGE $REDIS_IMAGE $OPENJDK_IMAGE | gzip > qaup-deploy/images.tar.gz -# 4. 复制必要文件 +# 复制必要文件 print_message $BLUE "准备部署文件..." cp "$JAR_FILE" qaup-deploy/app.jar cp deploy/simple/docker-compose.yml qaup-deploy/ @@ -73,7 +68,7 @@ cp deploy/simple/deploy.sh qaup-deploy/ cp deploy/simple/update.sh qaup-deploy/ cp deploy/simple/DeployGuide.md qaup-deploy/ -# 5. 创建部署包 +# 创建部署包 PACKAGE_NAME="qaup-deploy-$(date +%Y%m%d-%H%M%S).zip" cd qaup-deploy && zip -r ../$PACKAGE_NAME . && cd .. diff --git a/deploy/simple/package.sh b/deploy/simple/package.sh deleted file mode 100755 index 429064c3..00000000 --- a/deploy/simple/package.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -# QAUP 简化打包脚本 -# 基于现有复杂方案,简化为一键打包 - -set -e - -SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" - -# 颜色输出 -RED='\033[0;31m' -GREEN='\033[0;32m' -BLUE='\033[0;34m' -NC='\033[0m' - -print_message() { - echo -e "${1}${2}${NC}" -} - -print_message $BLUE "=== QAUP 简化打包脚本 ===" - -# 1. 构建应用 -print_message $BLUE "构建应用..." -cd "$PROJECT_ROOT" -mvn clean package -DskipTests -q - -# 2. 准备镜像版本(使用国内镜像加速器) -POSTGRES_IMAGE="m.daocloud.io/docker.io/postgis/postgis:17-3.5-alpine" -REDIS_IMAGE="m.daocloud.io/docker.io/library/redis:8.0-alpine" -OPENJDK_IMAGE="m.daocloud.io/docker.io/library/eclipse-temurin:17-jre" - -print_message $BLUE "拉取基础镜像..." -docker pull $POSTGRES_IMAGE -docker pull $REDIS_IMAGE -docker pull $OPENJDK_IMAGE - -# 3. 导出镜像(只导出基础镜像,不需要构建自定义镜像) -print_message $BLUE "导出镜像..." -mkdir -p qaup-deploy -docker save $POSTGRES_IMAGE $REDIS_IMAGE $OPENJDK_IMAGE | gzip > qaup-deploy/images.tar.gz - -# 5. 复制必要文件 -print_message $BLUE "准备部署文件..." -cp qaup-admin/target/qaup-admin.jar qaup-deploy/app.jar -cp deploy/simple/docker-compose.yml qaup-deploy/ -cp deploy/simple/config.yml 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 "⚠ 完整初始数据文件不存在" - -# 创建数据库初始化脚本 -./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/ - -# 6. 创建部署包 -PACKAGE_NAME="qaup-deploy-$(date +%Y%m%d-%H%M%S).zip" -cd qaup-deploy && zip -r ../$PACKAGE_NAME . && cd .. - -print_message $GREEN "✅ 打包完成: $PACKAGE_NAME" -print_message $BLUE "部署包大小: $(du -sh $PACKAGE_NAME | cut -f1)" - -echo "" -echo "部署说明:" -echo "1. 将 $PACKAGE_NAME 传输到目标服务器" -echo "2. unzip $PACKAGE_NAME && cd qaup-deploy" -echo "3. ./deploy.sh" \ No newline at end of file