# 升级WAR包
本文主要介绍如何升级项目中的war包,分为Linux系统升级war包和windows系统升级war包。
升级war包的主要步骤为:
升级前必读
由于升级过程中系统可能会对表结构或数据进行升级,为了升级过程更稳定,建议先在测试环境进行升级测试,并对生产环境系统以及数据库的默认数据源进行完整备份。
替换WAR包并重启tomcat后,系统会先显示升级确认页面(当新的WAR包版本号的前2位与老版本有变化时才会提示确认页面,第三个版本号变化属于BUG修复并不会提示确认),用户需确认升级版本号是否正确,并输入管理员账号密码后才能开始升级。
# Linux系统升级war包
正常升级war包的时候,应该使用tomcat启动的Linux用户登录,比如succez用户,一般不使用root登录,但是在实际的工作中,使用root用户的情况比较多,所以本文的Linux系统升级war包部分,以root用户为例子升级war包。
# 停止tomcat
查看tomcat进程
TIP
一台Linux服务器可能会存在多个tomcat进程,需要在查询后记录以下两个内容:
- tomcat进程路径
- tomcat进程PID
通过进程路径确认对应的产品目录,确认是否操作此目录的产品项目,通过PID验证、结束进程。
具体查看进程的步骤如下:
- 执行命令查看tomcat进程
ps -ef | grep tomcat
, 控制台会输出tomcat进程信息 - 根据此进程提供的信息可知,系统中运行了一个tomcat进程,tomcat的启动用户为
succez
用户,进程PID为1674
- 根据
-Dcatalina.base=/succezsoft/tomcat
可知此进程的tomcat路径为/succezsoft/tomcat
[root@oracle19c ~]# ps -ef | grep tomcat succez 1674 1 45 14:00 pts/0 00:00:46 /succezsoft/jdk/bin/java -Djava.util.logging.config.file=/succezsoft/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Dsucc.workdir=/succezsoft/workdir -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -DLANG=zh_CN.UTF-8 -server -Xmx1g -Xms1g -XX:+UseG1GC -XX:+AlwaysPreTouch -XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /succezsoft/tomcat/bin/bootstrap.jar:/succezsoft/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/succezsoft/tomcat -Dcatalina.home=/succezsoft/tomcat -Djava.io.tmpdir=/succezsoft/tomcat/temp org.apache.catalina.startup.Bootstrap start root 1822 1613 0 14:02 pts/0 00:00:00 grep --color=auto tomcat
进入tomcat安装目录的bin目录,执行停止程序
cd /succezsoft/tomcat/bin ./shutdown.sh
等待停止程序执行结束后,再次查看tomcat进程
ps -ef | grep tomcat
,如果相同PID的进程依旧存在,可以使用kill命令结束进程kill -9 进程PID
。安全告知
不要一开始就直接使用kill命令,一定先尝试./shutdown.sh之后,无法结束进程,再使用kill命令。
直接kill进程可能导致数据丢失。
清理work目录
进入work目录,删除其中的文件
cd /succezsoft/tomcat/work ls rm -rf Catalina
安全告知
删除之前一定要确认被删除文件的路径是否有错,如果删除了其他文件可能会导致系统运行错误。
此步骤删除的文件是
tomcat/work
目录下的Catalina
文件夹及其中的文件。
# 替换war包
备份旧war包,删除旧war包已解压的的目录
mkdir /succezsoft/tomcat/warbak cd /succezsoft/tomcat/webapps mv ROOT.war /succezsoft/tomcat/warbak rm -rf ROOT
- 第一行命令是创建备份文件夹
- 第二行命令是进入webapps目录
- 第三行命令是将旧war包移动到备份文件夹内
- 第四行命令是删除旧war包的解压文件
具体的旧war包名需要去webapps目录查看,上面的步骤仅作为参考,有时候可能会有两个war包或者包名非ROOT.war,需要根据项目情况进行操作。
上传新的升级war包,并移动到webapps目录
根据项目情况选择上传方式,可以使用XFTP等工具上传,假设上传的目录为
/root
,升级war包名为ROOT.war
,将升级war包移动到/succezsoft/tomcat/webapps
目录。mv /root/ROOT.war /succezsoft/tomcat/webapps
如果升级war包名与旧war包名不一致,要将升级war包名修改成旧war包名,例如旧包名为
succezbi.war
的时候要先进行如下操作。mv /succezsoft/tomcat/webapps/ROOT.war /succezsoft/tomcat/webapps/succezbi.war
更换了新war包之后,要将新war包的权限用户修改成tomcat启动用户。
chown succez:succez /succezsoft/tomcat/webapps/ROOT.war
# 启动tomcat
执行启动程序启动tomcat
先执行命令
su succez
切换到上文说到的tomcat启动用户,再执行下面的命令启动tomcat。cd /succezsoft/tomcat/bin ./startup.sh
再次查看tomcat进程,主要看进程是否正常存活
ps -ef | grep tomcat
。如果没有看到新的tomcat进程,就进入logs目录,查看日志信息
cd /succezsoft/tomcat/logs tail -100f catalina.out
上面的命令是跟踪文件中最后100行的信息,100也可以替换成更大的数字来查看更多的日志行数,看日志中的报错信息,判断无法启动的原因,排查错误之后再次重复上面的步骤启动tomcat。
如果要退出日志查看可以按住键盘上的
Ctrl + C
。
# Windows系统升级war包
本文的Windows系统升级war包指的是在DEMO体验版中升级,如果是自己手动部署的环境要升级war包,步骤也是一样的,只是需要根据自己部署的目录做出调整。
本文演示的步骤中:
- DEMO体验版目录:
D:\SuccBI-standalone-4.1.0
- DEMO体验版tomcat目录:
D:\SuccBI-standalone-4.1.0\server\tomcat
# 停止tomcat
进入DEMO体验版目录中,双击shutdown.bat
执行关闭程序,看到Tomcat shutdown complete
和Press any key to continue . . .
说明tomcat程序已经安全关闭。
这个时候就可以关闭弹出的tomcat和shutdown进程窗口了。
# 替换war包
进入DEMO体验版tomcat目录,创建bak文件夹
进入tomcat目录下的webapps文件夹,删除旧war包解压后的文件夹,并将旧war包移动到bak文件夹内(右键
剪切
移动)将升级war包复制到tomcat目录下的webapps文件夹内
进入tomcat目录下的work文件夹内,删除
Catalina
文件夹
# 启动tomcat
进入DEMO体验版目录中,双击 startup.bat
,会弹出tomcat的程序运行窗口,等待一段时间,看到 Server startup in XXXX ms
,说明tomcat启动成功。
如果程序框闪退或者报错无法继续执行,可以去DEMO体验版tomcat目录下的logs文件夹内,查看 catalina.out
文件,分析日志中显示的问题,探查启动失败的原因,排查错误后再次启动。
# 验证
完成了如上升级war包的操作后(Linux/Windows),还需要对web进行一些简单测试。
- 查看版本号,确认已升级。查看系统版本号详见查看系统信息。
- 简单功能测试。对平时常用的部分测试使用,如果功能完好,没有弹出报错窗口,那就代表本次的升级war包操作成功。
- 包版本回退。如果升级了war包之后出现问题,项目无法使用,可以选择将war包回退到之前的版本。把之前备份的war包重新换回去,步骤与上述升级war包一致,在紧急情况下重新投入使用,等待新war包中出现的问题给出解决方案再升级。