Tomcat
概述
Apache Tomcat 是由 Apache 基金会开发的 Servlet 容器(Servlet Container),实现了 Java Servlet 和 JavaServer Pages (JSP) 规范,是一个开源的 Web 应用服务器。
JRE与JDK的区别
- JRE是JAVA运行环境,包含JVM
- JDK是JAVA开发环境,包含JRE
- 如果只运行JAVA代码,则只需要JRE,一般情况下直接安装JDK
版本与规范对应
| Tomcat 版本 | Servlet 规范 | JSP 规范 | JDK 版本 |
|---|---|---|---|
| Tomcat 10.1 | 6.0 | 3.1 | >= 21 |
| Tomcat 10.0 | 6.0 | 3.1 | >= 17 |
| Tomcat 9.x | 4.0 | 2.3 | >= 8 |
| Tomcat 8.5 | 3.1 | 2.3 | >= 7 |
核心组件
Tomcat
├── Server 顶层容器,代表整个 Tomcat 实例
│ └── Service 服务,包含一个或多个 Connector 和一个 Engine
│ ├── Connector 连接器,处理特定协议的请求(HTTP/AJP)
│ └── Engine 引擎,处理来自 Connector 的请求
│ └── Host 虚拟主机
│ └── Context Web 应用上下文
│ └── Wrapper Servlet 包装器目录结构
$CATALINA_HOME/
├── bin/ 启动/关闭脚本
├── conf/ 配置文件
│ ├── server.xml 主配置文件
│ ├── web.xml Web 应用默认配置
│ ├── tomcat-users.xml 用户配置
│ └── catalina.policy 安全策略
├── lib/ 依赖库
├── logs/ 日志目录
├── temp/ 临时文件
├── webapps/ 部署目录
└── work/ 编译缓存(JSP → Servlet)安装与配置
Linux 安装
bash
# 安装jdk
rpm -ivh rpm -ivh jdk-8u181-linux-x64.rpm
# 下载
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.121/bin/apache-tomcat-9.0.121.tar.gz
# 解压
tar -xzf apache-tomcat-9.0.121.tar.gz -C /opt/
# 创建软连接
ln -s apache-tomcat-9.0.121.tar.gz tomcat
# 设置环境变量
export CATALINA_HOME=/opt/tomcat
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk常用配置
修改端口
编辑 conf/server.xml:
xml
<!-- HTTP 连接器 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- AJP 连接器(与 Nginx/IIS 集成时使用) -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />虚拟主机配置
xml
<Host name="www.example.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/app" docBase="/data/app" />
</Host>线程池配置
xml
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="200" minSpareThreads="25" maxQueueSize="100" />
<Connector port="8080" protocol="HTTP/1.1"
executor="tomcatThreadPool"
acceptCount="100"
maxConnections="10000" />部署方式
1. 自动部署
将 WAR 文件放入 webapps/ 目录,Tomcat 自动解压部署。
2. 手动部署
bash
# 使用 manager 应用
curl -u admin:password http://localhost:8080/manager/text/deploy?path=/myapp&war=file:/path/to/app.war
# 热部署(Tomcat 7+)
# 监控 /path/to/ 目录下的 app.war3. 配置文件部署
在 conf/Catalina/localhost/ 下创建 XML 文件:
xml
<!-- conf/Catalina/localhost/myapp.xml -->
<Context docBase="/data/app" path="/myapp" reloadable="true" />与 Nginx 集成
方式一:反向代理(HTTP)
nginx
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}方式二:AJP 协议(性能更优)
nginx
# Nginx 需编译时启用 --with-http_ajp_module
location / {
proxy_pass ajp://127.0.0.1:8009;
}