运维java项目的技巧 (war包、jar包、docker环境)

article/2025/10/2 18:34:06

最近上线了修复log4j2漏洞的java项目。小结下系统更新操作过程。

一、tomcat下的war包的项目

cd /var/lib/tomcat9
root:/var/lib/tomcat9# ls webapps/
test  test.war  test.war-bak  ROOTsystemctl stop tomcat9
备份test.war
上传新的test.war
systemctl start tomcat9查看日志如catalina.log 。 做巡检项,访问系统页面。

1.1 修改war包里面的配置文件的操作

一、 在windows使用360压缩打开war包 修改里面的配置文件。
二、使用 vim xx.war 查看修改里面的配置文件 (如 bootstrap.properties 和application-develop.properties )

参考:

https://blog.csdn.net/csdnzouqi/article/details/90169728 mac使用vim命令修改jar包配置文件内容
https://www.cnblogs.com/tonggc1668/p/7519470.html Linux修改war包中文件
https://www.cnblogs.com/lilijun/p/7428376.html Linux修改war包中文件
https://www.orchome.com/703 linux下使用vim修改jar包、war包、zip包内文件内容
Java jar命令 常见用法 https://www.cnblogs.com/dtest/p/4180616.html



二、启动jar包的项目

cd /data/test
ls
application-test.yml  application.yml   test-1.0.1.jar log  nohup.out  restart.shcd /data/test
杀掉test.jar对应的PID  (lsof -i:8080 、 pgrep -f test-1.0.1.jar 、jps -l )
备份旧test-1.0.1.jar
上传新的test-1.0.2.jar
nohup java  -jar  test-1.0.2.jar >nohup.out 2>&1 &     启动。

2.1 关于将配置文件yml放在外面的说法

application-test.yml application.yml test-1.0.1.jar 一起放在当前目录,java -jar启动的时候,会优先加载外面的yml文件,而不是test-1.0.1.jar里面的yml文件。 (算是个优先级的说法把)(这样也方便修改配置文件,不需要 vim test-1.0.1.jar里面的配置文件)

参考:https://blog.csdn.net/weixin_43671737/article/details/119999766
《启动后台 jar 包时,使用指定的外部application.yml》
https://blog.csdn.net/z_ssyy/article/details/105347680
《Springboot命令行配置–spring.config.location配置文件的优先级》

在这里插入图片描述


三、使用docker启动的java项目

cd /data/test
ls
application-prod.yml  application.yaml	customsettings.json  log  reports  stats  system  test-1.0.0.jarcd /data/trlh/hi-repository
备份旧的test-1.0.0.jar 和 stats ,reports, system 三个文件夹
docker stop “tests的dockerID”
上传新的包test-1.0.1.jar
docker start “tests的dockerID”

3.1 docker项目说明

最初搭建是:加载docker镜像 ,并启动。 (dockerfile略)

docker load -i tests.tar
docker imagesdocker run -itd -v /data/test:/etc/test \
-v /data/test:/tests  \
-p 18080:18080  harbor.xxxx/arm64/tests:v1.0.2docker ps 



四、反思与应对

在此过程中可能会遇到:
0、部署之前一定要备份、做系统快照。给自己留个后路、方便回退。

1、在测试环境能正常部署,但到生产环境启动jar包后报错。此时查看报错日志,进行分析。
(可能是配置文件没配对、研发打错包了要更改数据库驱动)
耐心、细心检查配置项。 改完配置后,grep 筛选检查。

2、可参考测试环境与生产环境的配置或者jar包是否有差别,两者之间的配置文件是否有差异项。
因为要部署两台相同的服务(test-web1 ,test-web2),其中一台已经正常启动了,那就scp将好的web1的配置文件复制到web2处。

3、注意查看tar.gz包解压后的属主属组,文件权限。对比原本文件夹的属主属组,如有不同则chown ,chmod处理。

4、每当更新系统包后,要及时同步到本地PC电脑。避免上传错包。(更新包以测试提供的包为准)

5、拟定上线部署系统的顺序。人员安排与分工。提前将包放到服务器。



其他 使用vimgrep 搜索查看jar包中的log4j2字样。

现在的疑惑点就是 (Scan为文件夹)
vim Scan 和 vim Scan.jar , 使用 vimgrep是不同的效果

:vimgrep /log4/ **/.

