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

一、tomcat下的war包的项目

cd /var/lib/tomcat9
root:/var/lib/tomcat9# ls webapps/
test  test.war  test.war-bak  ROOT

systemctl 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.sh


cd /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.jar

cd /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 images

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

docker 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
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