在Linux环境下升级Tomcat服务器,不仅仅是替换二进制文件,还需要对配置、权限、服务脚本等进行一系列调整,以确保新版本稳定运行并与现有应用兼容。以下为需要修改和检查的关键方面:

1. 备份原有环境
升级前必须完整备份旧的 Tomcat安装目录(通常为 $CATALINA_HOME)以及所有自定义配置文件、webapps 下的应用包、logs 目录和外部依赖库。同时备份环境变量脚本(如 /etc/profile 或 ~/.bashrc 中的 CATALINA_HOME 和 JAVA_HOME 等)。
2. 停止旧版Tomcat服务
使用 shutdown.sh 或 systemctl stop tomcat 停止服务,并通过 ps -ef | grep tomcat 确认进程完全终止。如果有多个实例,需逐一停止。
3. 环境变量与启动脚本修改
下载并解压新版Tomcat后,需要修改系统环境变量,将 CATALINA_HOME 指向新安装目录。若使用 JAVA_HOME 也需确认其指向兼容新版本的JDK(Tomcat 10+ 必须使用 Jakarta EE 9+,通常要求JDK 11及以上)。同时更新用户目录下的 .bashrc 或全局 /etc/profile.d/tomcat.sh 中的路径。若通过 systemd 管理服务,必须修改服务单元文件(如 /etc/systemd/system/tomcat.service)中的 Environment 和 ExecStart、ExecStop 参数,指向新的 catalina.sh 路径,然后执行 systemctl daemon-reload 重载配置。
4. 主配置文件迁移与适配
切勿直接将旧版 conf/server.xml 整体覆盖新版,应先比对差异。新版可能会新增或调整默认的 Connector 属性(如 relaxedQueryChars、allowBackslash 等),需要手动将旧配置中自定义的端口、SSL证书、线程池、Context 虚拟主机等部分合并到新版文件中。同样检查 conf/web.xml,新版默认的 Servlet 和 Filter 定义可能有变化,需保留自定义的 session-config、MIME映射 等。
5. 应用兼容性与类库调整
若从Tomcat 9升级到10及以上版本,注意包命名空间从 javax.* 变更为 jakarta.*,所有基于 Servlet、JSP 的应用都需要重新编译或使用迁移工具。检查 lib 目录下是否放有共享库,如数据库驱动、JDBC 连接池依赖等,需将它们复制到新版对应位置。同时验证 JNDI 数据源配置(在 context.xml 或 server.xml 中)是否与新版本的资源工厂类名兼容。
6. 日志路径和切割策略更新
Tomcat默认日志输出到 $CATALINA_HOME/logs,如果之前通过 logging.properties 或第三方日志框架重定向了路径,需要确认新目录存在且应用有写入权限。同时检查 cron 任务或 logrotate 配置,将旧版日志路径改为新路径。
7. 权限和安全加固
确认新Tomcat目录及文件的所有者为运行服务的系统用户(如 tomcat 或 root 降权后的用户),并赋予合适权限(bin/*.sh 需可执行)。删除新安装目录下自带的 webapps/docs、examples 等非必要应用,设置 umask,并在 server.xml 中禁用不必要的 HTTP方法 和关闭版本信息显示。
8. 启动验证与性能调优
启动新版本Tomcat,观察 catalina.out 日志是否有错误。访问所有web应用确认功能正常,重点关注 Session持久化、WebSocket 连接等。若之前调优过JVM参数(-Xms、-Xmx、垃圾回收器 等),需修改启动脚本或服务单元文件中的 CATALINA_OPTS 环境变量,并验证新版本是否能良好协同这些参数。
总之,Linux上升级Tomcat的核心修改集中在 环境变量、systemd服务文件、配置文件迁移、应用兼容性适配 和 权限与路径更正 五大方面。遵循“备份-停止-对比-合并-验证”的流程可有效降低风险。

查看详情

查看详情