Apache Tomcat下载安装、配置与使用教程(超详细)
前言
Apache Tomcat(简称Tomcat)是一个开源的Servlet容器,实现了Java Servlet和JavaServer Pages(JSP)规范。它由Apache软件基金会维护,是目前最流行的Java Web应用服务器之一。
本文将手把手教你完成Tomcat的完整安装配置流程,并深入讲解日常使用中的各项操作。无论你是Java初学者还是有一定经验的开发者,都能从本文中获得实用的知识。
重要提示: 在安装Tomcat之前,必须确保已安装并配置好Java环境(JDK 8及以上版本),否则Tomcat将无法正常启动。
一、Tomcat简介
1.1 什么是Tomcat
Tomcat是一个轻量级的Web应用服务器,主要用于运行Java编写的Web应用程序。它提供了以下核心功能:
- Servlet容器:运行Java Servlet程序
- JSP引擎:解析和执行JSP页面
- HTTP服务器:处理HTTP请求和响应
- 连接池管理:数据库连接池配置
1.2 Tomcat版本选择
Tomcat目前主要有以下几个活跃版本:
| 版本 | Servlet规范 | JSP规范 | 最低JDK版本 | 适用场景 |
|---|---|---|---|---|
| Tomcat 10.1 | Servlet 6.0 | JSP 3.1 | JDK 11 | 新项目,使用Jakarta EE |
| Tomcat 10.0 | Servlet 5.0 | JSP 3.0 | JDK 8 | 迁移项目 |
| Tomcat 9.0 | Servlet 4.0 | JSP 2.3 | JDK 8 | 稳定生产环境 |
| Tomcat 8.5 | Servlet 3.1 | JSP 2.3 | JDK 7 | 老项目维护 |
注意: Tomcat 10开始,Java EE迁移到了Jakarta EE,包名从 javax.* 改为 jakarta.*,老项目迁移时需要注意兼容性问题。
1.3 Tomcat与JDK版本对应关系
选择Tomcat版本时,需要关注JDK兼容性:
- Tomcat 11.x:需要JDK 17或更高版本
- Tomcat 10.1.x:需要JDK 11或更高版本
- Tomcat 10.0.x / 9.0.x / 8.5.x:需要JDK 8或更高版本
建议新手选择 Tomcat 9.0 或 Tomcat 10.1,这两个版本文档丰富、社区活跃。
二、下载及安装Tomcat
2.1 下载Tomcat
步骤1:访问官网
打开浏览器,访问Tomcat官方下载页面:
https://tomcat.apache.org/download-90.cgi

(将 90 替换为对应版本号,如 101 表示Tomcat 10.1)
步骤2:选择版本
在官网左侧导航栏选择需要下载的版本(如Tomcat 9),进入下载页面后,在 Binary Distributions 区域找到 Core 部分。
步骤3:选择下载包

