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
相关推荐
bosins3 小时前
彻底解决 WSL 2.7+ 空闲自动关闭/内存回收导致 Docker 中断的问题
linux·docker·wsl·dashboard
LongRunning3 小时前
【Linux】H3网络(二)
linux
xx~t5 小时前
嵌入式学习——ARM1
linux·arm开发·嵌入式硬件·arm
xx~t5 小时前
嵌入式——ARM1(详细篇)
linux·arm开发·嵌入式硬件·arm
DYWorker0018 小时前
Linux驱动子系统:DMA-Buf —— Consumer和Provider(008)
linux·驱动开发
雯宝9 小时前
Linux 内核函数集
linux
GeW9 小时前
从挂科到高分通过:RHCE快速拿证的10个提分技巧
linux
鸠摩智首席音效师10 小时前
Linux /etc/nsswitch.conf 文件有什么作用 ?
linux
东城居士10 小时前
理解pinctrl和gpio子系统驱动
linux·嵌入式系统
H_oRIZoN_10 小时前
Linux入门DAY43 ARM 架构基础、寄存器、大小端、异常向量、交叉编译
linux·arm·linux应用编程