QAUP_Management/deploy/BUILD-GUIDE.md

118 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` - 程序更新