一、 升级背景
-
目标:修复 Tomcat 8.5 存在的认证绕过高危漏洞(CVE-2026-101296)。
-
环境:CentOS 7.5,JDK 1.8,多实例部署(涉及 3100、9888、9666、8888、5200 等多个端口)。
-
结论 :由于 Tomcat 8.5 已停止维护(EOL),无官方补丁,直接替换部署 Tomcat 9.0.123 是最佳方案。
二、 前期准备与磁盘避坑
-
停服 :进入旧 Tomcat
bin目录执行./shutdown.sh,并用ps -ef | grep tomcat确认进程已退出。 -
磁盘排查 :使用
df -h检查空间。发现/home分区占用高达 98%(/home/mydata占用 38G)。 -
调整部署策略 :为避免磁盘爆满,将新版 Tomcat 及备份文件统一放到根目录
/opt下(根目录有 19G 可用空间)。
三、 备份与部署新版本
-
精简备份(防空间不足) :
使用
tar排除无用临时文件进行打包备份,并输出到/opt:bash
复制
下载
cd /home/nbacheng tar -zcvf /opt/tomcat-jeecg-3100-backup.tar.gz \ --exclude='tomcat-jeecg-3100/logs' \ --exclude='tomcat-jeecg-3100/work' \ --exclude='tomcat-jeecg-3100/temp' \ tomcat-jeecg-3100 -
解压并赋权:
bash
复制
下载
sudo tar -zxvf /opt/apache-tomcat-9.0.123.tar.gz -C /opt/ sudo mv /opt/apache-tomcat-9.0.123 /opt/tomcat-jeecg-9 # 必须赋予运行用户完全权限,否则启动报错 sudo chown -R nbacheng:nbacheng /opt/tomcat-jeecg-9
四、 核心配置迁移(server.xml 排雷清单)
千万不要直接覆盖旧配置文件,而是以 Tomcat 9 自带为基础,将业务配置(端口、Host 等)迁移过去,并重点修正以下 6 个兼容性问题:
-
修复拼写错误 :
maxTreads必须改为maxThreads(旧配置少了一个h)。 -
删除废弃属性 :Tomcat 9 已彻底移除
maxProcessors和minProcessors,保留会报 Warning。 -
开启线程池 :旧配置的
<Connector>引用了executor="tomcatThreadPool",但<Executor>被注释掉了,导致启动失败。必须取消<Executor>的注释并配置具体参数。 -
修正压缩类型拼写 :
compressableMimeType必须改为compressibleMimeType(把a改成i)。 -
AJP 安全限制 :Tomcat 9 要求 AJP 必须带密钥,否则启动报错。在内网或反代场景下,需给 AJP
<Connector>添加secretRequired="false"。 -
取消 APR 监听器 :若系统未安装 APR 库,需注释掉
AprLifecycleListener,防止日志报错。
五、 应用与参数迁移
-
迁移代码 :将旧版
webapps下的业务包(ROOT或*.war)拷入新版webapps中。切勿拷贝 Tomcat 9 自带的docs和examples,以减少安全风险。 -
迁移环境变量 :若旧版
bin目录下有setenv.sh(配置了 JVM 堆内存等参数),直接复制到新版bin目录下。
六、 启动验证与收尾
-
启动测试:
bash
复制
下载
cd /opt/tomcat-jeecg-9/bin ./startup.sh tail -f ../logs/catalina.out -
验证 :看到
Server startup in xxx ms且无严重报错,通过浏览器访问对应端口验证业务功能。 -
清理旧版 :确认新服务运行正常后,彻底停掉旧服务 。对旧目录执行改名或删除(如
mv tomcat-jeecg-3100 tomcat-jeecg-3100.old),防止日后误启动导致漏洞复发。 -
更新 Systemd(可选) :如果使用了
systemctl管理服务,需修改/etc/systemd/system/tomcat.service中的路径,并执行systemctl daemon-reload。
💡 经验沉淀
-
多实例升级 :此环境包含多个 Tomcat 实例,只需针对每个实例的
server.xml按上述 6 点排雷,并修改对应的 HTTP 端口、AJP 端口和 Server 端口即可复用此流程。 -
权限陷阱 :在 Linux 下迁移服务,最容易忽略的就是新目录的
chown权限(属主、属组),遇到启动报错第一时间检查ls -l。 -
磁盘陷阱 :备份前务必看
df -h,大文件备份尽量使用tar排除logs、work等垃圾目录。
记录人:nbacheng | 时间:2026-10-23 | 适用场景:Tomcat 8.5.x -> 9.0.123 跨版本安全升级
本回答由 AI 生成,内容仅供参考,请仔细甄别