:vimgrep /log4/ **/*.MF
在这里插入图片描述


http://chatgpt.dhexx.cn/article/g9tAdjin.shtml

相关文章

《Linux运维总结:Windows Server 2012 R2安装JAVA环境》

文章目录 一、部署包下载二、部署步骤总结:整理不易,如果对你有帮助,可否点赞关注一下? 一、部署包下载 链接:https://pan.baidu.com/s/1U2EstyXu_r7_uD0YpERhAQ 提取码:1234二、部署步骤 1、双击运行jdk…

Java对接ansible自动运维化平台

Java对接ansible自动运维化平台实现文件采集分发 经过大量查阅,网上使用Java对接ansible自动运维化平台的示例代码几乎没有,为了方便自己后期巩固以及有需要的小伙伴,特以记录!!! 此次对接主要为以下两个…

java开发和运维的区别

前言 在大型系统中,为了减少数据库压力通常会引入缓存机制,一旦引入缓存又很容易造成缓存和数据库数据不一致,导致用户看到的是旧数据。 为了减少数据不一致的情况,更新缓存和数据库的机制显得尤为重要,接下来带领大家踩踩坑。 Spring 所有的答案在文末展示 Spring 概述…

JAVA开发运维(云基础设备监控)

在大型的商用系统中,经常需要监控云设备的健康状态,性能情况,流量数据等。及时发现系统问题,及时修复,以确保系统的高可用。检查云资源的工作内容主要包括基础监控、主动拨测、用户体验、APM监控、指标体系、业务分析、…

JAVA开发运维(CI/CD)

CI :持续性集成 CD:持续性部署 SIT:系统集成测试 UAT:用户验收测试 研发流程的变化,因为用户永远一开始不知道自己想要什么样的东西,导致了软件无法从一而终的进行设计,用户需要能立刻运行的软件和功能。 &…

Hi,运维,你懂Java吗--No.4:JVM-概述

作为运维,你不一定要会写Java代码,但是一定要懂Java在生产跑起来之后的各种机制。 本文为《Hi,运维,你懂Java吗》系列文章 第四篇,敬请关注后续系列文章 欢迎关注 龙叔运维(公众号) 持续分享运…

JAVA开发与运维(docker运维常规操作)

使用docker来安装软件步骤。 1、先装好docker环境。 1.4 docker环境及部署 1.4.1 版本 Client: Docker Engine – Community version: 20.10.12 Server: Docker Engine – Community version: 20.10.12 1.4.2 部署 1.用yum拉取阿里云镜像: yum-config-manager --add-repo …

JAVA开发运维(扁鹊见齐桓公之系统运维之痛)

引言: 扁鹊见蔡桓公,立有间,扁鹊曰:“君有疾在腠理,不治将恐深。”桓侯曰:“寡人无疾。”扁鹊出,桓侯曰:“医之好治不病以为功!” 居十日,扁鹊复见&#xff0…

死磕原理!java运维工程师做什么

前言 今天中午收到我司安全部发了一封邮件:Jackson存在安全漏洞。查了一下,这件事并不算很新鲜了(已经过了5天的样子),本文来聊聊吧。 说起来还蛮戏剧化:阿里云向Jackson官方提交了一个Jackson序列化安全漏洞。众所周知,在国内关于JSON库使用有两大主要阵营:国际著名…

java项目运维手册

1、生成dump文件 jmap -dump:live,formatb,fileheap-dump-1829.bin 32171 2、查看子文件夹磁盘空间占用情况 du -sh * 3、实时监控gc情况: jstat -gcutil pid interval(ms) 4、开启jmx远程监控: 执行foo.jar启动命令 java -Dcom.sun.management.j…

java运维调优的神器Arthas---入门

Arthas Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题 一、安装启动arthas 1.下载arthas-boot.jar 官网:https://arthas.aliyun.com/doc/quick-start.html Maven下载: com.taobao.arthas arthas-sp…

JAVA开发运维(系统上到生产环境准备工作)

一、前言 java项目在开发环境开发完成,在测试环境测试没有问题后,就需要发布到生产环境,如果系统是对公众的,那就需要很多工作了。比如服务器申请,域名申请,渗透测试,漏洞扫描,公网…

Hi,运维,你懂Java吗-No.1:初识Java

作为运维,你不一定要会写Java代码,但是一定要懂Java在生产跑起来之后的各种机制。 本文为《Hi,运维,你懂Java吗》系列文章 第一篇,敬请关注后续系列文章 欢迎关注 龙叔运维(公众号) 持续分享运…

JAVA开发运维(软件一体化可观测平台的功能)

软件可观测是软件度量的一种。旨在对软件的数字体验、业务运营、网络性能、应用性能、基础设施、IT流程进行监控和数据刻画。使开发人员和运维人员更好的对软件进行优化维护。 一、数字体验: 用户会话 了解用户使用路径,追查使用过程中影响用户体验的…

JAVA开发运维(DevOps过程)

DevOps开发运维的一套方法论。这边文章主要借鉴万达的DevOps的建设过程。谈谈DevOps主要解决那些问题和怎么解决。 DevOps的是一种IT项目开发管理方法论,它旨在提供全面的持续集成、持续交付等能力,并持在续进行过程度量和改进,不断提升 IT 运…

Java项目运维总结记录

一、常见故障 1.1、Java项目CPU耗用突增100%分析定位 1)执行top命令确认当前占用cpu的的java进程;以下是一些快捷键: ?:显示在top当中可以输入的命令 P:以CPU的使用资源排序显示 M:以内存的使用资源排序…

初级车道线检测

前言 上一期的无人驾驶技术入门,我们以障碍物的跟踪为例,介绍了卡尔曼滤波器的原理、公式和代码的编写。接下来的几期无人驾驶技术入门,我会带大家接触无人驾驶技术的另一个重要的领域——计算机视觉。 在无人驾驶技术入门(五&a…

c++ 车道线检测

利用概率霍夫变换,进行车道线的简单检测 1、首先编写一个头文件(也可以在源文件中写一个类,一样的) #ifndef LANE_H //头文件的写法格式 if not define #define LANE_H //_LANE_H_ 为头文件Lane.h的大写,防止被重复…

简述车道线检测

针对车道线检测的任务,我们需要弄清楚几个问题: 1. 车道线的表示形式? 输出类型:掩码/点集/矢量线条实例化:每个车道线是否形成实例分类:是否对车道线进行了分类(单白、双黄等)提前定…

PaddleSeg:车道线检测

向AI转型的程序员都关注了这个号👇👇👇 0.1 任务 要求参赛者利用提供的训练数据,设计一个车道线检测和分类模型,来检测测试数据中车道线的具体位置和类别。样例示范: 0.2 数据集描述 本次赛题数据集包括x张…