Ubuntu Tomcat升级步骤详解
小樊
34
2025-12-19 22:24:08
Ubuntu 下 Tomcat 升级步骤详解
一 升级前准备
- 确认当前版本与运行方式
查看版本:在 $CATALINA_HOME/bin 执行 ./version.sh;如通过服务运行,使用 systemctl status tomcat 或 service tomcat status 确认服务名与运行状态。
- 核对 Java 与版本兼容性
Ubuntu 20.04/22.04 常见 OpenJDK 11/17/21。Tomcat 与 JDK 存在对应关系:例如 Tomcat 10.1.x 不再支持 JDK 8,若仍在 JDK 8,应优先选择 Tomcat 9.0.x;升级前务必确认应用与 JDK 的兼容性。
- 规划目录与服务账户
建议将 Tomcat 安装在 /opt/tomcat 或 /usr/local/apache-tomcat,运行用户使用专用的 tomcat 系统账号,便于权限与审计管理。
- 备份关键数据
完整备份 $CATALINA_HOME(或使用 tar 归档),重点包括 conf/、webapps/、logs/,以及自定义的 setenv.sh/bin/setenv.bat、证书与外部依赖配置。
二 标准升级流程
- 下载并校验新版本
从官网下载对应系列的 Core 版本 .tar.gz,使用 sha512sum 校验完整性,避免传输损坏。
- 停止旧实例
优雅停止:$CATALINA_HOME/bin/shutdown.sh;如为服务:systemctl stop tomcat。必要时检查并清理残留进程。
- 备份与重命名旧目录
示例:
- 备份:tar -zcvf /opt/backup/tomcat-$(date +%F).tar.gz -C /opt/tomcat .
- 重命名:mv /opt/tomcat /opt/tomcat-old
- 部署新版本
解压到目标路径(保持与旧版本一致便于无缝切换):
- 示例:tar xzvf apache-tomcat-9.0.93.tar.gz -C /opt
- 若希望目录即为 /opt/tomcat,可使用 –strip-components=1 直接解压到该目录。
- 迁移配置与业务
仅迁移必要内容:
- 配置:conf/(建议先备份新版的 server.xml 再覆盖)
- 应用:webapps/(优先复制你的业务 WAR/目录,避免覆盖新版的默认应用)
- 可选:logs/(便于问题追溯)
- 安全加固:删除或限制访问 docs、examples、manager、host-manager 等默认应用。
- 权限与服务单元
设置目录与脚本权限:chown -R tomcat:tomcat /opt/tomcat;chmod +x /opt/tomcat/bin/*.sh。
如使用 systemd,确保 /etc/systemd/system/tomcat.service 中的 JAVA_HOME、CATALINA_HOME、CATALINA_BASE、User/Group 等指向新路径。
- 启动与验证
启动:systemctl start tomcat 或 $CATALINA_HOME/bin/startup.sh;查看日志:tail -f logs/catalina.out;访问应用与 /manager/status 校验运行状态与线程、内存等关键指标。
三 版本选择与兼容性要点
- 版本矩阵建议
- JDK 8:选择 Tomcat 9.0.x(Tomcat 10.1+ 不支持 JDK 8)
- JDK 11/17/21:选择 Tomcat 10.1.x 或 Tomcat 9.0.x(优先 10.1.x 获取安全修复与新特性)
- 系列内与跨系列升级
- 同系列小版本升级(如 9.0.x → 9.0.y)通常可直接沿用 conf/ 与 webapps/。
- 跨系列升级(如 9 → 10)需评估 JDK 要求、Servlet/JSP 规范变更、废弃/移除特性 与应用的兼容性,先在测试环境验证再上线。
- 常见兼容性报错
出现 “could not create the Java virtual machine” 或启动异常,优先检查 JDK 版本是否满足目标 Tomcat 的要求,再排查内存参数与环境变量。
四 回滚与常见问题处理
- 快速回滚
停止新实例 → 删除新目录 → 恢复原目录(如 mv /opt/tomcat-old /opt/tomcat)→ 启动旧实例;回滚后核对 conf/ 与应用版本是否被意外覆盖。
- 常见问题速查
- 端口占用:检查 server.xml 的 Connector port,以及 netstat -tulpen | grep 8080;必要时调整端口或停用占用进程。
- 启动失败:优先查看 catalina.out 与 localhost..log,定位类加载、JDBC 驱动、内存参数等问题。
- 权限问题:确保 tomcat 用户对 $CATALINA_HOME 及子目录具备 读/执行 权限,日志目录可写。
- 管理端访问:如需使用 /manager 与 /host-manager,请在 tomcat-users.xml 配置角色与强密码,并在对应 META-INF/context.xml 中限制 RemoteAddrValve 的访问网段。