Tomcat使用教程(超详细)

Tomcat 使用教程(2025-2026 超详细版)

这是一份面向真实使用场景的 Tomcat 教程,尽量覆盖从零安装 → 开发部署 → 生产常见问题 → 优化调优的全流程。

1. Tomcat 目前的版本现状(2025-2026)

Tomcat 版本Servlet / JSP / WebSocket 规范Java 最低版本状态(2025年底)推荐生产使用?备注
9.x4.0 / 2.3 / 1.1Java 8维护中(到 2025.12)可以很多老项目还在用
10.1.x5.0 / 3.1 / 2.0Java 11活跃维护推荐主流过渡版本
11.x6.0 / 4.0 / 2.1Java 17最新稳定版(2025年主流)最推荐Jakarta EE 10,命名空间全面迁移
10.0.x5.0 / 3.1 / 2.0Java 8已停止支持不推荐过渡版本,已 EOL

2025-2026 生产推荐排序
11.x > 10.1.x > 9.0.x(仅遗留系统)

2. 快速开始(最常见的三种安装方式)

方式一:直接下载解压(最常用)

  1. 官网下载:https://tomcat.apache.org/
  • 选 Tomcat 11.x → Binary Distributions → Core → zip 或 tar.gz
  1. 解压到任意目录,例如:
  • Windows:D:\servers\apache-tomcat-11.0.x
  • Linux:/opt/tomcat11
  1. 启动(最简单两种方式)
# Linux / macOS
cd /opt/tomcat11/bin
chmod +x *.sh
./startup.sh

# Windows(双击或命令行)
D:\servers\apache-tomcat-11.0.x\bin\startup.bat
  1. 验证是否启动成功
    浏览器打开:http://localhost:8080
    看到 Tomcat 欢迎页 → 成功

方式二:使用 Docker(开发/测试/CI 首选)

# 快速启动最新 Tomcat 11
docker run -d -p 8080:8080 --name tomcat11 tomcat:11-jdk17

# 挂载本地 war 包(最常用方式)
docker run -d -p 8080:8080 \
  -v /path/to/your-app.war:/usr/local/tomcat/webapps/ROOT.war \
  --name myapp tomcat:11-jdk17

方式三:IDEA / Eclipse 内置 Tomcat(开发阶段最方便)

  • IDEA:Run → Edit Configurations → + → Tomcat Server → Local → 配置 Tomcat 目录即可

3. Tomcat 目录结构详解(必须记住)

目录作用说明生产中是否经常改动
bin启动/关闭脚本、工具(startup.sh、shutdown.sh、catalina.sh 等)偶尔改
conf核心配置文件(最重要!)经常改
libTomcat 共享库(放到这里所有 webapp 都能用)偶尔加 jar
logs日志(catalina.out / localhost_access_log 等)经常看
webapps默认部署目录(ROOT/ 是默认欢迎页)放 war 或解压目录
work工作目录(JSP 编译后的 .java/.class 文件、session 持久化等)可定期清理
temp临时文件目录可定期清理

4. 核心配置文件详解(conf 目录下)

文件名作用生产中最常修改的地方
server.xml主配置文件(端口、连接器、Host 等)Connector 端口、AJP、压缩、线程池、SSL
web.xml默认 web 应用描述符全局 filter、mime-type、welcome-file 等
context.xml全局 context 配置资源定义(JNDI 数据源)、Valve 等
tomcat-users.xml管理后台用户添加 manager-gui / admin-gui 角色用户
catalina.propertiesJVM 属性、包扫描排除等内存设置、共享 loader、JMX 等
logging.properties日志配置改日志级别、格式、输出路径

5. 最常用的 server.xml 修改示例(生产必备)

<!-- 修改 HTTP 端口 + 启用压缩 + 优化线程池 -->
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           compression="on"
           compressionMinSize="2048"
           compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json"
           maxThreads="400"
           minSpareThreads="50"
           acceptCount="100"
           URIEncoding="UTF-8" />

<!-- 启用 AJP(一般配合 Nginx 反代) -->
<Connector protocol="AJP/1.3"
           port="8009"
           address="127.0.0.1"
           secretRequired="false" />   <!-- 生产建议开启 secret -->

<!-- 修改默认应用路径(可选) -->
<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
    <!-- 示例:自定义一个虚拟主机 -->
    <Context path="" docBase="/data/myapp" reloadable="false" />
</Host>

6. 部署方式对比(开发 → 生产)

部署方式命令 / 操作方式热部署?生产推荐?场景说明
直接放 war 到 webappscp app.war /opt/tomcat/webapps/★★★★☆最简单,适合中小项目
解压目录部署unzip app.war -d /opt/tomcat/webapps/ROOT★★★☆☆调试 JSP/配置文件方便
server.xml 中 Context在 conf/server.xml 或 conf/Catalina/localhost/ 下写 Context★★★★★路径与 war 包分离,生产首选
Manager GUI 部署http://localhost:8080/manager/html★★☆☆☆测试环境方便,生产不建议开放
自动部署脚本Jenkins / GitLab CI + rsync / scp自定义★★★★★生产标准做法

7. 生产环境常见优化配置(2025-2026 推荐)

# catalina.sh 或 setenv.sh / setenv.bat 中添加
JAVA_OPTS="$JAVA_OPTS -server"
JAVA_OPTS="$JAVA_OPTS -Xms2g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

server.xml 连接器优化示例(高并发)

<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
           connectionTimeout="20000"
           maxThreads="800"
           minSpareThreads="100"
           acceptCount="1000"
           compression="on"
           compressionMinSize="2048"
           noCompressionUserAgents="gozilla,traviata"
           compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,image/svg+xml"/>

8. 常见问题快速定位口诀

现象优先检查顺序常见原因/解决
8080 端口打不开netstat -tuln / netstat -ano端口被占、防火墙、selinux
启动卡死 / 很久没响应jstack / jmap / 查看 catalina.outJVM 参数不合理、加载大量 jar、死循环
404 / 应用没加载catalina.out / localhost.logwar 包损坏、web.xml 错误、依赖缺失
内存溢出(OOM)-XX:+HeapDumpOnOutOfMemoryError加内存、优化代码、减 session、用连接池
JSP 页面报 500work/Catalina/localhost/ 下看编译错误JSP 语法错、jar 冲突
访问慢jvisualvm / arthas / tomcat manager statusGC 频繁、线程池满、数据库慢、NIO 模型

希望这份内容能覆盖你从学习到上生产的大部分场景。

你现在最想深入了解 Tomcat 的哪一部分?

  • 详细的 server.xml 配置项?
  • 与 Nginx / Apache 反向代理 + HTTPS 配置?
  • 集群 Session 共享方案?
  • JMX 监控 / 性能调优?
  • 还是 Docker + Tomcat 的生产部署最佳实践?

告诉我你的具体需求,我可以继续展开。

文章已创建 4237

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部