Tomcat 是 Apache 软件基金会开发的 开源轻量级 Java Web 应用服务器。
核心定位是 Servlet 容器(兼容 Java Servlet、JSP 规范),同时具备基础 Web 服务器功能。
它是 Java Web 开发与部署的核心工具之一,广泛应用于开发测试环境和中小型生产环境,也是运维工程师在 Java 架构中常用的基础组件。
Tomcat是什么?
-
核心本质:
- 实现了 Java EE(Jakarta EE)规范中的 Servlet/JSP 容器 功能,负责解析和运行 Java 编写的动态 Web 应用(如 Spring Boot、SSH 框架开发的应用)。
- 兼具轻量级 Web 服务器能力,可直接处理 HTTP 请求(静态资源 + 动态请求),也可与 Nginx、Apache 等反向代理服务器配合使用。
-
核心特性:
- 开源免费,基于 Apache 许可证分发,无商业版权限制。
- 跨平台(支持 Linux、Windows、macOS),依赖 Java 运行环境(JRE/JDK)。
- 轻量高效,部署简单,内存占用低(对比 JBoss、WebLogic 等重型应用服务器)。
- 支持集群、负载均衡、SSL 加密、虚拟主机等企业级特性。
Tomcat 可以做什么?
1. 部署运行 Java Web 应用
- 核心功能:解析并运行
.war格式的 Java Web 应用包(如 Spring Boot 打包后的应用),处理动态请求(如用户登录、数据查询等)。 - 示例:将开发完成的电商网站(Java 编写)打包为
shop.war,放入 Tomcat 的webapps目录,启动 Tomcat 后即可通过浏览器访问该网站。
2. 处理 HTTP 请求与资源映射
- 静态资源服务:直接部署 HTML、CSS、JS、图片等静态文件(适合小型场景,生产环境建议搭配 Nginx 处理静态资源以提升性能)。
- 动态请求转发:将动态请求(如
/user/login)转发给对应的 Servlet/JSP 组件处理,与数据库交互后返回结果(如登录验证、数据查询响应)。
3. 配置虚拟主机与多应用部署
- 虚拟主机:在同一台 Tomcat 服务器上配置多个域名(如
app1.example.com、app2.example.com),分别对应不同的 Web 应用,实现 "一台服务器运行多个网站"。 - 多应用隔离:通过
webapps目录或配置文件,独立部署多个 Web 应用,互不干扰(如同时部署后台管理系统、用户前台系统)。
4. 集群与高可用部署
- 支持基于
mod_jk、mod_proxy或 Tomcat 内置集群组件(Cluster)搭建多节点集群,配合 LVS、Nginx 实现负载均衡,提升应用可用性和并发处理能力。 - 示例:2 台 Tomcat 节点部署相同应用,前端用 Nginx 反向代理分发请求,避免单点故障。
5. 安全配置与扩展
- SSL/TLS 加密:配置 HTTPS 协议,通过
server.xml配置证书,保障数据传输安全(如用户密码、支付信息加密)。 - 权限控制:通过
tomcat-users.xml配置管理账号,控制对 Tomcat 管理后台(如 Manager App、Host Manager)的访问权限。 - 插件扩展:支持自定义 Valve(阀门)、Listener(监听器),实现日志增强、请求过滤、性能监控等功能。
Tomcat 有什么用?(实际应用价值)
1. 开发测试环境必备
- Java 开发者的首选本地服务器:快速启动、配置简单,支持热部署(修改代码后无需重启服务器即可生效),大幅提升开发效率。
- 示例:开发者在本地启动 Tomcat,实时调试 Web 应用的接口、页面逻辑,无需部署到远程服务器。
2. 中小型生产环境部署
- 适合并发量适中(如日均 PV 10 万以下)的 Java Web 应用,无需复杂配置即可稳定运行,降低运维成本。
- 优势:资源占用低(默认内存占用几百 MB),部署流程简单(上传 WAR 包即可),适合中小团队或初创企业。
3. 大型架构中的基础组件
- 作为 "应用容器" 与反向代理、负载均衡组件配合,构建高可用、高并发架构:
- 前端:Nginx 处理静态资源、分发请求、SSL 卸载。
- 后端:多台 Tomcat 节点部署应用,通过集群实现负载均衡和故障转移。
- 示例:电商平台高峰期(如双 11),通过 Nginx + Tomcat 集群承载高并发请求,避免单节点压力过大。
4. 集成第三方工具实现监控与运维
- 配合监控工具(如 Zabbix、Prometheus + Grafana)监控 Tomcat 运行状态(内存占用、线程数、请求响应时间)。
- 结合日志分析工具(如 ELK 栈)收集 Tomcat 访问日志、错误日志,进行问题排查和性能优化。
Tomcat 完整部署教程
Tomcat 部署的核心流程是:搭建 JDK 依赖环境 → 准备 Tomcat 服务 → 部署应用 → 配置优化,以下是分步详解,兼顾 Linux/Windows 系统,包含可直接复用的模板和配置说明。
JDK 依赖环境(必须先完成)
Tomcat 是 Java 开发的服务器,必须依赖 JDK/JRE 运行,且版本需匹配(关键!版本不匹配会导致启动失败)。
版本匹配规则(核心避坑点)

