更新了一些部署配置

This commit is contained in:
Tian jianyong 2025-10-16 12:28:55 +08:00
parent 1f3953e121
commit 3030eab81e
5 changed files with 360 additions and 3 deletions

View File

@ -0,0 +1,295 @@
# Ubuntu部署指南
## 1. 系统环境准备
### Ubuntu系统要求
- **操作系统**: Ubuntu 20.04 LTS 或更高版本
- **内存**: 至少 8GB RAM
- **存储**: 至少 10GB 可用空间
- **CPU**: 4核或以上
- **网络**: 稳定的互联网连接
### 安装必要软件
```bash
# 系统更新
sudo apt update && sudo apt upgrade -y
# 安装Java 21
sudo apt install -y openjdk-21-jdk
java -version # 验证安装
# 安装Maven
sudo apt install -y maven
mvn -version # 验证安装
# 安装Docker
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户添加到docker组
sudo usermod -aG docker $USER
# 验证Docker
docker --version
```
## 2. 获取并编译项目
```bash
# 获取项目
git clone <your-repo-url>
cd QAUP-Management
# 编译项目
mvn clean package -DskipTests
# 验证编译结果
ls -la qaup-admin/target/qaup-admin.jar
```
## 3. 部署方式
### 3.1 Docker Compose部署推荐
```bash
# 创建部署目录
mkdir -p ~/qaup-deploy
cd ~/qaup-deploy
# 复制部署文件
cp /path/to/QAUP-Management/deploy/docker-compose.yml .
cp /path/to/QAUP-Management/deploy/config.yml .
cp /path/to/QAUP-Management/qaup-admin/target/qaup-admin.jar ./app.jar
# 创建数据目录
mkdir -p data/postgres data/redis logs backup
# 启动服务
docker compose up -d
# 检查服务状态
docker compose ps
```
### 3.2 快速测试部署
> **注意**: 仅用于快速测试
```bash
# 创建运行目录
mkdir -p ~/qaup-test
cd ~/qaup-test
# 复制jar文件
cp /path/to/QAUP-Management/qaup-admin/target/qaup-admin.jar ./
# 启动数据库和缓存服务
docker run --name qaup-postgres -e POSTGRES_DB=qaup -e POSTGRES_USER=qaup -e POSTGRES_PASSWORD=qaup123 -p 5432:5432 -d postgis/postgis:17-3.5-alpine
docker run --name qaup-redis -p 6379:6379 -d redis:8.0-alpine
# 等待服务启动
sleep 30
# 运行应用
java -jar qaup-admin.jar --spring.profiles.active=dev
```
## 4. 服务管理
### 启动/停止/重启
```bash
# 启动服务
cd ~/qaup-deploy
docker compose up -d
# 停止服务
docker compose down
# 重启应用服务
docker compose restart qaup-app
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f qaup-app
```
## 5. 访问系统
### 系统地址
- **Web管理**: http://<your-server-ip>:8080
- **WebSocket**: ws://<your-server-ip>:8080/collision
- **健康检查**: http://<your-server-ip>:8080/actuator/health
### 初始登录
- **用户名**: admin
- **密码**: admin123
## 6. 应用更新
### 6.1 基本更新流程
```bash
# 备份当前版本
cd ~/qaup-deploy
cp app.jar app.jar.backup.$(date +%Y%m%d_%H%M%S)
# 替换新版本
cp /path/to/new/qaup-admin.jar ./app.jar
# 重启应用
docker compose restart qaup-app
# 验证更新
curl http://localhost:8080/actuator/health
```
### 6.2 Java版本冲突解决
如果遇到 `UnsupportedClassVersionError` 错误表示编译的jar文件与容器中Java版本不匹配
**错误示例**
```
Exception in thread "main" java.lang.UnsupportedClassVersionError:
com/qaup/QuapApplication has been compiled by a more recent version of the Java Runtime
(class file version 65.0), this version of the Java Runtime only recognizes
class file versions up to 61.0
```
**解决方案**
1. **检查Docker镜像配置**
确保 `docker-compose.yml` 中使用Java 21镜像
```yaml
# QAUP 应用服务
qaup-app:
image: m.daocloud.io/docker.io/library/eclipse-temurin:21-jre
```
2. **修改并重新部署**
```bash
# 停止服务
docker compose down
# 备份原文件
cp docker-compose.yml docker-compose.yml.bak
# 修改Java版本如果需要
sed -i 's/eclipse-temurin:17-jre/eclipse-temurin:21-jre/' docker-compose.yml
# 重新启动服务
docker compose up -d
```
3. **验证Java版本**
```bash
# 检查容器中Java版本
docker exec qaup-app java -version
```
### 6.3 完整更新流程
当遇到容器名称冲突或其他问题时,使用完整的更新流程:
```bash
# 进入部署目录
cd ~/qaup-deploy
# 1. 停止现有服务
docker compose down
# 2. 确认所有容器已停止
docker ps -a | grep qaup
# 3. 如果还有残留容器,强制删除
docker rm -f $(docker ps -aq --filter name=qaup)
# 4. 备份当前jar文件
cp app.jar app.jar.backup.$(date +%Y%m%d_%H%M%S)
# 5. 替换新版本
cp /path/to/new/qaup-admin.jar ./app.jar
# 6. 启动新的服务
docker compose up -d
# 7. 检查服务状态
docker compose ps
# 8. 验证更新
curl -s http://localhost:8080/actuator/health | jq
```
### 6.4 故障排除
#### 6.4.1 容器名称冲突
如果遇到容器名称冲突错误:
```
Error response from daemon: Conflict. The container name "/qaup-app" is already in use
```
解决方法:
```bash
# 方式1完全重建
docker compose down
docker rm -f $(docker ps -aq --filter name=qaup)
docker compose up -d
# 方式2强制重新创建
docker compose up -d --force-recreate
# 方式3只重新创建特定服务
docker compose up -d --force-recreate qaup-app
```
#### 6.4.2 Java版本验证
确认容器中Java版本与编译版本匹配
```bash
# 查看容器Java版本
docker exec qaup-app java -version
# 如果需要,检查镜像信息
docker inspect qaup-app | grep -i java
```
## 7. 数据备份
```bash
# 数据库备份
docker exec qaup-postgres pg_dump -U qaup qaup > backup-$(date +%Y%m%d).sql
# 日志轮转保留最近7天
find ~/qaup-deploy/logs -name "*.log" -mtime +7 -delete
```
## 8. 常见问题
### 应用启动失败
```bash
# 查看详细日志
docker compose logs qaup-app
# 检查数据库连接
docker compose logs qaup-postgres
docker exec qaup-postgres pg_isready -U qaup
```
### 端口被占用
```bash
# 检查端口使用情况
netstat -tlnp | grep :8080
# 停止占用端口的进程
sudo kill -9 $(lsof -t -i:8080)
```
### 数据库连接失败
```bash
# 检查数据库服务
docker compose ps
docker exec qaup-postgres pg_isready -U qaup
```

