CentOS环境下Tomcat如何更新
小樊
49
2026-01-02 04:30:29
CentOS 环境下 Tomcat 升级指南
一 升级策略与准备
- 明确升级类型:优先在同系列内做小版本升级(如 8.5.x → 8.5.y),涉及协议栈或规范变更时再做大版本升级(如 8.5 → 9.0)。小版本升级通常风险更低。
- 兼容性核对:升级前对照官方版本矩阵,确认目标版本与应用的 Servlet/JSP 规范匹配,避免 API 不兼容导致运行异常。
- 变更窗口与回退预案:选择业务低峰期,准备完整回退方案(备份、可快速切回旧实例)。
- 备份关键数据:至少备份 $CATALINA_HOME/conf、$CATALINA_HOME/webapps、$CATALINA_HOME/lib、以及必要的 logs 与自定义脚本。
- 环境确认:确保 JDK 版本满足目标 Tomcat 要求,并统一 JAVA_HOME/CATALINA_HOME 等环境变量。
二 标准升级步骤
- 停服与备份:
- 停止服务:
sudo systemctl stop tomcat(或 $CATALINA_HOME/bin/shutdown.sh)。
- 备份目录:
sudo cp -a $CATALINA_HOME $CATALINA_HOME.bak-$(date +%F);如有自定义配置,一并备份 /etc/tomcat 或 systemd 单元文件。
- 获取并部署新版本:
- 从官网下载所需版本(Core 的 tar.gz),解压到临时目录:
tar -xvzf apache-tomcat-*.tar.gz -C /usr/share/。
- 迁移业务与配置:
- 应用迁移:将旧版 webapps(含 ROOT、业务 war 与解压目录)复制到新版对应目录。
- 配置迁移:按需拷贝 conf/server.xml、conf/context.xml、以及 bin/catalina.sh 等自定义脚本;保留你修改过的端口、线程、连接池、SSL、AJP 等关键配置。
- 使用软链接降低耦合(推荐):
- 将安装目录软链到统一路径(如 /usr/share/tomcat),后续仅替换软链目标即可完成升级:
ln -sfn /usr/share/apache-tomcat-9.0.xx /usr/share/tomcat。
- 更新 systemd 单元(如使用 systemd 管理):
- 编辑 /etc/systemd/system/tomcat.service,将 Environment=CATALINA_HOME=、ExecStart=、ExecStop= 等指向新路径;执行
sudo systemctl daemon-reload。
- 启动与验证:
- 启动:
sudo systemctl start tomcat;查看状态:systemctl status tomcat 与 journalctl -u tomcat -xe。
- 访问验证:
curl http://localhost:8080;核对版本:在 $CATALINA_HOME/bin/version.sh 输出中确认 Server version。
- 回退与清理:
- 异常回退:停止服务、将软链或 CATALINA_HOME 指回备份目录并启动;或直接使用备份实例替换。
- 稳定运行后再清理旧包与临时文件。
三 小版本与大版本差异与注意点
- 小版本就地替换(同系列,如 8.5.x → 8.5.y):常见做法是仅替换 lib/ 目录(必要时连同 bin/),然后启动验证;务必先备份,且确认变更内容不包含破坏性的配置或类库冲突。
- 大版本升级(跨系列,如 8.5 → 9.0):建议全新解压部署并迁移配置与应用;注意 Connector 协议默认值变化(如 HTTP/1.1 在 Tomcat 9 中默认使用 Http11NioProtocol),以及 JSP/Servlet 规范差异对应用的影响。
- 协议与端口:如启用 HTTPS/AJP,核对 server.xml 中的端口与协议、证书路径、以及防火墙策略是否一致。
- 类库与应用依赖:若应用将 JDBC 驱动、加密库等放在 tomcat/lib,需按实际依赖迁移;避免新旧版本 lib/ 冲突。
- 环境变量与脚本:若使用 JAVA_OPTS/CATALINA_OPTS、自定义 setenv.sh 或外部脚本,确保新版本环境与旧版一致或已适配。
四 快速回退方案
- 软链回退:将 /usr/share/tomcat 软链指回旧版本目录,执行
systemctl restart tomcat。
- 目录回退:停止服务,将 $CATALINA_HOME 重命名(如加后缀 .bak),把 $CATALINA_HOME.bak-日期 移回原名,再启动。
- 配置回退:若仅配置变更出错,直接用备份的 conf/ 覆盖新版对应文件后重启。
五 验证清单
- 服务与端口:
systemctl status tomcat 正常,8080/8005/8009(或自定义端口)监听正常。
- 应用可用性:主页可访问,业务 war 解压成功,登录/接口调用正常。
- 日志与告警:检查 catalina.out、应用日志是否有 ClassNotFound、NoSuchMethodError、启动超时等异常。
- 安全与规范:确认运行版本与 JDK 匹配,移除示例应用(如 examples),核对 server.xml 中的 SSL/AJP 与线程池参数。