JDK 安装与环境变量配置
Linux 系统(以 CentOS 7 为例)
从 Oracle 官网(需注册)或 OpenJDK 下载:wget https://download.oracle.com/java/1.8.0/latest/jdk-8uXXX-linux-x64.tar.gz
或用
yum install -y java-1.8.0-openjdk-devel
解压并配置环境变量
解压到指定目录:tar -zxvf jdk-8uXXX-linux-x64.tar.gz -C /usr/local/重命名(方便后续操作):mv /usr/local/jdk1.8.0_XXX /usr/local/jdk8
配置环境变量(全局生效):编辑 /etc/profile 文件:vim /etc/profile,在文件末尾添加以下内容:
3. 生效配置并验证:source /etc/profile(立即生效)验证:java -version,输出如下则成 功:
Tomcat 服务准备(安装 + 启动 + 验证)
下载 Tomcat
apache-tomcat-8.5.XXX.tar.gz(压缩包)
官网地址:https://tomcat.apache.org/download-80.cgi
安装与目录结构
解压到 /usr/local 目录
tar -zxvf apache-tomcat-8.5.XXX.tar.gz -C /usr/local/
重命名(简化路径):mv /usr/local/apache-tomcat-8.5.XXX /usr/local/tomcat8
核心目录解释(后续部署 / 配置需用到)

启动 Tomcat:进入 bin 目录:cd /usr/local/tomcat8/bin启动:./startup.sh(或 sh startup.sh)验证启动:ps -ef | grep tomcat(能看到进程)或 netstat -tuln | grep 8080(8080 端口被占用)
防火墙开放 8080 端口(否则外部无法访问):firewall-cmd --add-port=8080/tcp --permanent(永久开放)firewall-cmd --reload(生效配置)
验证 Tomcat 服务
http://服务器IP:8080(Linux 用服务器公网 / 内网 IP)
若出现 Tomcat 欢迎页(有 "Apache Tomcat" 字样),说明服务准备完成!
部署模板案例
适用场景:
开发好的 Java Web 应用(如 Spring Boot、SSH 框架项目),打包为 .war 格式(Spring Boot 需修改 pom.xml 打包为 WAR,而非 JAR)。
部署步骤:
准备 WAR 包(示例:myapp.war,假设是一个用户管理系统)。
上传 WAR 包到 webapps 目录:
##### Linux:`cp /root/myapp.war /usr/local/tomcat8/webapps/`
##### Windows:复制 `myapp.war` 到 `D:\tomcat8\webapps\`
自动部署:Tomcat 会自动解压 myapp.war 为 myapp 目录(无需手动解压)。
访问应用:http://IP:8080/myapp(路径为 WAR 包名,若 WAR 包名为 ROOT.war,则直接访问 http://IP:8080)。
示例解释:
为什么放 webapps?Tomcat 默认监控该目录,新增 WAR 包会自动部署,修改后会热更新(开发环境常用)。
若部署失败:查看 logs/catalina.out 日志,常见原因是 JDK 版本不匹配、WAR 包损坏、端口被占用。
部署静态资源(HTML/CSS/JS/ 图片,静态网站)
部署步骤
在 webapps 目录下创建应用目录(如 static-web):
mkdir /usr/local/tomcat8/webapps/static-web
上传静态资源到 static-web 目录(如 index.html、css/style.css、images/logo.png)。
访问静态网站:http://IP:8080/static-web(自动访问 index.html,即欢迎页)。
优化:设置默认访问路径(无需输入应用名)
若想直接访问 http://IP:8080 打开静态网站,有 2 种方式:
把静态资源直接放到 webapps/ROOT 目录(覆盖默认欢迎页)。
修改配置文件(推荐,不影响默认应用):在 conf/server.xml 中配置虚拟主机(下文第 4 部分详细讲)。
示例解释:
静态资源部署无需额外依赖,Tomcat 自带 Web 服务器功能,可直接处理 HTML/CSS 等请求。
生产环境建议:静态资源优先用 Nginx 处理(性能更好),Tomcat 只处理动态请求(动静分离架构)。
核心配置区域与参数详解(关键!)
Tomcat 配置集中在 conf 目录,以下是最常用的配置文件、配置区域、参数含义,以及优化建议。
核心配置文件:conf/server.xml(最常用)
作用:配置端口、连接器、虚拟主机、集群等,修改后需重启 Tomcat 生效(systemctl restart tomcat)。
配置区域 1:HTTP 连接器(端口、并发参数)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
acceptCount="100"/>

