linux下lims部署详细步骤参考

1. 进入程序目录

将路径改成服务器上的实际路径:

bash 复制代码
cd /opt/lims3.0-test/lims-3.0-sdfrd/wuk-lims3.0/service

保存当前目录:

bash 复制代码
APP_DIR=$(pwd)

检查文件是否存在:

bash 复制代码
ls -lh wuk-lims3.0.jar nf-test-3.0.0.jar start.sh stop.sh

2. 查询主包内部的 nf-test 路径

bash 复制代码
unzip -Z1 wuk-lims3.0.jar | grep 'nf-test-3.0.0.jar'

正常应该显示:

text 复制代码
BOOT-INF/lib/nf-test-3.0.0.jar

设置内部路径变量:

bash 复制代码
INNER_PATH=$(unzip -Z1 wuk-lims3.0.jar | grep 'nf-test-3.0.0.jar' | head -n 1)

确认变量:

bash 复制代码
echo "$INNER_PATH"

如果输出为空,不要继续替换。

3. 停止服务

bash 复制代码
sh stop.sh

等待几秒:

bash 复制代码
sleep 5

检查进程是否停止:

bash 复制代码
pgrep -af 'wuk-lims3.0.jar'

没有输出表示已经停止。

4. 备份原来的主程序包

使用时间作为备份文件名:

bash 复制代码
BACKUP="wuk-lims3.0.jar.backup_$(date +%Y%m%d_%H%M%S)"
cp -a wuk-lims3.0.jar "$BACKUP"

检查备份:

bash 复制代码
ls -lh "$BACKUP"

例如生成:

text 复制代码
wuk-lims3.0.jar.backup_20260807_110500

5. 创建待修改的临时主包

不要直接修改正式包,先复制一份:

bash 复制代码
cp -a wuk-lims3.0.jar wuk-lims3.0.jar.new

检查:

bash 复制代码
ls -lh wuk-lims3.0.jar wuk-lims3.0.jar.new

6. 创建临时目录

bash 复制代码
TMP_DIR=$(mktemp -d)

创建主包内部相同的目录结构:

bash 复制代码
mkdir -p "$TMP_DIR/$(dirname "$INNER_PATH")"

把新的 nf-test-3.0.0.jar 复制进去:

bash 复制代码
cp -a nf-test-3.0.0.jar "$TMP_DIR/$INNER_PATH"

检查:

bash 复制代码
ls -lh "$TMP_DIR/$INNER_PATH"

7. 删除主包内部旧的 nf-test 包

bash 复制代码
zip -d "$APP_DIR/wuk-lims3.0.jar.new" "$INNER_PATH"

删除后确认旧包已经不存在:

bash 复制代码
unzip -Z1 "$APP_DIR/wuk-lims3.0.jar.new" | grep 'nf-test-3.0.0.jar'

此时应该没有输出。

8. 添加新的 nf-test 包

必须使用 -0,保证内部依赖包以"不压缩"方式存储:

bash 复制代码
cd "$TMP_DIR"
zip -0 "$APP_DIR/wuk-lims3.0.jar.new" "$INNER_PATH"
cd "$APP_DIR"

确认新包已经加入:

bash 复制代码
unzip -Z1 wuk-lims3.0.jar.new | grep 'nf-test-3.0.0.jar'

应该输出:

text 复制代码
BOOT-INF/lib/nf-test-3.0.0.jar

9. 检查主包是否损坏

bash 复制代码
unzip -t wuk-lims3.0.jar.new

最后应该看到类似:

text 复制代码
No errors detected in compressed data

检查内部包是否为 Stored

bash 复制代码
unzip -lv wuk-lims3.0.jar.new | grep 'nf-test-3.0.0.jar'

输出中应该包含:

text 复制代码
Stored

10. 对比新包和内部包的 MD5

计算外部新包 MD5:

bash 复制代码
md5sum nf-test-3.0.0.jar

计算替换后主包内部的 MD5:

bash 复制代码
unzip -p wuk-lims3.0.jar.new "$INNER_PATH" | md5sum

两个 MD5 值一致,表示内部包替换成功。

也可以直接执行:

bash 复制代码
NEW_MD5=$(md5sum nf-test-3.0.0.jar | awk '{print $1}')
INNER_MD5=$(unzip -p wuk-lims3.0.jar.new "$INNER_PATH" | md5sum | awk '{print $1}')

echo "外部新包:$NEW_MD5"
echo "内部新包:$INNER_MD5"

[ "$NEW_MD5" = "$INNER_MD5" ] && echo "校验成功" || echo "校验失败"

11. 正式替换主程序包

确认前面的检查全部通过后执行:

bash 复制代码
mv -f wuk-lims3.0.jar.new wuk-lims3.0.jar

