mps-batch/MpsSimulationBatch/DEPLOY.md
2025-09-13 16:31:45 +08:00

606 lines
12 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.

# 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
```