更新了一些部署配置
This commit is contained in:
parent
1f3953e121
commit
3030eab81e
295
doc/deploy/Ubuntu部署指南.md
Normal file
295
doc/deploy/Ubuntu部署指南.md
Normal 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
|
||||
```
|
||||
@ -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
|
||||
|
||||
@ -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. 操作总结
|
||||
|
||||
### 开发环境(一次性)
|
||||
|
||||
@ -39,7 +39,7 @@ spring:
|
||||
data:
|
||||
redis:
|
||||
# 地址
|
||||
host: localhost
|
||||
host: 10.0.0.58
|
||||
# 端口,默认为6379
|
||||
port: 6379
|
||||
# 数据库索引
|
||||
|
||||
@ -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:
|
||||
# 从数据源开关/默认关闭
|
||||
|
||||
Loading…
Reference in New Issue
Block a user