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
相关推荐
fangjianj8 小时前
LAMP 项目部署
linux
mengge.cloud8 小时前
0909华为云计算类综合服务小白实验教程
linux·运维·服务器·网络·华为云·云计算
fangjianj9 小时前
自有服务及软件包
linux
风哥2号10 小时前
数据库教程FGMT03‑生产环境Linux+Oracle19c+ASM安装配置与项目实战
linux·数据库
一木 之林11 小时前
七、一-AI 工程实践、插件化调试与软件交付
java·linux·c++
zhengqweasd11 小时前
Linux网络(一):服务器数据包从网卡到应用程序,完整收包流程详解
linux·服务器·网络
脚踏实地,坚持不懈!11 小时前
Linux 6.18.7 内存分配与回收 —— 代码梳理
linux·运维·网络
byte轻骑兵11 小时前
【BlueZ 】hci 模块:用户态 HCI 层的核心封装与消息处理
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
Android系统攻城狮12 小时前
Linux Gstreamer深度解析之gst_audio_format_build_integer调用流程与实战(十二)
linux·运维·服务器·音视频·车载音视频·gstreamer进阶
吴声子夜歌13 小时前
Shell脚本——流程控制:for循环
linux·运维·shell