mps-batch/MpsSimulationBatch/DEPLOY.md

606 lines
12 KiB
Markdown
Raw Normal View History

2025-09-13 16:31:45 +08:00
# MPS模拟批量处理程序部署指南
## 📋 目录
1. [开发环境打包](#1-开发环境打包)
2. [部署包准备](#2-部署包准备)
3. [服务器环境准备](#3-服务器环境准备)
4. [部署实施](#4-部署实施)
5. [配置与测试](#5-配置与测试)
6. [故障排查](#6-故障排查)
---
## 1. 开发环境打包
### 1.1 环境检查
首先确认开发环境已就绪:
```bash
# 检查Java版本
java -version
# 应显示: openjdk version "17.x.x"
# 检查Maven版本
mvn -version
# 应显示: Apache Maven 3.x.x
# 检查当前目录
pwd
# 应在项目根目录: MpsSimulationBatch
```
### 1.2 代码编译检查
```bash
# 清理并编译项目
mvn clean compile -Dfile.encoding=UTF-8
# 如果编译成功,继续下一步
# 如果有错误,请先解决编译问题
```
### 1.3 生成部署包
**方式一生成可执行JAR包推荐**
```bash
# 打包生成jar-with-dependencies
mvn clean package -DskipTests -Dfile.encoding=UTF-8
# 检查生成的文件
ls -la target/
# 应该看到: mps-simulation-batch-jar-with-dependencies.jar
```
**方式二:生成完整部署包**
```bash
# 创建部署目录
mkdir -p deploy-package
# 复制必要文件
cp -r bin/ deploy-package/
cp -r conf/ deploy-package/
cp -r src/main/resources/ deploy-package/
cp target/mps-simulation-batch-jar-with-dependencies.jar deploy-package/
cp README.md deploy-package/
cp DEPLOY.md deploy-package/
# 创建日志目录
mkdir -p deploy-package/logs
# 打包部署文件
tar -czf mps-simulation-batch-deploy.tar.gz deploy-package/
echo "部署包已生成: mps-simulation-batch-deploy.tar.gz"
```
### 1.4 验证部署包
```bash
# 查看部署包内容
tar -tzf mps-simulation-batch-deploy.tar.gz
# 检查文件大小
ls -lh mps-simulation-batch-deploy.tar.gz
```
---
## 2. 部署包准备
### 2.1 部署包结构
正确的部署包应包含以下结构:
```
mps-simulation-batch-deploy.tar.gz
└── deploy-package/
├── bin/ # 启动脚本目录
│ ├── start.sh # Linux启动脚本
│ ├── start.bat # Windows启动脚本
│ ├── rerun.sh # Linux重跑脚本
│ └── rerun.bat # Windows重跑脚本
├── conf/ # 配置文件目录
│ └── application.properties # 应用配置文件
├── resources/ # 资源文件目录
│ └── logback.xml # 日志配置文件
├── logs/ # 日志目录(空目录)
├── mps-simulation-batch-jar-with-dependencies.jar # 可执行JAR包
├── README.md # 项目说明
└── DEPLOY.md # 部署指南
```
### 2.2 上传到服务器
**方式一使用scp上传**
```bash
# 上传部署包到服务器
scp mps-simulation-batch-deploy.tar.gz username@server-ip:/opt/
# 示例
scp mps-simulation-batch-deploy.tar.gz root@192.168.1.100:/opt/
```
**方式二使用FTP工具**
- 使用FileZilla、WinSCP等工具
- 上传到服务器的 `/opt/` 目录
---
## 3. 服务器环境准备
### 3.1 系统要求
- **操作系统**: Linux (CentOS 7+, Ubuntu 18+, 或 RHEL 7+)
- **CPU**: 2核以上
- **内存**: 2GB以上
- **磁盘**: 10GB以上可用空间
### 3.2 安装Java 17
**CentOS/RHEL:**
```bash
# 安装OpenJDK 17
sudo yum install -y java-17-openjdk java-17-openjdk-devel
# 设置JAVA_HOME
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
```
**Ubuntu/Debian:**
```bash
# 更新包管理器
sudo apt update
# 安装OpenJDK 17
sudo apt install -y openjdk-17-jdk
# 设置JAVA_HOME
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
```
**验证安装:**
```bash
java -version
# 应显示: openjdk version "17.x.x"
echo $JAVA_HOME
# 应显示正确的Java安装路径
```
### 3.3 创建应用用户(推荐)
```bash
# 创建专用用户
sudo useradd -m -s /bin/bash mps-batch
# 创建应用目录
sudo mkdir -p /opt/mps-batch
sudo chown mps-batch:mps-batch /opt/mps-batch
# 切换到应用用户
sudo su - mps-batch
```
### 3.4 配置环境变量
```bash
# 配置编码环境变量
echo 'export LANG=zh_CN.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=zh_CN.UTF-8' >> ~/.bashrc
source ~/.bashrc
# 验证环境变量
locale
```
---
## 4. 部署实施
### 4.1 解压部署包
```bash
# 切换到部署目录
cd /opt
# 解压部署包
sudo tar -xzf mps-simulation-batch-deploy.tar.gz
# 移动文件到指定目录
sudo mv deploy-package/* /opt/mps-batch/
sudo rmdir deploy-package
# 设置所有者
sudo chown -R mps-batch:mps-batch /opt/mps-batch
# 设置脚本执行权限
chmod +x /opt/mps-batch/bin/*.sh
```
### 4.2 验证部署结构
```bash
# 检查部署结构
cd /opt/mps-batch
tree -L 2 .
# 或者使用 ls -la 查看
# 验证关键文件
ls -la mps-simulation-batch-jar-with-dependencies.jar
ls -la bin/start.sh
ls -la conf/application.properties
```
### 4.3 修改脚本路径(重要)
由于生产环境和开发环境路径不同,需要更新脚本中的路径配置:
### 软件环境
- **操作系统**: Linux (推荐 CentOS 7+ 或 Ubuntu 18+)
- **Java**: OpenJDK 17 或更高版本
- **Maven**: 3.6+ (编译时需要)
- **数据库**: MySQL 8.0+ 或 达梦 8.0+
### 硬件要求
- **CPU**: 2核以上
- **内存**: 2GB以上
- **磁盘**: 10GB以上可用空间
## 部署步骤
### 1. 准备环境
#### 安装Java 17
```bash
# CentOS/RHEL
sudo yum install java-17-openjdk java-17-openjdk-devel
# Ubuntu/Debian
sudo apt update
sudo apt install openjdk-17-jdk
# 验证安装
java -version
```
#### 安装Maven编译需要
```bash
# CentOS/RHEL
sudo yum install maven
# Ubuntu/Debian
sudo apt install maven
# 验证安装
mvn -version
```
### 2. 获取项目代码
```bash
# 创建应用目录
sudo mkdir -p /opt/mps-batch
sudo chown $USER:$USER /opt/mps-batch
cd /opt/mps-batch
# 将项目文件上传到服务器
# 可以使用scp、rsync、git等方式
```
### 3. 编译项目
```bash
cd /opt/mps-batch
mvn clean package
# 验证编译结果
ls -la target/mps-simulation-batch-jar-with-dependencies.jar
```
### 4. 配置数据库
#### 创建数据库和表
```bash
# 导入数据库表结构
mysql -u root -p < DDL/dump-cdsdb-202509011355.sql
```
#### 配置数据库连接
```bash
# 编辑配置文件
vi conf/application.properties
```
修改数据库连接信息:
```properties
# 修改数据库连接信息
db.mysql.url=jdbc:mysql://your-db-host:3306/cdsdb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
db.mysql.username=your-username
db.mysql.password=your-password
```
### 5. 设置脚本权限
```bash
# 设置脚本执行权限
chmod +x bin/*.sh
# 验证脚本权限
ls -la bin/
```
### 6. 测试运行
#### 数据库连接测试
```bash
# 运行程序测试数据库连接
./bin/start.sh
```
#### 功能测试
```bash
# 测试重跑功能(使用历史日期避免影响当前数据)
./bin/rerun.sh 20250801 BIZ001
```
### 7. 配置定时任务
#### 设置Crontab
```bash
# 编辑定时任务
crontab -e
# 添加以下内容每天凌晨2点执行
0 2 * * * /opt/mps-batch/bin/start.sh >> /opt/mps-batch/logs/cron.log 2>&1
# 查看定时任务
crontab -l
```
#### 创建服务管理脚本(可选)
```bash
# 创建systemd服务文件
sudo vi /etc/systemd/system/mps-batch.service
```
服务文件内容:
```ini
[Unit]
Description=MPS Simulation Batch Service
After=network.target
[Service]
Type=oneshot
User=mps-batch
Group=mps-batch
WorkingDirectory=/opt/mps-batch
ExecStart=/opt/mps-batch/bin/start.sh
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
```
### 8. 日志配置
#### 配置日志轮转
```bash
# 创建logrotate配置
sudo vi /etc/logrotate.d/mps-batch
```
配置内容:
```
/opt/mps-batch/logs/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 644 mps-batch mps-batch
copytruncate
}
```
### 9. 监控设置
#### 脚本监控
```bash
# 创建监控脚本
vi bin/monitor.sh
```
监控脚本内容:
```bash
#!/bin/bash
# 检查批量执行状态的监控脚本
LOG_DIR="/opt/mps-batch/logs"
ALERT_EMAIL="admin@company.com"
# 检查最新日志中是否有错误
if grep -q "ERROR\|批量处理失败" "$LOG_DIR/batch-execution.log"; then
echo "MPS批量处理发现错误请检查日志" | mail -s "MPS批量处理告警" "$ALERT_EMAIL"
fi
# 检查批量是否正常完成
if ! grep -q "批量处理成功完成" "$LOG_DIR/batch-execution.log"; then
echo "MPS批量处理可能未正常完成请检查" | mail -s "MPS批量处理告警" "$ALERT_EMAIL"
fi
```
### 10. 安全配置
#### 创建专用用户
```bash
# 创建应用用户
sudo useradd -m -d /home/mps-batch -s /bin/bash mps-batch
# 设置目录权限
sudo chown -R mps-batch:mps-batch /opt/mps-batch
sudo chmod 750 /opt/mps-batch
```
#### 数据库权限控制
```sql
-- 创建专用数据库用户
CREATE USER 'mps_batch'@'%' IDENTIFIED BY 'complex_password';
-- 授予必要权限
GRANT SELECT, INSERT, UPDATE ON cdsdb.* TO 'mps_batch'@'%';
FLUSH PRIVILEGES;
```
## 故障排查
### 常见问题
#### 1. Java版本问题
```bash
# 检查Java版本
java -version
# 如果版本不对设置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
```
#### 2. 数据库连接问题
```bash
# 测试数据库连接
mysql -h your-db-host -u your-username -p
# 检查网络连通性
telnet your-db-host 3306
```
#### 3. 权限问题
```bash
# 检查文件权限
ls -la bin/start.sh
ls -la conf/application.properties
# 修复权限
chmod +x bin/*.sh
chmod 644 conf/application.properties
```
#### 4. 内存不足
```bash
# 查看内存使用
free -m
# 修改Java堆大小在start.sh中
JAVA_OPTS="-Xms256m -Xmx512m ..."
```
### 日志分析
#### 查看关键日志
```bash
# 查看批量执行日志
tail -f logs/batch-execution.log
# 查看应用日志
tail -f logs/mps-batch.log
# 查看错误信息
grep -i error logs/*.log
```
#### 性能监控
```bash
# 监控批量执行时间
grep "总耗时" logs/batch-execution.log
# 监控处理记录数
grep "总处理记录数" logs/batch-execution.log
```
## 维护指南
### 定期维护任务
#### 日志清理
```bash
# 清理30天前的日志
find /opt/mps-batch/logs -name "*.log.*" -mtime +30 -delete
```
#### 性能优化
```bash
# 分析慢查询
grep -i "耗时" logs/mps-batch.log | sort -k5 -n
# 监控数据库连接
netstat -an | grep :3306
```
#### 备份重要文件
```bash
# 备份配置文件
tar -czf /backup/mps-batch-config-$(date +%Y%m%d).tar.gz conf/
# 备份可执行文件
cp target/mps-simulation-batch-jar-with-dependencies.jar /backup/
```
### 版本升级
#### 升级步骤
1. 备份当前版本
2. 停止定时任务
3. 部署新版本
4. 测试功能
5. 恢复定时任务
```bash
# 停止定时任务
crontab -r
# 备份当前版本
cp -r /opt/mps-batch /backup/mps-batch-$(date +%Y%m%d)
# 部署新版本后测试
./bin/rerun.sh 20250801 BIZ001
# 恢复定时任务
crontab -e
```
## 联系支持
如遇到部署问题,请按以下步骤收集信息:
1. 收集错误日志
2. 记录操作步骤
3. 提供环境信息
4. 联系技术支持团队
```bash
# 收集环境信息
echo "========== 系统信息 =========="
uname -a
cat /etc/os-release
echo "========== Java信息 =========="
java -version
echo "========== 数据库信息 =========="
mysql --version
echo "========== 应用日志 =========="
tail -100 logs/mps-batch.log
```