View File

@ -108,6 +108,33 @@ rm qaup_database_export.sql
rm drop_tables.sql
```
## Java版本兼容性注意事项
如果在执行数据库迁移后更新应用需要注意Java版本兼容性
### 版本匹配检查
- **编译版本**: 确保应用jar文件在Java 21环境下编译
- **运行版本**: Docker容器中运行Java 21
### 版本不匹配错误示例
如果遇到 `UnsupportedClassVersionError` 错误:
```
class file has been compiled by a more recent version of the Java Runtime
(class file version 65.0), this version of the Java Runtime only recognizes
class file versions up to 61.0
```
### 解决方案
1. 确认Docker镜像使用Java 21
```yaml
image: eclipse-temurin:21-jre
```
2. 检查容器Java版本
```bash
docker exec <container-name> java -version
```
---
**创建时间:** 2025-09-25

View File

@ -181,6 +181,13 @@ if [ ! -f "new-app.jar" ]; then
exit 1
fi
# 验证Java版本兼容性重要确保jar与容器Java版本匹配
echo "验证Java版本兼容性..."
if command -v java &> /dev/null; then
LOCAL_JAVA_VERSION=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed 's/[^0-9.]*\([0-9.]*\).*/\1/')
echo "本地Java版本: $LOCAL_JAVA_VERSION"
fi
# 备份当前版本
cp app.jar app.jar.backup
echo "已备份当前版本"
@ -204,6 +211,34 @@ sleep 30
echo "✅ 升级完成!"
echo "如有问题,可执行回滚: cp app.jar.backup app.jar && docker compose restart app"
```
## 9. Java版本兼容性注意事项
### 9.1 编译与运行环境匹配
- **编译环境**: 确保项目在Java 21环境下编译
- **运行环境**: Docker镜像必须与编译版本匹配`openjdk:21-jre-alpine` 或 `eclipse-temurin:21-jre`
### 9.2 常见版本错误
如果遇到 `UnsupportedClassVersionError`,确认以下配置:
```yaml
# docker-compose.yml 中必须使用Java 21镜像
services:
app:
# 错误示例(可能导致版本不匹配)
# image: openjdk:17-jre-alpine
# 正确示例
image: openjdk:21-jre-alpine
```
### 9.3 版本验证命令
```bash
# 检查容器中Java版本
docker exec <container-name> java -version
# 检查jar文件编译版本
javap -cp <jar-file> -version <main-class>
```
## 9. 操作总结
### 开发环境(一次性)

View File

@ -39,7 +39,7 @@ spring:
data:
redis:
# 地址
host: localhost
host: 10.0.0.58
# 端口默认为6379
port: 6379
# 数据库索引

View File

@ -7,8 +7,8 @@ spring:
# 主库数据源(支持环境变量)
master:
url: jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5432}/${DB_NAME:qaup}?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: ${DB_USERNAME:postgres}
password: ${DB_PASSWORD:123456}
username: ${DB_USERNAME:qaup}
password: ${DB_PASSWORD:qaup123}
# 从库数据源
slave:
# 从数据源开关/默认关闭