配置区域 2:虚拟主机(多应用 / 多域名部署)
默认虚拟主机配置如下,可新增虚拟主机实现 "一台 Tomcat 运行多个网站":
示例:新增虚拟主机(部署 2 个网站)
需求:用 app1.example.com 访问 webapps/app1 应用,app2.example.com 访问 webapps/app2 应用。新增 <Host> 节点(放在 <Engine> 标签内,与默认 localhost 主机同级):

参数解释:
name:域名(需在 DNS 解析到 Tomcat 服务器 IP)。
docBase:应用目录(webapps 下的子目录名)。
path="":访问路径为空(即直接用域名访问,无需加 /app1)。
reloadable="false":关闭自动重载(生产环境建议关闭,提升性能)。
核心配置文件:conf/web.xml(应用全局配置)
作用:配置 MIME 类型、欢迎页、Servlet 映射、文件上传大小限制等。
配置区域 1:文件上传大小限制(解决 "上传大文件失败")
默认 Tomcat 限制上传文件大小为 2MB,需手动添加配置:
在 <web-app> 标签内新增:

配置区域 2:MIME 类型(解决 "静态资源下载而非预览")
若访问 .json、.mp4 等文件时出现 "下载" 而非 "预览 / 播放",需添加 MIME 类型映射:
在 <web-app> 标签内的 <mime-mapping> 节点后新增:

核心配置文件:conf/tomcat-users.xml(管理后台账号)
作用:配置 Tomcat 管理后台(http://IP:8080/manager/html)的登录账号和权限(部署 / 管理应用用)。
默认配置是空的,需手动添加用户:在 <tomcat-users> 标签内新增:

配置后重启 Tomcat,访问 http://IP:8080/manager/html,用 admin/123456 登录,可在线部署 / 卸载 WAR 包。
常见问题排查(部署 / 配置时必看)
Tomcat 启动失败 :查看 logs/catalina.out 日志,常见原因:
##### JDK 环境变量未配置(`java -version` 报错)。
##### 端口被占用(8080 被其他程序占用,修改 `server.xml` 中的 `port`)。
##### 配置文件语法错误(`server.xml` 标签未闭合,需检查 XML 格式)。
-
应用访问 404:
确认 WAR 包已解压(
webapps下有对应的目录)。访问路径错误(如 WAR 包名是
myapp.war,访问路径是http://IP:8080/myapp,而非http://IP:8080)。应用本身报错(查看
logs/catalina.out中的应用日志)。 -
文件上传失败:
未配置
web.xml中的文件大小限制(参考 4.2 配置)。服务器磁盘空间不足(
df -h查看 Linux 磁盘,Windows 查看磁盘容量)。


