宁波阿成头像

CentOS 7 环境下 Tomcat 8.5 升级至 9.0.123 操作总结

一、 升级背景

  • 目标:修复 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 是最佳方案。

二、 前期准备与磁盘避坑

  1. 停服:进入旧 Tomcat bin 目录执行 ./shutdown.sh,并用 ps -ef | grep tomcat 确认进程已退出。

  2. 磁盘排查:使用 df -h 检查空间。发现 /home 分区占用高达 98%(/home/mydata 占用 38G)。

  3. 调整部署策略:为避免磁盘爆满,将新版 Tomcat 及备份文件统一放到根目录 /opt 下(根目录有 19G 可用空间)。

三、 备份与部署新版本

  1. 精简备份(防空间不足):
    使用 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
  2. 解压并赋权:

    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 个兼容性问题:

  1. 修复拼写错误:maxTreads 必须改为 maxThreads(旧配置少了一个 h)。

  2. 删除废弃属性:Tomcat 9 已彻底移除 maxProcessors 和 minProcessors,保留会报 Warning。

  3. 开启线程池:旧配置的 <Connector> 引用了 executor="tomcatThreadPool",但 <Executor> 被注释掉了,导致启动失败。必须取消 <Executor> 的注释并配置具体参数。

  4. 修正压缩类型拼写:compressableMimeType 必须改为 compressibleMimeType(把 a 改成 i)。

  5. AJP 安全限制:Tomcat 9 要求 AJP 必须带密钥,否则启动报错。在内网或反代场景下,需给 AJP <Connector> 添加 secretRequired="false"。

  6. 取消 APR 监听器:若系统未安装 APR 库,需注释掉 AprLifecycleListener,防止日志报错。

五、 应用与参数迁移

  1. 迁移代码:将旧版 webapps 下的业务包(ROOT 或 *.war)拷入新版 webapps 中。切勿拷贝 Tomcat 9 自带的 docs 和 examples,以减少安全风险。

  2. 迁移环境变量:若旧版 bin 目录下有 setenv.sh(配置了 JVM 堆内存等参数),直接复制到新版 bin 目录下。

六、 启动验证与收尾

  1. 启动测试:

    bash

    复制

    下载

    cd /opt/tomcat-jeecg-9/bin
    ./startup.sh
    tail -f ../logs/catalina.out
  2. 验证:看到 Server startup in xxx ms 且无严重报错,通过浏览器访问对应端口验证业务功能。

  3. 清理旧版:确认新服务运行正常后,彻底停掉旧服务。对旧目录执行改名或删除(如 mv tomcat-jeecg-3100 tomcat-jeecg-3100.old),防止日后误启动导致漏洞复发。

  4. 更新 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 生成,内容仅供参考,请仔细甄别

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/qq_40032778/article/details/168863532

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--