# 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 # 应在项目根目录: MpsFormalBatch ``` ### 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-formal-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-formal-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-formal-batch-deploy.tar.gz deploy-package/ echo "部署包已生成: mps-formal-batch-deploy.tar.gz" ``` ### 1.4 验证部署包 ```bash # 查看部署包内容 tar -tzf mps-formal-batch-deploy.tar.gz # 检查文件大小 ls -lh mps-formal-batch-deploy.tar.gz ``` --- ## 2. 部署包准备 ### 2.1 部署包结构 正确的部署包应包含以下结构: ``` mps-formal-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-formal-batch-jar-with-dependencies.jar # 可执行JAR包 ├── README.md # 项目说明 └── DEPLOY.md # 部署指南 ``` ### 2.2 上传到服务器 **方式一:使用scp上传** ```bash # 上传部署包到服务器 scp mps-formal-batch-deploy.tar.gz username@server-ip:/opt/ # 示例 scp mps-formal-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-formal-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-formal-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-formal-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 Formal 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-formal-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 ```