清理临时目录:

bash 复制代码
rm -rf "$TMP_DIR"

检查正式包:

bash 复制代码
ls -lh wuk-lims3.0.jar "$BACKUP"

12. 启动服务

bash 复制代码
sh start.sh

等待启动:

bash 复制代码
sleep 10

检查进程:

bash 复制代码
pgrep -af 'wuk-lims3.0.jar'

检查端口,例如程序端口是 9000

bash 复制代码
ss -lntp | grep ':9000'

查看最近日志:

bash 复制代码
tail -n 200 server.log

持续查看日志:

bash 复制代码
tail -f server.log

Ctrl+C 退出日志查看。

一套连续执行的核心命令

确认程序目录正确后,可以依次执行:

bash 复制代码
cd /opt/lims3.0-test/lims-3.0-sdfrd/wuk-lims3.0/service

APP_DIR=$(pwd)
INNER_PATH=$(unzip -Z1 wuk-lims3.0.jar | grep 'nf-test-3.0.0.jar' | head -n 1)

echo "内部包路径:$INNER_PATH"

test -f wuk-lims3.0.jar || { echo "主包不存在"; exit 1; }
test -f nf-test-3.0.0.jar || { echo "新 nf-test 包不存在"; exit 1; }
test -n "$INNER_PATH" || { echo "主包内没有找到 nf-test 包"; exit 1; }

sh stop.sh
sleep 5

pgrep -af 'wuk-lims3.0.jar'

BACKUP="wuk-lims3.0.jar.backup_$(date +%Y%m%d_%H%M%S)"
cp -a wuk-lims3.0.jar "$BACKUP"
cp -a wuk-lims3.0.jar wuk-lims3.0.jar.new

TMP_DIR=$(mktemp -d)
mkdir -p "$TMP_DIR/$(dirname "$INNER_PATH")"
cp -a nf-test-3.0.0.jar "$TMP_DIR/$INNER_PATH"

zip -d "$APP_DIR/wuk-lims3.0.jar.new" "$INNER_PATH"

cd "$TMP_DIR"
zip -0 "$APP_DIR/wuk-lims3.0.jar.new" "$INNER_PATH"
cd "$APP_DIR"

unzip -t wuk-lims3.0.jar.new

NEW_MD5=$(md5sum nf-test-3.0.0.jar | awk '{print $1}')
INNER_MD5=$(unzip -p wuk-lims3.0.jar.new "$INNER_PATH" | md5sum | awk '{print $1}')

echo "外部新包:$NEW_MD5"
echo "内部新包:$INNER_MD5"

if [ "$NEW_MD5" != "$INNER_MD5" ]; then
    echo "MD5 校验失败,停止替换"
    exit 1
fi

mv -f wuk-lims3.0.jar.new wuk-lims3.0.jar
rm -rf "$TMP_DIR"

sh start.sh
sleep 10

pgrep -af 'wuk-lims3.0.jar'
tail -n 200 server.log

启动失败时回滚

停止服务:

bash 复制代码
sh stop.sh

查看备份:

bash 复制代码
ls -lht wuk-lims3.0.jar.backup_*

自动选择最新备份:

bash 复制代码
LATEST_BACKUP=$(ls -1t wuk-lims3.0.jar.backup_* | head -n 1)
echo "$LATEST_BACKUP"

恢复:

bash 复制代码
cp -a "$LATEST_BACKUP" wuk-lims3.0.jar

重新启动:

bash 复制代码
sh start.sh
sleep 10
pgrep -af 'wuk-lims3.0.jar'
tail -n 200 server.log
相关推荐
苍狗T5 小时前
k8s 控制器管理
linux·运维·云原生·容器·kubernetes
Linux运维技术栈5 小时前
筑牢业务信息安全防线:雷池WAF+后端日志溯源的全链路防护体系落地实践
linux·安全·雷池
笨笨饿5 小时前
#121_图传中的H.364编码与MP4的联系
linux·运维·前端·单片机·嵌入式硬件·面试·职场和发展
Tanner_SL5 小时前
Linux笔记之GIT常用命令
linux·git
GeW6 小时前
RHCE通关"捷径":实战经验+应试技巧双管齐下
linux
小HANN6 小时前
高可用架构实战:Keepalived+LVS(DR)+MariaDB主主集群搭建指南
linux·运维·服务器·经验分享
不会就选b6 小时前
Linux之线程池(三)
linux·开发语言
Sylvia-girl6 小时前
【一】:Linux基础指令
linux·运维·服务器
0+1116 小时前
Linux --基础IO
linux·运维·服务器
M78佐菲7 小时前
Linux多线程:创建、回收与互斥同步
linux·笔记·学习·算法