Tomcat 基础
Apache Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器,用于部署和运行 Java Web 应用。
一、端口说明
Tomcat 默认监听以下端口:
| 端口 | 协议 | 用途 | 安全建议 |
|---|---|---|---|
| 8080/tcp | HTTP | 接收 HTTP 访问请求 | 默认对外开放 |
| 8443/tcp | HTTPS | 接收 HTTPS(HTTP+SSL)访问请求 | 需配置 SSL 证书 |
| 8009/tcp | AJP | 与其他 HTTP 服务器(如 httpd)通信,接收动态资源请求 | 禁止对客户端开放,仅对指定的 httpd 服务器开放 |
| 8005/tcp | SHUTDOWN | 接收关闭 Tomcat 的命令 | 默认仅侦听 127.0.0.1:8005 |
关闭 Tomcat 的方法:
`ash
安装 telnet
yum install -y telnet
连接 8005 端口并发送关闭指令(大小写敏感)
telnet 127.0.0.1 8005 SHUTDOWN `
二、用户角色说明
| 角色 | 可访问页面 | 说明 |
|---|---|---|
| manager-status | Server Status(服务器状态查看) | 基础监控 |
| manager-gui | Manager APP + Server Status | Web 界面管理应用,不能与 manager-script/jmx 共用 |
| manager-script | 文本界面 + Server Status | 脚本方式管理 |
| manager-jmx | JMX 代理 + Server Status | JMX 监控管理 |
| admin-gui | Host Manager(虚拟主机管理) | 不能与 admin-script 共用 |
| admin-script | 文本界面 | 脚本方式管理 |
三、配置文件详解
3.1 核心配置文件
| 配置文件 | 用途 | 是否动态加载 |
|---|---|---|
| catalina.policy | Java Class 安全策略定义(系统代码、Web 应用、Catalina 权限) | 否 |
| catalina.properties | 标准 Java 属性(安全设置、类加载、类扫描、字符串缓存) | 否 |
| logging.properties | 日志记录功能(阈值、日志位置) | 是 |
| context.xml | 全局上下文对象(虚拟目录、Session 会话保持) | 是,自动重载 |
| server.xml | Tomcat 实例主要配置文件(Catalina 行为) | 否,修改需重启 |
| tomcat-users.xml | 用户、密码、角色信息(认证和授权) | 是 |
| web.xml | 全局 Servlet 容器默认配置(Servlet、Filter、Session、MIME) | 否 |
3.2 server.xml 元素结构
server.xml 是 Tomcat 最重要的配置文件,包含以下核心元素:
Server(根元素) ├── Listener(监听器) ├── GlobalNamingResources(全局命名资源) └── Service(服务) ├── Connector(连接器) └── Engine(引擎) ├── Realm(领域/认证源) ├── Host(虚拟主机) │ ├── Context(上下文) │ └── Valve(阀门) └── ...
各元素说明:
- Server:顶级标签,一个 Server 代表一个 Tomcat 实例(Catalina 实例),可包含一个或多个 Service
- Listener:监听特定事件(如启动/关闭),事件触发时做出响应
- GlobalNamingResources:全局 JNDI 命名资源定义(数据源等)
- Service:一组 Connector + Engine 的组合
- Connector:定义 Tomcat 监听的端口和协议(HTTP/AJP)
- Engine:处理所有 Connector 接收的请求,包含一个或多个 Host
- Realm:用户认证数据库实现,可集成 LDAP、JDBC 等外部认证源
- Host:虚拟主机定义,一个 Engine 可包含多个 Host
- Context:单个 Web 应用的上下文配置
- Valve:插入请求处理管道的组件,用于实现拦截/日志/SSO 等功能
四、发布 War 工程包
Tomcat 支持四种部署方式:
方法 1:Manager APP Web 页面上传
适用场景:通过 Web 方式远程上传 WAR 包。
方法 2:SSH + 手动复制
适用场景:通过 SSH 远程上传 WAR 包。
ash cp app.war $CATALINA_BASE/webapps/
方法 3:Manager APP 指定路径(非 webapps 目录)
适用场景:WAR 包已上传到服务器的非 Tomcat 目录。
- 在 Context Path 栏输入自定义 URL 路径
- 系统自动将 WAR 包复制到 webapps/ 目录并解压部署
方法 4:命令行指定路径
ash curl -u username:password "http://localhost:8080/manager/text/deploy?path=/app&war=file:/path/to/app.war"
五、用户验证机制
| 验证方法 | 名称 | 说明 |
|---|---|---|
| BASIC | 基本验证 | 非 SSL 环境下使用明文密码 |
| DIGEST | 摘要验证 | 非 SSL 环境下使用哈希密码 |
| FORM | 表单验证 | 自定义登录页面,非 SSL 环境使用明文密码 |
| CLIENT-CERT | 客户端证书验证 | 使用客户端证书确认身份,需启用 SSL/TLS |
六、虚拟主机
6.1 作用
当需要部署多个独立网站时,可以采用单服务器多虚拟主机的方式。
6.2 类型
- 相同 IP,不同端口
- 不同 IP,相同端口
- 相同 IP + 端口,不同 Host 头
关联文档
- 20-areas/cloud-native/linux/system/Nginx 基础 — Nginx 反向代理
- 20-areas/cloud-native/programming/java/JVM 内存结构 — JVM 调优
- 面试题/Tomcat 面试题 — Tomcat 高频面试题(待整理)