BWH Compass

Tomcat 部署 Java Web 应用

Tomcat 版本需要与 Java 版本及应用使用的 Servlet API 匹配。旧应用的 javax 与新环境的 jakarta 迁移可能需要改代码。

BWH Compass 编辑整理更新于 约 4 分钟阅读

1. 先匹配应用、Java 和 Tomcat#

Tomcat 运行 Java Web 应用,不是完整的所有 Jakarta EE 服务集合。先查看项目使用的 Servlet/Jakarta API、Java 版本和打包方式,再选择官方仍支持的 Tomcat 系列。

旧应用使用 javax.*,新 Jakarta 应用使用 jakarta.*,不能只把 WAR 放进更高版本就认为一定兼容。Tomcat 11 需要 Java 17 或更高,具体应用依赖还可能要求更高版本;以官方版本对照表和应用说明一起核对。

bash
java -version

2. 下载官方发行包并隔离运行用户#

从 Apache Tomcat 官方下载页选择匹配版本,核对签名或校验值,解压到独立版本目录。给 Tomcat 创建无 sudo 权限的服务用户,仅授予所需目录读写权限,不用 root 长期运行 Web 应用。

区分 CATALINA_HOME(软件安装)与 CATALINA_BASE(实例配置和运行数据)有助于升级。至少记录 conf、webapps、logs 与应用上传目录,避免更新软件时覆盖业务文件。

3. 先在本地端口启动测试#

检查 conf/server.xml 中 HTTP Connector 的端口与绑定地址。由本机反向代理接入时,可让应用端口只监听回环地址;不要把管理器、示例应用和调试端口全部开放。

bash
/opt/tomcat/bin/catalina.sh run

路径按实际安装目录替换。前台模式便于第一次看启动日志;看到启动完成后,从服务器请求配置的本地端口,确认返回预期内容。端口冲突、Java 不匹配和目录权限错误应先修复。

4. 部署 WAR 并确认上下文路径#

把经过构建和测试的 WAR 放到该实例约定的部署目录,使用应用发布流程完成更新。myapp.war 常对应 /myapp/,根路径部署有专门命名与配置规则,不要因为访问 / 没看到应用就判定部署失败。

数据库连接、环境变量和上传目录应独立配置,秘密不打进 WAR。生产中限制或移除不需要的示例与管理应用;需要管理器时使用受限账户和网络访问范围。

5. 配置服务与 HTTPS 反向代理#

使用 systemd 以前台方式管理 catalina.sh run,设置专用用户、JAVA_HOME 和内存参数。JVM 堆大小只是进程内存的一部分,还需给线程栈、直接内存和系统留余量。

反向代理将 HTTPS 转发给本地 Tomcat,按官方代理说明配置协议、主机和客户端信息,避免生成错误的 HTTP 链接或重定向循环。不要直接信任任意客户端传入的转发头。

6. 更新时验证应用与数据#

测试登录、数据库读写、文件上传、长请求和错误页面,再验证重启恢复。升级 Tomcat 前记录旧版本、配置差异和 WAR,阅读迁移说明;应用数据库变更需要独立备份与回退。

日志应轮转,管理凭据定期维护。通用部署方法见后台服务HTTPS备份恢复

完成后检查

测试应用重启和主机重启,确认日志位置、配置备份和回滚包都已保存。

官方资料与相关入口