606 lines
12 KiB
Markdown
606 lines
12 KiB
Markdown
# 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
|
||
``` |