目录
一、Tomcat是什么?
Apache Tomcat是一个开源的Servlet容器,实现了Java Servlet、JSP等规范。根据2023年JetBrains开发者调查报告,超过60%的Java开发者使用Tomcat作为Web服务器。
核心功能:
处理HTTP请求
编译执行JSP页面
管理Servlet生命周期
提供Web应用运行环境
二、快速安装指南
1. 环境准备
JDK 1.8+(建议JDK11)
操作系统:Windows/Linux/macOS
内存:至少2GB可用
2. 下载安装
访问官网下载页面
选择Core分类下的zip/tar.gz包(推荐10.0.x版本)
解压到指定目录(无空格路径)
# Linux示例
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz
tar -zxvf apache-tomcat-10.0.27.tar.gz
3. 验证安装
# 进入bin目录
cd apache-tomcat-10.0.27/bin
# 启动服务器(Windows执行startup.bat)
./startup.sh
# 访问 http://localhost:8080
看到Apache Tomcat欢迎页面即表示安装成功!
三、目录结构解析
├── bin # 启动/关闭脚本
├── conf # 配置文件(server.xml等)
├── lib # 依赖库
├── logs # 日志文件
├── temp # 临时文件
├── webapps # 应用部署目录
└── work # JSP编译文件
四、第一个Web应用部署
1. 创建标准目录结构
MyWebApp/
├── WEB-INF/
│ ├── classes/ # Java类文件
│ ├── lib/ # 依赖JAR包
│ └── web.xml # 部署描述符
└── index.jsp # 入口页面
2. 编写测试JSP
<!-- index.jsp -->
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>我的第一个Tomcat应用</title>
</head>
<body>
<h1><%= new java.util.Date() %></h1>
</body>
</html>
3. 部署方式对比
方式 | 操作步骤 | 适用场景 |
---|---|---|
直接复制 | 将项目文件夹放到webapps目录 | 开发调试 |
WAR包部署 | 打包为MyWebApp.war放入webapps | 生产环境 |
虚拟目录配置 | 修改server.xml添加Context节点 | 自定义路径 |
五、核心配置详解
1. 修改端口号
<!-- conf/server.xml -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
2. 配置虚拟主机
<Host name="www.mysite.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="MyWebApp" />
</Host>
3. JVM参数优化
# bin/setenv.sh(新建)
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
六、常用操作命令
命令 | 作用 |
---|---|
startup.sh | 启动服务器 |
shutdown.sh | 安全关闭 |
catalina.out | 实时查看启动日志 |
manager/html | 网页版管理控制台 |
七、常见问题排查
1. 端口冲突
# Linux查看端口占用
netstat -tunlp | grep 8080
# Windows查看端口占用
netstat -ano | findstr 8080
2. 应用热更新失败
解决方案:
清除work目录缓存
重启Tomcat
检查web.xml配置
3. 内存溢出
错误提示:
java.lang.OutOfMemoryError: Java heap space
处理步骤:
调整JVM参数:-Xmx增大堆内存
使用jmap生成堆转储文件分析
检查是否有内存泄漏
八、最佳实践建议
生产环境必做:
删除webapps下默认应用(docs/examples等)
修改shutdown.sh默认端口(防止恶意关闭)
开启访问日志(conf/server.xml配置AccessLogValve)
安全加固:
<!-- 禁用危险HTTP方法 --> <security-constraint> <web-resource-collection> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>DELETE</http-method> </web-resource-collection> <auth-constraint/> </security-constraint>
性能调优:
启用NIO连接器
合理配置线程池
开启GZIP压缩
九、学习资源推荐
《深入剖析Tomcat》(豆瓣评分8.5)
在线实验平台:Play with Docker
结语:掌握Tomcat是Java Web开发的基石。建议在本地搭建测试环境,通过实际操作加深理解。遇到问题时,多查看logs/catalina.out日志文件,通常能找到关键线索。