Ubuntu 上 Tomcat 版本更新实操指南
一 升级前准备
- 确认当前版本与运行状态:进入旧版 Tomcat 的 bin 目录执行 ./version.sh,并确认进程与端口占用(如 8080)。
- 完整备份:备份整个 Tomcat 目录、应用数据、以及外部依赖(如数据库)。仅迁移必要配置与应用时,至少备份 conf/(如 server.xml、web.xml、tomcat-users.xml)、webapps/、以及自定义的 catalina.sh 等脚本。
- 下载新版本:前往 Apache Tomcat 官网下载所需版本(Linux 通常选择 Core 的 tar.gz 包)。
- 兼容性检查:核对 JDK 版本要求与应用的 Servlet/JSP 规范兼容性,避免跨大版本直接升级;先在测试环境验证。
- 规划切换方式:保持安装路径不变可减少环境变量调整;若更换路径,需同步更新 CATALINA_HOME 等环境变量。
二 标准升级步骤(适用于 tar.gz 手动安装)
- 停止旧实例:进入旧版 bin,执行 ./shutdown.sh;必要时用 ps -ef | grep tomcat 检查残留进程并清理。
- 备份旧环境:将旧版目录重命名或拷贝为备份(如 tomcat.bak_20251129)。
- 安装新版本:将下载的 apache-tomcat-.tar.gz 上传至服务器并解压到目标目录(如 /opt/tomcat 或 /usr/local)。
- 迁移配置与证书:将旧版的 conf/(建议逐项比对后再覆盖)、必要的 webapps/(或仅迁移业务应用)、以及自定义 server.keystore 等迁移到新版对应目录。
- 清理示例与风险应用:删除新版 webapps 下的 examples、docs、manager 等默认应用(生产环境不建议保留)。
- 权限与脚本:确保 bin/*.sh 具备可执行权限(如 chmod +x bin/*.sh)。
- 启动与验证:启动新版 ./startup.sh,查看 logs/catalina.out 与 localhost:8080 是否正常;必要时用 ./version.sh 再次确认版本。
三 使用系统包管理器的注意事项(apt)
- 若通过 apt 安装,优先使用发行版仓库的版本;跨小版本升级通常可直接 apt update && apt full-upgrade。
- 跨大版本或需要特定版本时,建议采用“并行安装新版本 + 迁移配置与应用”的方式,而非覆盖式升级,以降低风险。
- 升级后核对服务单元(如 tomcat9.service)的 CATALINA_HOME、JAVA_HOME、端口 等配置是否正确,必要时使用 systemctl restart tomcat9 重启并观察日志。
四 回滚与常见问题处理
- 快速回滚:停止新版,将备份目录恢复为原 CATALINA_HOME 名称,或调整 CATALINA_HOME 指向备份目录后启动;回滚后重点检查 conf/ 与应用是否一致。
- 启动报错 “Cannot find ./catalina.sh … no execute permission”:执行 chmod +x bin/*.sh 赋予脚本执行权限。
- 端口占用:检查 8080/8005 等端口是否被旧进程或其他服务占用,必要时释放端口或调整 server.xml 中的端口。
- 应用异常:对比新旧 conf/ 差异(如 server.xml 连接器、Valve、Realm 等),逐步恢复自定义配置并查看 catalina.out 定位问题。
五 安全与运维建议
- 升级策略:尽量避免跨大版本直接升级;优先在同大版本内升级到最新的稳定小版本,并在测试环境充分验证。
- 版本暴露:生产环境建议隐藏或伪装 Tomcat 版本信息,降低被针对性攻击的风险。
- 最小化组件:删除或限制 examples、docs、manager 等默认应用,减少攻击面。
- 持续监控:升级后持续关注 logs/ 与访问日志,验证业务功能与性能指标。