根据操作系统选择对应的压缩包:
| 操作系统 | 推荐下载包 | 说明 |
|---|---|---|
| Windows 64位 | 64-bit Windows.zip | 最常用,直接解压即可 |
| Windows 32位 | 32-bit Windows.zip | 旧系统使用 |
| Linux/Unix | tar.gz | Linux系统使用 |
| macOS | tar.gz 或 zip | macOS系统使用 |
下载注意事项:
- 下载路径一定要记住,并且路径中尽量不要有中文和空格,避免出现编码问题。
- 建议将Tomcat解压到专门的开发环境目录,如
E:\ENV\apache-tomcat-9.0.80。 - 如果下载速度较慢,可以选择国内的镜像源下载。
步骤4:验证下载完整性(可选)
Tomcat官网提供了SHA-512校验码,下载后可以通过校验码验证文件是否完整:
# Windows PowerShell Get-FileHash apache-tomcat-9.0.80-windows-x64.zip -Algorithm SHA512
2.2 解压安装
Tomcat是绿色软件,无需安装,直接解压即可使用。
解压步骤:
- 找到下载的
.zip文件 - 右键选择"解压到当前文件夹"或使用解压软件解压
- 将解压后的文件夹移动到目标位置,例如:
E:\ENV20\apache-tomcat-9.0.80
推荐目录结构:
E:\ENV20\ ├── apache-tomcat-9.0.80 <-- Tomcat目录 ├── jdk-17.0.3.1 <-- JDK目录 ├── apache-maven-3.8.6 <-- Maven目录(可选) └── ...
重要提示: 路径中不要包含中文、空格或特殊字符,否则可能导致启动失败。
2.3 Tomcat目录结构详解
解压完成后,Tomcat的目录结构如下:
apache-tomcat-9.0.80/ ├── bin/ # 存放启动和关闭脚本 ├── conf/ # 配置文件目录 ├── lib/ # 依赖的jar包 ├── logs/ # 日志文件目录 ├── temp/ # 临时文件目录 ├── webapps/ # Web应用部署目录 └── work/ # JSP编译后的工作目录
各目录详细说明:
1. bin目录
存放Tomcat的启动和关闭脚本,以及相关的命令工具:
| 文件 | 说明 |
|---|---|
startup.bat / startup.sh | 启动Tomcat服务 |
shutdown.bat / shutdown.sh | 关闭Tomcat服务 |
catalina.bat / catalina.sh | 核心启动脚本,startup会调用它 |
setclasspath.bat | 设置Java类路径 |
version.bat | 查看Tomcat版本信息 |
tool-wrapper.bat | 工具包装脚本 |
2. conf目录
存放Tomcat的所有配置文件:
| 文件 | 说明 |
|---|---|
server.xml | 核心配置文件,配置端口、连接器、虚拟主机等 |
web.xml | 全局Web应用配置文件 |
tomcat-users.xml | 用户权限配置文件,配置管理界面登录账号 |
context.xml | 上下文配置文件,可配置数据源等 |
logging.properties | 日志配置文件 |
catalina.policy | 安全策略配置文件 |
3. lib目录
存放Tomcat运行所需的所有jar包,包括:
- Servlet API实现
- JSP API实现
- 数据库连接池(如DBCP)
- 其他Tomcat核心依赖
4. logs目录
存放Tomcat运行过程中产生的日志文件:
| 日志文件 | 说明 |
|---|---|
catalina.out / catalina.日期.log | 主控制台输出日志 |
localhost.日期.log | 本地主机访问日志 |
manager.日期.log | 管理界面操作日志 |
host-manager.日期.log | 虚拟主机管理日志 |
localhost_access_log.日期.txt | HTTP访问日志 |
5. webapps目录
这是最重要的目录之一,用于部署Web应用程序:
- 将Web项目(WAR包或文件夹)放入此目录,Tomcat会自动部署
- 默认包含几个示例应用:
docs:Tomcat文档examples:示例程序host-manager:虚拟主机管理应用manager:应用管理界面ROOT:默认根应用
6. work目录
存放JSP编译后的文件:
- JSP页面会被翻译成
.java源文件 - 然后编译成
.class字节码文件 - 即:
jsp → java → class
7. temp目录
Tomcat运行时的临时文件存放目录,通常不需要手动管理。
三、启动与关闭Tomcat
3.1 启动前的准备工作
检查Java环境
在启动Tomcat之前,必须先确认Java环境已正确配置。打开CMD,输入:
java -version
如果显示类似以下信息,说明Java环境正常:
java version "17.0.3.1" 2022-04-19 LTS Java(TM) SE Runtime Environment (build 17.0.3.1+2-LTS-6) Java HotSpot(TM) 64-Bit Server VM (build 17.0.3.1+2-LTS-6, mixed mode, sharing)
如果未配置Java环境,启动Tomcat时会报错:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program
解决方法: 先安装JDK并配置 JAVA_HOME 环境变量。
检查端口占用
Tomcat默认使用8080端口,如果该端口被其他程序占用,启动会失败。可以通过以下命令检查:
# Windows netstat -ano | findstr :8080 # 如果被占用,可以在server.xml中修改端口号
3.2 启动Tomcat
方法一:双击启动(推荐新手)
- 打开Tomcat安装目录
- 进入
bin文件夹 - 找到
startup.bat(Windows)或startup.sh(Linux/Mac) - 双击运行
启动成功后,会弹出一个黑色命令行窗口,显示启动日志信息:
Using CATALINA_BASE: "E:\ENV20\apache-tomcat-9.0.80" Using CATALINA_HOME: "E:\ENV20\apache-tomcat-9.0.80" Using CATALINA_TMPDIR: "E:\ENV20\apache-tomcat-9.0.80\temp" Using JRE_HOME: "E:\ENV20\jdk-17.0.3.1" Using CLASSPATH: "E:\ENV20\apache-tomcat-9.0.80\bin\bootstrap.jar;E:\ENV20\apache-tomcat-9.0.80\bin\tomcat-juli.jar"
注意: 启动窗口不要关闭,关闭窗口等于关闭Tomcat服务。
方法二:命令行启动
- 打开CMD命令提示符
- cd到Tomcat的bin目录:
cd E:\ENV20\apache-tomcat-9.0.80\bin
- 输入启动命令:
startup
或者使用catalina命令(更灵活):
catalina start # 后台启动 catalina run # 前台启动(日志直接输出到控制台)
方法三:配置为Windows服务(生产环境推荐)
将Tomcat注册为Windows服务,可以开机自启动:
# 以管理员身份运行CMD,进入bin目录 service.bat install
安装成功后,可以在"服务"管理中找到Apache Tomcat服务,设置为自动启动。
3.3 关闭Tomcat
方法一:双击关闭
在 bin 目录下双击 shutdown.bat(Windows)或 shutdown.sh(Linux/Mac)。
方法二:命令行关闭
cd E:\ENV20\apache-tomcat-9.0.80\bin shutdown
方法三:关闭启动窗口
直接关闭Tomcat的启动命令行窗口(不推荐,可能导致资源未释放)。
方法四:强制结束进程
如果Tomcat无法正常关闭,可以在任务管理器中找到 java.exe 或 tomcat9.exe 进程,结束任务。
3.4 测试Tomcat
启动Tomcat后,打开浏览器,在地址栏输入以下地址之一:
http://localhost:8080 http://127.0.0.1:8080
如果看到Tomcat默认首页,显示:
“If you’re seeing this, you’ve successfully installed Tomcat. Congratulations!”

