一、升级前准备
$CATALINA_HOME/bin/version.sh(如/usr/local/apache-tomcat/bin/version.sh),输出结果会明确显示当前Tomcat版本号(如Apache Tomcat/9.0.62),确认当前版本是升级的基础。https://tomcat.apache.org/download-<version>.cgi,如9.x版本对应download-90.cgi),下载所需版本的二进制发行版(优先选择tar.gz格式,Linux系统兼容性更好)。使用wget命令下载(例如wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.93/bin/apache-tomcat-9.0.93.tar.gz)。mkdir -p /usr/local/tomcat-backup(路径可根据实际情况调整);cp -Rf $CATALINA_HOME/* /usr/local/tomcat-backup/(如/usr/local/apache-tomcat/*);conf/server.xml、conf/web.xml、conf/context.xml、conf/tomcat-users.xml等)、Web应用(webapps/目录下的.war文件或解压后的应用文件夹)、日志(logs/目录)及数据库连接信息(如context.xml中的JDBC配置)。systemctl或service管理),执行:systemctl stop tomcat(或service tomcat stop);startup.sh启动,进入$CATALINA_HOME/bin目录,执行:./shutdown.sh;ps -ef | grep tomcat,若无org.apache.catalina.startup.Bootstrap进程则表示已停止。二、执行升级操作
mv $CATALINA_HOME /usr/local/apache-tomcat-old),方便后续回滚。/usr/local/),执行:tar -zxvf apache-tomcat-9.0.93.tar.gz -C /usr/local/;
解压后,将目录重命名为标准名称(如mv /usr/local/apache-tomcat-9.0.93 /usr/local/apache-tomcat),保持路径一致性。conf/目录内容复制到新Tomcat的conf/目录(cp -Rf /usr/local/tomcat-backup/conf/* /usr/local/apache-tomcat/conf/);webapps/目录内容复制到新Tomcat的webapps/目录(cp -Rf /usr/local/tomcat-backup/webapps/* /usr/local/apache-tomcat/webapps/);webapps/目录下的默认应用(如docs/、examples/、manager/、host-manager/),提升安全性(rm -rf /usr/local/apache-tomcat/webapps/{docs,examples,manager,host-manager})。bin/目录下的脚本添加可执行权限(chmod +x /usr/local/apache-tomcat/bin/*.sh),避免启动时出现“Permission denied”错误。bin/目录,执行:./startup.sh;
查看启动日志:tail -f ../logs/catalina.out,确认无错误信息(如Server startup in [xxx] milliseconds表示启动成功)。三、升级后验证
http://<服务器IP>:8080(若端口未修改),若看到Tomcat默认欢迎页面,说明基础服务正常。http://<服务器IP>:8080/your-app),验证功能是否正常(如登录、数据查询、接口调用等)。logs/catalina.out(启动日志)、logs/localhost.<date>.log(应用日志),确认无ERROR或SEVERE级别的错误信息。四、回滚方案(可选但必要) 若升级后出现无法解决的问题(如应用无法启动、配置错误),可快速回滚到旧版本:
systemctl stop tomcat(或./shutdown.sh);rm -rf /usr/local/apache-tomcat;mv /usr/local/apache-tomcat-old /usr/local/apache-tomcat;./startup.sh;五、注意事项
java -version检查当前Java版本,若不符合要求,需先升级Java。server.xml中的<Connector>参数),需对比新旧版本的conf/目录,手动合并自定义配置(如端口号、线程池设置、虚拟主机配置等),避免直接覆盖导致配置丢失。javax.servlet改为jakarta.servlet,针对Tomcat 10及以上版本)。/usr/local/apache-tomcat-old迁移到/usr/local/apache-tomcat),需更新系统环境变量:
/etc/profile.d/tomcat.sh(或~/.bashrc),修改CATALINA_HOME和CATALINA_BASE的值(如export CATALINA_HOME=/usr/local/apache-tomcat);source /etc/profile.d/tomcat.sh使变量生效。