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

12 KiB
Raw Blame History

MPS模拟批量处理程序部署指南

📋 目录

  1. 开发环境打包
  2. 部署包准备
  3. 服务器环境准备
  4. 部署实施
  5. 配置与测试
  6. 故障排查

1. 开发环境打包

1.1 环境检查

首先确认开发环境已就绪:

# 检查Java版本
java -version
# 应显示: openjdk version "17.x.x"

# 检查Maven版本
mvn -version
# 应显示: Apache Maven 3.x.x

# 检查当前目录
pwd
# 应在项目根目录: MpsSimulationBatch

1.2 代码编译检查

# 清理并编译项目
mvn clean compile -Dfile.encoding=UTF-8

# 如果编译成功,继续下一步
# 如果有错误,请先解决编译问题

1.3 生成部署包

方式一生成可执行JAR包推荐

# 打包生成jar-with-dependencies
mvn clean package -DskipTests -Dfile.encoding=UTF-8

# 检查生成的文件
ls -la target/
# 应该看到: mps-simulation-batch-jar-with-dependencies.jar

方式二:生成完整部署包

# 创建部署目录
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 验证部署包

# 查看部署包内容
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上传

# 上传部署包到服务器
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:

# 安装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:

# 更新包管理器
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

验证安装:

java -version
# 应显示: openjdk version "17.x.x"

echo $JAVA_HOME
# 应显示正确的Java安装路径

3.3 创建应用用户(推荐)

# 创建专用用户
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 配置环境变量

# 配置编码环境变量
echo 'export LANG=zh_CN.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=zh_CN.UTF-8' >> ~/.bashrc
source ~/.bashrc

# 验证环境变量
locale

4. 部署实施

4.1 解压部署包

# 切换到部署目录
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 验证部署结构

# 检查部署结构
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

# 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编译需要

# CentOS/RHEL
sudo yum install maven

# Ubuntu/Debian
sudo apt install maven

# 验证安装
mvn -version

2. 获取项目代码

# 创建应用目录
sudo mkdir -p /opt/mps-batch
sudo chown $USER:$USER /opt/mps-batch
cd /opt/mps-batch

# 将项目文件上传到服务器
# 可以使用scp、rsync、git等方式

3. 编译项目

cd /opt/mps-batch
mvn clean package

# 验证编译结果
ls -la target/mps-simulation-batch-jar-with-dependencies.jar

4. 配置数据库

创建数据库和表

# 导入数据库表结构
mysql -u root -p < DDL/dump-cdsdb-202509011355.sql

配置数据库连接


# 编辑配置文件
vi conf/application.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. 设置脚本权限

# 设置脚本执行权限
chmod +x bin/*.sh

# 验证脚本权限
ls -la bin/

6. 测试运行

数据库连接测试

# 运行程序测试数据库连接
./bin/start.sh

功能测试

# 测试重跑功能(使用历史日期避免影响当前数据)
./bin/rerun.sh 20250801 BIZ001

7. 配置定时任务

设置Crontab

# 编辑定时任务
crontab -e

# 添加以下内容每天凌晨2点执行
0 2 * * * /opt/mps-batch/bin/start.sh >> /opt/mps-batch/logs/cron.log 2>&1

# 查看定时任务
crontab -l

创建服务管理脚本(可选)

# 创建systemd服务文件
sudo vi /etc/systemd/system/mps-batch.service

服务文件内容:

[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. 日志配置

配置日志轮转

# 创建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. 监控设置

脚本监控

# 创建监控脚本
vi bin/monitor.sh

监控脚本内容:

#!/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. 安全配置

创建专用用户

# 创建应用用户
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

数据库权限控制

-- 创建专用数据库用户
CREATE USER 'mps_batch'@'%' IDENTIFIED BY 'complex_password';

-- 授予必要权限
GRANT SELECT, INSERT, UPDATE ON cdsdb.* TO 'mps_batch'@'%';
FLUSH PRIVILEGES;

故障排查

常见问题

1. Java版本问题

# 检查Java版本
java -version

# 如果版本不对设置JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk

2. 数据库连接问题

# 测试数据库连接
mysql -h your-db-host -u your-username -p

# 检查网络连通性
telnet your-db-host 3306

3. 权限问题

# 检查文件权限
ls -la bin/start.sh
ls -la conf/application.properties

# 修复权限
chmod +x bin/*.sh
chmod 644 conf/application.properties

4. 内存不足

# 查看内存使用
free -m

# 修改Java堆大小在start.sh中
JAVA_OPTS="-Xms256m -Xmx512m ..."

日志分析

查看关键日志

# 查看批量执行日志
tail -f logs/batch-execution.log

# 查看应用日志
tail -f logs/mps-batch.log

# 查看错误信息
grep -i error logs/*.log

性能监控

# 监控批量执行时间
grep "总耗时" logs/batch-execution.log

# 监控处理记录数
grep "总处理记录数" logs/batch-execution.log

维护指南

定期维护任务

日志清理

# 清理30天前的日志
find /opt/mps-batch/logs -name "*.log.*" -mtime +30 -delete

性能优化

# 分析慢查询
grep -i "耗时" logs/mps-batch.log | sort -k5 -n

# 监控数据库连接
netstat -an | grep :3306

备份重要文件

# 备份配置文件
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. 恢复定时任务
# 停止定时任务
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. 联系技术支持团队
# 收集环境信息
echo "========== 系统信息 =========="
uname -a
cat /etc/os-release

echo "========== Java信息 =========="
java -version

echo "========== 数据库信息 =========="
mysql --version

echo "========== 应用日志 =========="
tail -100 logs/mps-batch.log