说明Tomcat安装成功!
首页包含以下功能入口:
- Server Status:查看服务器状态
- Manager App:管理已部署的应用
- Host Manager:管理虚拟主机
四、配置Tomcat环境变量
配置环境变量后,可以在任意目录下通过命令启动和关闭Tomcat,无需每次都cd到bin目录。
4.1 配置CATALINA_HOME
步骤1:打开环境变量设置
- 右击【此电脑】(或【我的电脑】)
- 点击【属性】
- 选择【高级系统设置】
- 在【高级】选项卡下,点击【环境变量】
步骤2:新建系统变量
在【系统变量】区域点击【新建】按钮:
- 变量名:
CATALINA_HOME - 变量值: Tomcat的安装目录(例如:
E:\ENV20\apache-tomcat-9.0.80)
变量名必须是 CATALINA_HOME,这是Tomcat默认识别的变量名。
步骤3:(可选)新建TOMCAT_HOME
有些教程会建议同时配置 TOMCAT_HOME,与 CATALINA_HOME 值相同。这不是必须的,但可以增加兼容性:
- 变量名:
TOMCAT_HOME - 变量值:
E:\ENV20\apache-tomcat-9.0.80
4.2 配置Path变量
在【系统变量】中找到 Path,点击【编辑】:
- 点击【新建】
- 输入:
%CATALINA_HOME%\bin - 点击【确定】保存
如果系统较老,Path变量值是一个长字符串,则在末尾追加:
;%CATALINA_HOME%\bin(注意前面有分号)
4.3 验证环境变量
配置完成后,重新打开CMD(必须重新打开,否则环境变量不生效),输入:
catalina version
如果显示Tomcat的版本信息,说明环境变量配置成功:
Using CATALINA_BASE: E:\ENV20\apache-tomcat-9.0.80 Using CATALINA_HOME: E:\ENV20\apache-tomcat-9.0.80 Using CATALINA_TMPDIR: E:\ENV20\apache-tomcat-9.0.80\temp Using JRE_HOME: E:\ENV20\jdk-17.0.3.1 Server version: Apache Tomcat/9.0.80 Server built: Aug 11 2022 21:31:29 UTC Server number: 9.0.80.0 OS Name: Windows 10 OS Version: 10.0 Architecture: amd64 JVM Version: 17.0.3.1+2-LTS-6 JVM Vendor: Oracle Corporation
现在可以在任意目录下启动Tomcat了:
startup # 启动Tomcat shutdown # 关闭Tomcat
五、Tomcat核心配置详解
5.1 server.xml配置
conf/server.xml 是Tomcat最核心的配置文件,位于 conf 目录下。它定义了Tomcat的整体架构。
文件结构概览:
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="..." />
<GlobalNamingResources>
<Resource name="UserDatabase" ... />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" ... />
<Connector port="8009" protocol="AJP/1.3" ... />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="..." />
<Host name="localhost" appBase="webapps" ...>
<Valve className="..." />
</Host>
</Engine>
</Service>
</Server>核心组件说明:
| 组件 | 说明 |
|---|---|
Server | 整个Tomcat服务器实例 |
Service | 一个服务,包含一个Engine和多个Connector |
Connector | 连接器,负责接收客户端请求 |
Engine | 引擎,处理所有请求的容器 |
Host | 虚拟主机,对应一个域名 |
Context | Web应用上下文,对应一个Web项目 |
5.2 修改端口号
Tomcat默认使用三个端口:
| 端口 | 用途 | 配置文件位置 |
|---|---|---|
| 8080 | HTTP服务端口 | Connector port=“8080” |
| 8005 | 关闭服务端口 | Server port=“8005” |
| 8009 | AJP连接器端口 | Connector port=“8009” |
修改HTTP端口(8080 → 8888):
打开 conf/server.xml,找到:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />修改为:
<Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />保存后重启Tomcat,访问地址变为:http://localhost:8888
注意: 修改端口后,如果之前配置了防火墙规则,需要同步更新。
修改关闭端口:
<!-- 原配置 --> <Server port="8005" shutdown="SHUTDOWN"> <!-- 修改为 --> <Server port="8006" shutdown="SHUTDOWN">
5.3 配置虚拟主机
虚拟主机允许在一台服务器上部署多个网站。
在server.xml中添加虚拟主机:
<Host name="www.mysite.com" appBase="webapps/mysite"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="mysite_access_log"
suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
</Host>配置说明:
| 属性 | 说明 |
|---|---|
name | 域名 |
appBase | 应用基础目录 |
unpackWARs | 是否自动解压WAR包 |
autoDeploy | 是否自动部署新应用 |
同时需要在 conf/Catalina/localhost 目录下创建对应的XML配置文件,或在系统的hosts文件中添加域名解析。
六、Tomcat日常使用
6.1 部署Web项目
Tomcat支持多种方式部署Web应用:
方式一:直接复制到webapps目录(最简单)
- 将Web项目文件夹或WAR包复制到
webapps目录 - Tomcat会自动检测并部署
- 访问地址:
http://localhost:8080/项目名
示例:
假设有一个名为 myapp 的项目文件夹,结构如下:
myapp/ ├── WEB-INF/ │ ├── web.xml │ └── classes/ │ └── com/ │ └── example/ │ └── HelloServlet.class ├── index.html └── hello.jsp
将 myapp 文件夹复制到 webapps 目录,启动Tomcat后访问:
http://localhost:8080/myapp/ http://localhost:8080/myapp/index.html http://localhost:8080/myapp/hello.jsp
方式二:部署WAR包
WAR(Web Application Archive)是Java Web应用的标准打包格式。
生成WAR包:
使用Maven打包:
mvn clean package
或在项目根目录手动打包:
jar -cvf myapp.war .
部署WAR包:
- 将
myapp.war复制到webapps目录 - Tomcat会自动解压并部署
- 访问地址:
http://localhost:8080/myapp
如果不需要自动解压,可以将WAR包放在webapps目录外,通过Context配置手动部署。
方式三:配置Context部署(最灵活)
在 conf/Catalina/localhost/ 目录下创建 myapp.xml:
<Context docBase="E:/projects/myapp" reloadable="true" />
| 属性 | 说明 |
|---|---|
docBase | 项目实际路径(可以是绝对路径) |
reloadable | 是否自动重新加载修改后的类文件 |
path | 访问路径(XML文件名即为path) |
方式四:通过Manager界面部署
登录Tomcat Manager后,在"WAR file to deploy"区域上传WAR包即可部署。
6.2 使用Manager管理界面
Tomcat提供了一个Web管理界面,可以方便地管理部署的应用。
6.2.1 配置管理员账号
默认情况下,Manager界面需要登录。打开 conf/tomcat-users.xml,添加用户:
<tomcat-users> <!-- 管理员角色 --> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <!-- 配置用户 --> <user username="admin" password="123456" roles="manager-gui,manager-script,admin-gui,admin-script"/> </tomcat-users>
安全提示: 生产环境中请使用强密码,并限制访问IP。
6.2.2 访问Manager
启动Tomcat后,访问:
http://localhost:8080/manager/html
输入上面配置的用户名和密码即可登录。
6.2.3 Manager功能介绍
登录后可以看到以下功能:
| 功能 | 说明 |
|---|---|
| Applications | 查看已部署的所有应用 |
| Start | 启动某个应用 |
| Stop | 停止某个应用 |
| Reload | 重新加载应用(不重启Tomcat) |
| Undeploy | 卸载应用 |
| Expire sessions | 使会话失效 |
| WAR file to deploy | 上传WAR包部署 |
| Server Status | 查看服务器状态 |
6.2.4 访问Host Manager
用于管理虚拟主机:
http://localhost:8080/host-manager/html
6.3 查看日志
日志是排查问题的重要手段。Tomcat的日志位于 logs 目录。
常用日志文件:
1. catalina.out / catalina.日期.log
主控制台输出,包含启动信息、错误堆栈等:
[日期] [级别] [类名] 消息内容
2. localhost.日期.log
本地主机相关的日志,通常包含Web应用的错误信息。
3. localhost_access_log.日期.txt
HTTP访问日志,记录所有请求的详细信息:
127.0.0.1 - - [04/Jun/2026:10:30:45 +0800] "GET /myapp/index.jsp HTTP/1.1" 200 1234
格式说明:
127.0.0.1:客户端IP[04/Jun/2026:10:30:45 +0800]:访问时间"GET /myapp/index.jsp HTTP/1.1":请求方法和路径200:HTTP状态码1234:响应字节数
4. manager.日期.log
Manager界面的操作日志。
日志级别配置
编辑 conf/logging.properties:
# 设置全局日志级别 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO # 设置控制台日志级别 java.util.logging.ConsoleHandler.level = FINE # 设置文件日志级别 java.util.logging.FileHandler.level = INFO
日志级别从低到高:SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST
6.4 配置数据源
在Tomcat中配置数据库连接池,可以让Web应用共享数据库连接。
步骤1:将数据库驱动jar包放入lib目录
将MySQL驱动(如 mysql-connector-java-8.0.30.jar)复制到 lib 目录。
步骤2:在context.xml中配置数据源
编辑 conf/context.xml,在 <Context> 标签内添加:
<Resource name="jdbc/MyDB"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
maxIdle="30"
maxWaitMillis="10000"
username="root"
password="123456"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC"/>步骤3:在web.xml中引用
在项目的 WEB-INF/web.xml 中添加:
<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/MyDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
步骤4:在Java代码中使用
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/MyDB");
Connection conn = ds.getConnection();七、常见问题及解决方案
问题1:启动时闪退
现象: 双击startup.bat后,窗口一闪而过。
原因及解决:
Java环境未配置
- 检查
JAVA_HOME环境变量是否正确设置 - 在CMD中运行
java -version验证
端口被占用
- 检查8080端口是否被占用:
netstat -ano | findstr :8080 - 修改
server.xml中的端口号
权限不足
- 以管理员身份运行startup.bat
问题2:启动报错 “Address already in use”
解决:
# 查找占用8080端口的进程 netstat -ano | findstr :8080 # 结束对应进程(PID为进程号) taskkill /PID 进程号 /F
问题3:访问localhost:8080显示404
原因:
- webapps目录下的ROOT应用被删除
- 项目部署路径错误
解决:
- 检查webapps目录是否包含ROOT文件夹
- 确认访问路径是否正确
问题4:中文乱码
解决:
- 修改
conf/server.xml,在Connector中添加URIEncoding:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />- 修改
conf/logging.properties,设置控制台编码:
java.util.logging.ConsoleHandler.encoding = UTF-8
- 在JSP页面中设置编码:
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
问题5:内存溢出(OutOfMemoryError)
解决: 修改 bin/catalina.bat,在文件开头添加:
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=256m
参数说明:
-Xms:初始堆内存-Xmx:最大堆内存-XX:MaxPermSize:永久代大小(JDK 8之前)
问题6:Manager界面403拒绝访问
解决:
- 确认
tomcat-users.xml中配置了正确的角色和用户 - 如果是远程访问,需要修改
webapps/manager/META-INF/context.xml,注释掉IP限制:
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->问题7:项目修改后不生效
解决:
- 在Manager界面点击"Reload"重新加载应用
- 或者修改
conf/context.xml,设置reloadable="true":
<Context reloadable="true">
- 重启Tomcat
八、总结
本文详细介绍了Tomcat的完整使用流程,包括:
| 阶段 | 内容 |
|---|---|
| 下载安装 | 官网下载、解压安装、目录结构说明 |
| 启动关闭 | 多种启动方式、关闭方式 |
| 环境配置 | CATALINA_HOME、Path变量配置 |
| 核心配置 | server.xml详解、端口修改、虚拟主机 |
| 日常使用 | 项目部署、Manager管理、日志查看、数据源配置 |
| 问题排查 | 常见错误及解决方案 |
掌握以上内容后,你就可以熟练地使用Tomcat进行Java Web开发了。Tomcat虽然轻量,但功能强大,是学习和开发Java Web应用的绝佳选择。
以上就是Apache Tomcat下载安装、配置与使用教程(超详细)的详细内容,更多关于Tomcat下载安装、配置与使用的资料请关注脚本之家其它相关文章!
相关文章
tomcat相关配置与eclipse集成_动力节点Java学院整理
这篇文章主要介绍了tomcat相关配置与eclipse集成_动力节点Java学院整理的相关资料,需要的朋友可以参考下2017-07-07


最新评论