
适用版本:Apache Tomcat 10.1.57(生产主流)/ 11.0.24(最新)/ 9.0.121(javax 兼容线)配套 JDK:JDK 21 LTS(推荐生产)/ JDK 17 LTS(保守)/ JDK 25 LTS(新项目)适用系统:RHEL / CentOS / Rocky / Ubuntu(命令基于 RHEL 系验证,Ubuntu 差异处已标注)1. 什么是 Tomcat1.1 概念Apache Tomcat(原名 Jakarta Tomcat,后更名为 Apache Tomcat)是由 Apache 软件基金会(ASF)开发的一款开源、轻量级的 Java Web 应用服务器,也是 Java Servlet、JavaServer Pages(JSP)、Java Expression Language(EL)、Java WebSocket 等规范的标准实现(Reference Implementation)。Tomcat 的本质角色可以这样理解:Servlet 容器:负责加载、初始化、执行 Servlet,并按 Servlet 规范管理其生命周期(init → service → destroy)。JSP 引擎:将 JSP 文件编译为 Servlet 再执行(Jasper 编译器)。HTTP 服务器:内置 HTTP 连接器(Connector),可独立对外提供 Web 服务,也可与 Nginx/Apache 通过 AJP 或反向代理集成。1.2 核心能力能力说明Servlet 容器实现 Servlet 6.0(10.1.x)/ 6.1(11.0.x)/ 4.0(9.0.x)规范JSP 支持Jasper 编译器,支持 JSP 1.2 语法及标签库(JSTL)HTTP/1.1、HTTP/2支持 HTTP/2(h2、h2c),NIO/NIO2/APR 连接器WebSocket实现 Jakarta WebSocket 规范,支持长连接推送集群会话DeltaManager / BackupManager 实现 Session 复制负载均衡配合 Nginx / mod_jk / mod_proxy_ajp 实现虚拟主机基于 Host 的域名多租户部署安全管理Realm 认证、SSL/TLS、Valve 访问控制1.3 常见 Web 服务器对比特性TomcatNginxJettyUndertow定位Java Servlet 容器高性能反向代理/静态服务器轻量级 Servlet 容器嵌入式 Servlet 容器JSP 支持✅ 原生❌✅ 需集成❌静态资源性能一般极强一般一般动态请求处理Java 生态完整需配合 CGI/FastCGIJava 生态Java 生态典型场景企业 Java Web 应用前端入口/负载均衡/缓存微服务/嵌入式Spring Boot 内嵌1.4 适用场景传统 Java Web 应用(SSH/SSM/Spring MVC + JSP)生产部署单体架构 WAR 包应用作为 Spring Boot(外置部署模式)的运行容器企业内部系统、OA、ERP、门户网站与 Nginx 配合构建"静态分离 + 负载均衡"经典架构2. 基本原理与架构2.1 Tomcat 总体架构Tomcat 采用分层组件架构,核心设计思想是"连接器(Connector)与容器(Container)松耦合":2.2 核心组件职责组件说明配置文件位置ServerTomcat 顶层容器,代表整个实例conf/server.xmlServiceServer 下的逻辑服务单元,组合 Connector 与 Engineconf/server.xmlConnector网络连接器,接收请求并转交 Engine。协议:HTTP/1.1、HTTP/2、AJPconf/server.xmlEngineServlet 引擎,负责请求路由(按 Host 分发)conf/server.xmlHost虚拟主机,一个 Engine 可含多个 Hostconf/server.xmlContext一个 Web 应用,对应 webapps 下的一个目录或 WARconf/server.xml / context.xmlValve请求拦截器(管道机制),如 AccessLogValve、RemoteAddrValveconf/server.xmlRealm认证数据源(内存/JDBC/数据源),实现用户认证与授权conf/server.xml2.3 请求处理流程关键点:同一 Servlet 实例被多线程共享,业务代码必须保证线程安全(成员变量注意并发问题)。2.4 JSP 编译执行原理首次访问 JSP 需要编译,会产生明显的"首次访问慢"现象(可预编译规避)。修改 JSP 后默认自动重编译(development 模式),生产建议关闭自动重载。2.5 类加载机制(ClassLoader 双亲委派)特点: - 每个 Web 应用有独立的 ClassLoader,应用间类隔离。 - 打破双亲委派:Webapp ClassLoader 优先加载自身WEB-INF/classes和WEB-INF/lib(Servlet 规范要求)。 - 常见类冲突:多个应用使用不同版本的第三方库时互不影响。3. 环境规划与版本选型3.1 版本选型(2026-08 最新)Tomcat 版本最新发布规范基线Servlet 规范最低 JDK推荐 JDK支持截止适用场景11.0.x11.0.24(2026-07-08)Jakarta EE 11Servlet 6.1JDK 17JDK 21/25长期新项目、全面拥抱 Jakarta10.1.x10.1.57(2026-07-07)Jakarta EE 10Servlet 6.0JDK 11JDK 21长期生产主流推荐9.0.x9.0.121(2026-08-18)Java EE 8Servlet 4.0JDK 8JDK 8/11/172027/3/31存量 javax.* 应用重要提示(javax vs jakarta): - Tomcat 10+ 的包名从javax.servlet.*变更为jakarta.servlet.*,旧应用不迁移无法直接运行。 - 存量项目若无法迁移,请选择Tomcat 9.0.x(2026-08-18 已发布 9.0.121,支持到 2027-03-31)。 - 新项目一律选择Tomcat 10.1.x 或 11.0.x。3.2 JDK 版本选型(LTS)JDK 版本最新版本类型免费支持至选型建议JDK 2525.0.3+9LTS至少 2031-09新项目、追求最新特性JDK 2121.0.11+10LTS至少 2029-12生产推荐(虚拟线程、GC 成熟)JDK 1717.0.19+10LTS至少 2027-10存量升级、保守选择JDK 1111.0.31+11LTS至少 2027-10仅存量系统JDK 88u492LTS至少 2030-12仅老系统(需 Tomcat 9)生产建议:Tomcat 10.1.57 + JDK 21 LTS(Temurin)是最稳妥的组合。 发行版推荐Eclipse Temurin(Adoptium 项目,免费、TCK 认证、社区活跃)。3.3 服务器规划场景配置建议说明单机部署(开发/测试)2C4G,磁盘 40G单实例即可单机部署(小生产)4C8G,磁盘 100G(SSD)单实例,日志单独分区集群部署(中大型生产)4C8G × 3 台,磁盘 200G(SSD)Nginx 负载均衡 + 3 节点 Tomcat + Session 复制高并发生产8C16G × 5+ 台建议 Nginx + 多实例/容器化磁盘规划要点: -/opt:程序安装(建议独立分区) -/data/logs:Tomcat 日志(建议独立分区,防止日志写满系统盘) -/data/backup:应用备份与日志归档3.4 端口规划端口用途默认值说明8080HTTP 连接器8080对外服务端口,可通过 Connector 修改8443HTTPS 连接器8443TLS 加密端口8009AJP 连接器8009与 Apache/Nginx 集成用(生产建议关闭)8005Shutdown 端口8005远程关闭命令端口(生产强烈建议修改/禁用)4. JDK 安装及配置4.1 安装前准备# 检查是否已有 JDK java -version 21 which java # 移除系统自带 OpenJDK(可选,防止干扰,RHEL 系) rpm -qa | grep -i openjdk # yum remove -y java-1.8.0-openjdk* java-11-openjdk* 2/dev/null # 创建安装目录 mkdir -p /opt/java /usr/local/java4.2 下载 JDK 21(Temurin)# 方式一:wget 直连 Adoptium API(自动解析最新版本,建议在机器上下载) # 访问 https://adoptium.net/temurin/releases/?version=21 获取最新版本号 cd /opt/java # 以 jdk-21.0.11+10(2026-04 版本)为例,x64 Linux 版本 wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.11%2B10/OpenJDK21U-jdk_x64_linux_hotspot_21.0.11_10.tar.gz # 方式二:使用 Adoptium API 自动获取(推荐,始终拿到最新) wget -O jdk21.tar.gz "https://api.adoptium.net/v3/binary/latest/21/ga/linux/x64/jdk/hotspot/normal/eclipse" # 方式三:Oracle 官方(商业用途注意许可证) # wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz4.3 解压安装cd /opt/java tar -zxvf jdk-21.0.11_10.tar.gz # 或 tar -zxvf jdk21.tar.gz mv jdk-21.0.11+10 /usr/local/java/jdk21 # 查看解压后的目录名(两种方式都执行确认) ls -la /usr/local/java/4.4 配置环境变量# 编辑 /etc/profile(全局生效) cat /etc/profile 'EOF' # ===== JDK 21 Environment ===== export JAVA_HOME=/usr/local/java/jdk21 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar EOF # 立即生效 source /etc/profile4.5 验证安装java -version # 期望输出: # openjdk version "21.0.11" 2026-04-21 LTS # OpenJDK Runtime Environment Temurin-21.0.11+10 (build 21.0.11+10-LTS) # OpenJDK 64-Bit Server VM Temurin-21.0.11+10 (build 21.0.11+10-LTS, mixed mode, sharing) javac -version echo $JAVA_HOME which java4.6 多 JDK 版本管理(可选)# alternatives 方式管理多版本(RHEL 系) alternatives --install /usr/bin/java java /usr/local/java/jdk21/bin/java 210 alternatives --install /usr/bin/javac javac /usr/local/java/jdk21/bin/javac 210 # 切换版本 alternatives --config java # 查看所有已注册版本 alternatives --list4.7 Ubuntu(Debian 系)安装差异# 方式一:apt 安装(版本可能较旧) sudo apt update sudo apt install -y openjdk-21-jdk # 方式二:手动安装(与 RHEL 流程一致) sudo mkdir -p /usr/local/java sudo tar -zxvf jdk-21.0.11_10.tar.gz -C /usr/local/java/ # 配置环境变量(写入 /etc/profile.d/java.sh) echo 'export JAVA_HOME=/usr/local/java/jdk-21.0.11+10' | sudo tee /etc/profile.d/java.sh echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile.d/java.sh source /etc/profile.d/java.sh4.8 JDK 配置注意事项检查项要求检查命令JAVA_HOME必须指向 JDK 根目录echo $JAVA_HOMEPATH包含 $JAVA_HOME/bin 且在最前echo $PATH版本生产统一版本,杜绝多版本混用java -version架构x64 系统必须装 x64 版本 JDKuname -m权限普通用户可读(部署用户)ls -l $JAVA_HOME时区统一 Asia/Shanghaidate5. Tomcat 安装5.1 创建运行用户(安全最佳实践)# 禁止以 root 运行 Tomcat(重要!) groupadd tomcat useradd -g tomcat -s /sbin/nologin -d /opt/tomcat tomcat5.2 下载 Tomcat# 官方下载地址:https://tomcat.apache.org/download-10.html cd /opt # 方式一:直连官方(10.1.57 示例) wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.57/bin/apache-tomcat-10.1.57.tar.gz # 方式二:国内镜像加速(推荐) wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-10/v10.1.57/bin/apache-tomcat-10.1.57.tar.gz wget https://mirrors.aliyun.com/apache/tomcat/tomcat-10/v10.1.57/bin/apache-tomcat-10.1.57.tar.gz # 校验 SHA512(官方页面提供) sha512sum apache-tomcat-10.1.57.tar.gz