第三章:Tomcat 安装与配置 第三章:Tomcat 安装与配置 3.1 引言 3.2 Tomcat 安装准备 在开始 Tomcat 的安装之前,我们需要进行一些准备工作,确保安装过程顺利进行。 3.2.1 环境要求 Java Development Kit (JDK): Tomcat 是基于 Java 运行的,因此必须安装 JDK。建议安装 JDK 8 或更高版本。您可以从 Oracle 官网或 OpenJDK 项目下载适合您操作系统的 JDK 版本。请确保 环境变量已正确配置,指向 JDK 的安装目录,并将 JDK 的 目录添加到 环境变量中。 操作系统: Tomcat 可以运行在多种操作系统上,包括 Windows、Linux、macOS 等。
第三章:Tomcat 安装与配置
3.1 引言
3.2 Tomcat 安装准备
在开始 Tomcat 的安装之前,我们需要进行一些准备工作,确保安装过程顺利进行。
3.2.1 环境要求
Java Development Kit (JDK): Tomcat 是基于 Java 运行的,因此必须安装 JDK。建议安装 JDK 8 或更高版本。您可以从 Oracle 官网或 OpenJDK 项目下载适合您操作系统的 JDK 版本。请确保 JAVA_HOME 环境变量已正确配置,指向 JDK 的安装目录,并将 JDK 的 bin 目录添加到 PATH 环境变量中。
操作系统: Tomcat 可以运行在多种操作系统上,包括 Windows、Linux、macOS 等。本章将以 Linux 系统 为例进行讲解,其他操作系统下的安装过程类似,只需根据操作系统特性进行细微调整。
网络连接: 安装过程中可能需要下载 Tomcat 安装包,因此需要确保服务器或本地机器能够连接到互联网。
3.2.2 下载 Tomcat
访问 Apache Tomcat 官方网站 https://tomcat.apache.org/,在 "Download" 页面选择您需要的 Tomcat 版本。通常建议下载 最新稳定版本。
Tomcat 提供了多种格式的安装包,包括:
Binary Distributions:
Core: 核心二进制发行包,包含运行 Tomcat 所需的最基本的文件。
Zip (Windows): Windows 平台的 ZIP 压缩包。
tar.gz (Linux/macOS): Linux/macOS 平台的 tar.gz 压缩包。
Windows Service Installer: Windows 服务安装程序,方便将 Tomcat 安装为 Windows 服务。
Source Code Distributions: Tomcat 源代码,适合需要深入研究 Tomcat 源码或进行定制化编译的用户。
对于初学者和大多数应用场景,Binary Distributions (Core) 中的 tar.gz (Linux/macOS) 或 Zip (Windows) 压缩包是最常用的选择。 本章将以 tar.gz 压缩包 为例进行安装讲解。
3.3 Tomcat 安装步骤 (基于 Linux tar.gz 包)
以下是在 Linux 系统下使用 tar.gz 包安装 Tomcat 的详细步骤:
3.3.1 解压安装包
创建 Tomcat 安装目录: 在服务器上选择一个合适的目录作为 Tomcat 的安装目录。例如,我们可以在 /opt 目录下创建一个 tomcat 目录:
sudo mkdir /opt/tomcat
上传或下载安装包: 将下载的 apache-tomcat-X.X.XX.tar.gz 安装包上传到服务器的 /opt/tomcat 目录,或者直接在服务器上使用 wget 命令下载:
cd /opt/tomcat sudo wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.78/bin/apache-tomcat-9.0.78.tar.gz # 请替换为实际版本号
解压安装包: 使用 tar 命令解压安装包到当前目录:
sudo tar -zxvf apache-tomcat-9.0.78.tar.gz
解压完成后,会在 /opt/tomcat 目录下生成一个以 apache-tomcat-X.X.XX 命名的目录,这就是 Tomcat 的安装目录。为了方便管理,我们可以将该目录重命名为 tomcat9 (或您喜欢的名字):
sudo mv apache-tomcat-9.0.78 tomcat9
3.3.2 设置环境变量 (可选)
为了方便操作 Tomcat 的启动和关闭脚本,可以将 Tomcat 的 bin 目录添加到系统的 PATH 环境变量中。编辑 /etc/profile 文件 (或用户级别的 .bash_profile 或 .zshrc 文件):
sudo vi /etc/profile
在文件末尾添加以下行 (请根据实际 Tomcat 安装目录修改 CATALINA_HOME):
export CATALINA_HOME=/opt/tomcat/tomcat9 export PATH=$PATH:$CATALINA_HOME/bin
保存文件并执行以下命令使环境变量生效:
source /etc/profile
3.3.3 启动 Tomcat
进入 Tomcat 的 bin 目录:
cd /opt/tomcat/tomcat9/bin
执行 startup.sh 脚本启动 Tomcat:
./startup.sh
如果启动成功,您应该看到类似以下的输出信息:
Using CATALINA_BASE: /opt/tomcat/tomcat9 Using CATALINA_HOME: /opt/tomcat/tomcat9 Using CATALINA_TMPDIR: /opt/tomcat/tomcat9/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-amd64 # 您的 JDK 路径 Using CLASSPATH: /opt/tomcat/tomcat9/bin/bootstrap.jar:/opt/tomcat/tomcat9/bin/tomcat-juli.jar Tomcat started.
3.3.4 验证 Tomcat 运行
打开浏览器,访问 http://服务器IP:8080 或 http://localhost:8080 (如果您在本地安装)。如果看到 Tomcat 的默认欢迎页面,则表示 Tomcat 安装并运行成功。
3.3.5 关闭 Tomcat
进入 Tomcat 的 bin 目录:
cd /opt/tomcat/tomcat9/bin
执行 shutdown.sh 脚本关闭 Tomcat:
./shutdown.sh
3.4 Tomcat 目录结构详解
理解 Tomcat 的目录结构对于配置和管理 Tomcat 非常重要。以下是 Tomcat 主要目录的介绍:
tomcat9/ ├── bin/ # 存放 Tomcat 的启动、关闭和管理脚本 ├── conf/ # 存放 Tomcat 的配置文件 (核心配置目录) ├── lib/ # 存放 Tomcat 运行时所需的 JAR 包 ├── logs/ # 存放 Tomcat 的日志文件 ├── temp/ # 存放 Tomcat 运行时产生的临时文件 ├── webapps/ # 默认的 Web 应用部署目录 ├── work/ # 存放 Tomcat 工作目录,编译 JSP 等 └── ... # 其他文件和目录
mermaid 代码示例:Tomcat 目录结构
3.5 Tomcat 核心配置文件详解
Tomcat 的配置主要通过 conf 目录下的配置文件完成。最重要的配置文件包括:
server.xml: Tomcat 的主配置文件,定义了 Server、Service、Connector、Engine、Host 等核心组件。
web.xml: Web 应用的全局配置文件,定义了 Servlet、Filter、Listener 等 Web 组件的默认配置。
context.xml: Context 配置文件,用于配置 Web 应用的上下文环境,例如数据源、资源等。
tomcat-users.xml: 用户管理配置文件,用于配置 Tomcat 管理 Web 应用 (如 Manager App, Host Manager App) 的用户和角色。
logging.properties: 日志配置文件,用于配置 Tomcat 的日志记录行为。
3.5.1 server.xml 详解
server.xml 是 Tomcat 最核心的配置文件,它定义了 Tomcat 服务器的整体结构和行为。其主要元素包括:
<Server>: 根元素,代表整个 Tomcat 服务器实例。
port: 关闭服务器的端口,用于接收关闭命令。
shutdown: 关闭服务器的命令字符串,默认 "SHUTDOWN"。
<Service>: 代表一个 Tomcat 服务,一个 <Server> 可以包含多个 <Service>,但通常只有一个。一个 <Service> 包含一个 <Engine> 和多个 <Connector>。
name: Service 的名称,例如 "Catalina"。<Connector>: 代表一个连接器,负责接收客户端请求并将其传递给 <Engine> 进行处理。Tomcat 可以配置多个连接器,监听不同的端口和协议。
port: 监听端口,例如 8080 (HTTP), 8443 (HTTPS), 8009 (AJP)。
protocol: 连接器协议,例如 "HTTP/1.1", "org.apache.coyote.http11.Http11NioProtocol" (NIO HTTP), "AJP/1.3"。
address: 绑定的 IP 地址,默认绑定所有地址 (0.0.0.0)。
redirectPort: 如果当前连接器是 HTTP,则可以配置 redirectPort 将 HTTP 请求重定向到 HTTPS 连接器的端口。
SSL 配置 (HTTPS): 配置 HTTPS 需要在 <Connector> 中添加 SSL 相关的属性,例如 SSLEnabled="true", keystoreFile, keystorePass, keystoreType 等。
<Engine>: 代表 Servlet 引擎,负责处理 Servlet 请求,并将响应返回给客户端。一个 <Service> 只能包含一个 <Engine>。
name: Engine 的名称,例如 "Catalina"。
defaultHost: 默认主机名,当请求头中 Host 字段无法匹配任何 <Host> 时,将使用默认主机处理请求。
baseDir: Engine 的基础目录,用于存放临时文件。
<Host>: 代表一个虚拟主机,用于部署 Web 应用。一个 <Engine> 可以包含多个 <Host>,每个 <Host> 可以配置不同的域名和 Web 应用目录。
name: 虚拟主机名,例如 "localhost", "www.example.com"。
appBase: Web 应用部署目录,相对于 <CATALINA_HOME> 或绝对路径。默认 "webapps"。
autoDeploy: 是否自动部署 appBase 目录下的 Web 应用,默认 "true"。
unpackWARs: 是否自动解压 WAR 文件,默认 "true"。
xmlValidation: 是否验证 Web 应用的 web.xml 文件,默认 "false"。
xmlNamespaceAware: 是否支持 XML 命名空间,默认 "false"。
<Context>: 在 <Host> 中可以配置 <Context> 元素来定义特定的 Web 应用,可以覆盖 <Host> 的默认配置。
mermaid 代码示例:server.xml 结构
代码示例:server.xml 关键配置片段
<Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/myapp" docBase="myapp" reloadable="true" /> <--- 自定义 Context </Host> </Engine> </Service> </Server>
配置详解:
<Server port="8005" shutdown="SHUTDOWN">: 定义了 Server 根元素,关闭端口为 8005,关闭命令为 "SHUTDOWN"。
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" />: 配置了一个 HTTP 连接器,监听 8080 端口,协议为 HTTP/1.1,并将 HTTP 请求重定向到 8443 端口 (HTTPS)。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" ... />: (示例中未完整展示) 配置 HTTPS 连接器,监听 8443 端口,协议为 NIO HTTP,并启用了 SSL/TLS。 需要配置 keystoreFile, keystorePass 等 SSL 证书相关属性。
<Engine defaultHost="localhost">: 配置 Engine 默认主机为 "localhost"。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">: 配置虚拟主机 "localhost",Web 应用部署目录为 webapps,启用自动部署和 WAR 包解压。
<Context path="/myapp" docBase="myapp" reloadable="true" />: 在 "localhost" 主机下自定义了一个 Context,路径为 /myapp,对应的 Web 应用目录为 webapps/myapp (或相对于 docBase 的路径),并启用了热加载 (reloadable="true",开发环境建议开启,生产环境慎用)。
3.5.2 web.xml 详解 (全局 Web 应用配置)
conf/web.xml 是 Tomcat 全局的 Web 应用配置文件,它定义了所有 Web 应用的默认配置。通常情况下,我们不需要修改全局 web.xml,而是在每个 Web 应用的 WEB-INF/web.xml 中进行配置。
全局 web.xml 中可以配置:
<welcome-file-list>: 默认欢迎文件列表,当用户访问 Web 应用根路径时,Tomcat 会按照列表顺序查找并返回第一个存在的文件。
<error-page>: 错误页面配置,定义不同 HTTP 状态码或异常对应的错误页面。
<session-config>: Session 会话配置,例如 Session 超时时间、Cookie 配置等。
<mime-mapping>: MIME 类型映射,定义文件扩展名与 MIME 类型的对应关系。
<security-constraint>: 安全约束配置,定义 Web 应用的安全性规则,例如访问权限控制。
代码示例:web.xml 关键配置片段
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/error/404.html</location> </error-page> <session-config> <session-timeout>30</session-timeout> <!-- Session 超时时间,单位分钟 --> </session-config> <mime-mapping> <extension>txt</extension> <mime-type>text/plain</mime-type> </mime-mapping> </web-app>
3.5.3 context.xml 详解 (Context 配置)
conf/context.xml 是全局 Context 配置文件,它定义了所有 Web 应用的默认 Context 配置。与 web.xml 类似,通常在每个 Web 应用的 META-INF/context.xml 或 server.xml 的 <Host> 中配置 <Context> 元素来覆盖全局配置。
context.xml 中可以配置:
<Resource>: 资源配置,例如数据源 (DataSource)、JNDI 资源等。
<Realm>: 安全域配置,用于用户认证和授权。
<Loader>: 类加载器配置,用于自定义 Web 应用的类加载行为。
<Manager>: Session 管理器配置,用于自定义 Session 管理策略。
<Valve>: 阀门配置,用于添加请求处理管道的自定义组件,例如访问日志、安全阀门等。
代码示例:context.xml 关键配置片段 (数据源配置)
<Context> <Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC" username="dbuser" password="dbpassword" maxActive="20" maxIdle="10" maxWait="-1"/> </Context>
配置详解:
<Resource name="jdbc/mydb" ...>: 定义了一个 JNDI 资源,名称为 "jdbc/mydb",类型为 javax.sql.DataSource (数据源)。
driverClassName, url, username, password: 数据库连接信息,根据实际数据库配置修改。
maxActive, maxIdle, maxWait: 连接池配置,控制数据库连接池的大小和行为。
3.5.4 tomcat-users.xml 详解 (用户管理配置)
conf/tomcat-users.xml 用于配置 Tomcat 管理 Web 应用 (例如 Manager App, Host Manager App) 的用户和角色。默认情况下,Tomcat 的 Manager App 和 Host Manager App 需要用户认证才能访问。
代码示例:tomcat-users.xml 配置
<tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/> <user username="admin" password="admin" roles="admin-gui,admin-script,manager-gui,manager-script"/> </tomcat-users>
配置详解:
<role rolename="...">: 定义角色,例如 manager-gui (Manager App GUI 访问权限), admin-gui (Host Manager App GUI 访问权限) 等。
<user username="..." password="..." roles="...">: 定义用户,指定用户名、密码和所属角色。
安全提示: 默认的 tomcat-users.xml 文件中可能包含示例用户和密码,请务必修改默认密码,并根据实际需要配置用户和角色,以增强 Tomcat 的安全性。生产环境中应禁用或妥善保护 Manager App 和 Host Manager App。
3.5.5 logging.properties 详解 (日志配置)
conf/logging.properties 用于配置 Tomcat 的日志记录行为。您可以配置日志级别、日志格式、日志输出位置等。
代码示例:logging.properties 关键配置片段
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler ############################################################ # Handler specific properties. # Describes specific properties for handlers. ############################################################ 1catalina.org.apache.juli.FileHandler.level = FINE 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina. 2localhost.org.apache.juli.FileHandler.level = FINE 2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.FileHandler.prefix = localhost. java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = org.apache.juli.formatter.SimpleFormatter java.util.logging.ConsoleHandler.encoding = UTF-8
配置详解:
handlers: 指定使用的日志处理器,例如 java.util.logging.ConsoleHandler (控制台输出), org.apache.juli.FileHandler (文件输出)。
.handlers: 根 Logger 的处理器,应用于所有 Logger。
*.org.apache.juli.FileHandler.level: 设置文件日志处理器的日志级别,例如 FINE, INFO, WARNING, ERROR 等。
*.org.apache.juli.FileHandler.directory: 设置文件日志输出目录,${catalina.base} 代表 Tomcat 的 base 目录。
*.org.apache.juli.FileHandler.prefix: 设置文件日志文件名前缀。
java.util.logging.ConsoleHandler.level: 设置控制台日志处理器的日志级别。
java.util.logging.ConsoleHandler.formatter: 设置控制台日志格式化器。
3.6 常用配置实践
修改 Tomcat 端口: 修改 server.xml 中 <Connector port="8080" ...> 的 port 属性可以更改 Tomcat 的 HTTP 监听端口。如果需要使用 80 端口 (HTTP 默认端口),可以将 port 修改为 80,但可能需要 root 权限启动 Tomcat (Linux 系统)。
配置 HTTPS: 在 server.xml 中配置 HTTPS 连接器,需要生成 SSL 证书 (可以使用 keytool 工具生成自签名证书或购买 CA 证书),并在 <Connector> 中配置 SSLEnabled="true", keystoreFile, keystorePass, keystoreType 等属性。
配置虚拟主机: 在 server.xml 的 <Engine> 中添加多个 <Host> 元素,每个 <Host> 配置不同的 name (域名) 和 appBase (Web 应用目录),可以实现基于域名的虚拟主机。
部署 Web 应用: 将 WAR 文件或 Web 应用目录复制到 webapps 目录下,Tomcat 会自动部署 Web 应用。也可以在 server.xml 的 <Host> 中配置 <Context> 元素手动部署 Web 应用。
配置数据源: 在 conf/context.xml 或 Web 应用的 META-INF/context.xml 中配置 <Resource> 元素,定义数据源,并在 Web 应用中使用 JNDI 查找数据源。
优化 Tomcat 性能: 可以通过调整 JVM 参数、连接器配置、线程池配置、禁用不必要的 Web 应用等方式优化 Tomcat 性能。
3.7 小结
本章详细介绍了 Tomcat 的安装步骤、目录结构以及核心配置文件的详解。理解 Tomcat 的安装与配置是使用 Tomcat 的基础。通过学习本章内容,您应该能够:
掌握 Tomcat 的安装方法 (基于 tar.gz 包)。
理解 Tomcat 的目录结构和各个目录的作用。
掌握 server.xml, web.xml, context.xml, tomcat-users.xml, logging.properties 等核心配置文件的作用和配置方法。
了解一些常用的 Tomcat 配置实践。
在后续章节中,我们将继续深入探讨 Tomcat 的高级特性和应用,例如 Web 应用部署、Session 管理、安全配置、性能调优等。
总结 Mermaid 图:Tomcat 安装与配置关键步骤