前言

整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。

开源项目

从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。

系列文章

web server apache tomcat11-01-官方文档入门介绍

web server apache tomcat11-02-setup 启动

web server apache tomcat11-03-deploy 如何部署

web server apache tomcat11-04-manager 如何管理?

web server apache tomcat11-06-Host Manager App – Text Interface

web server apache tomcat11-07-Realm Configuration

web server apache tomcat11-08-JNDI Resources

web server apache tomcat11-09-JNDI Datasource

web server apache tomcat11-10-Class Loader

web server apache tomcat11-11-Jasper 2 JSP Engine

web server apache tomcat11-12-SSL/TLS Configuration

web server apache tomcat11-13-SSI

web server apache tomcat11-14-CGI

web server apache tomcat11-15-proxy

web server apache tomcat11-16-mbean

web server apache tomcat11-17-default-servlet

web server apache tomcat11-18-clusting 集群

web server apache tomcat11-19-load balance 负载均衡

web server apache tomcat11-20-connectors 连接器

web server apache tomcat11-21-monitor and management 监控与管理

web server apache tomcat11-22-logging 日志

web server apache tomcat11-23-APR

web server apache tomcat11-24-Virtual Hosting and Tomcat

web server apache tomcat11-25-Advanced IO and Tomcat

web server apache tomcat11-26-maven jars

web server apache tomcat11-27-Security Considerations

web server apache tomcat11-28-Windows Service

web server apache tomcat11-29-Windows Authentication

web server apache tomcat11-30-The Tomcat JDBC Connection Pool

web server apache tomcat11-31-websocket

web server apache tomcat11-32-rewrite

web server apache tomcat11-33-CDI

web server apache tomcat11-34-Ahead of Time compilation support

简介

对于管理员和 Web 开发人员来说,在开始之前,有一些重要的信息您应该熟悉。本文档作为对 Tomcat 容器背后一些概念和术语的简要介绍,以及在需要帮助时应该去哪里的指南。

术语

在阅读这些文档的过程中,您会遇到许多术语;一些是特定于 Tomcat 的,而另一些是由 Servlet 和 JSP 规范定义的。

  • 上下文(Context)- 简而言之,上下文是一个 Web 应用程序。

如果您发现需要添加更多术语到此部分,请告诉我们。

目录和文件

以下是一些关键的 Tomcat 目录:

  • /bin - 启动、关闭和其他脚本。*.sh 文件(对于 Unix 系统)是 *.bat 文件(对于 Windows 系统)的功能副本。由于 Win32 命令行缺少某些功能,因此这里有一些额外的文件。
  • /conf - 配置文件和相关的 DTD。这里最重要的文件是 server.xml。这是容器的主要配置文件。
  • /logs - 默认情况下存放日志文件。
  • /webapps - 这是您的 Web 应用程序的位置。

CATALINA_HOME 和 CATALINA_BASE

在文档中,有两个属性的引用:

  • CATALINA_HOME:代表您的 Tomcat 安装的根目录,例如 /home/tomcat/apache-tomcat-11.0.0 或 C:\Program Files\apache-tomcat-11.0.0。
  • CATALINA_BASE:代表特定 Tomcat 实例的运行时配置的根目录。如果您想在一台机器上运行多个 Tomcat 实例,请使用 CATALINA_BASE 属性。

如果您将这两个属性设置为不同的位置,那么 CATALINA_HOME 位置包含静态资源,例如 .jar 文件或二进制文件。CATALINA_BASE 位置包含配置文件、日志文件、部署的应用程序以及其他运行时要求。

为什么使用 CATALINA_BASE

默认情况下,CATALINA_HOME 和 CATALINA_BASE 指向同一个目录。当您需要在一台机器上运行多个 Tomcat 实例时,手动设置 CATALINA_BASE。这样做有以下好处:

  • 更容易管理升级到较新版本的 Tomcat。因为所有具有单个 CATALINA_HOME 位置的实例共享一组 .jar 文件和二进制文件,您可以轻松地将文件升级到较新版本,并将更改传播到使用相同 CATALIA_HOME 目录的所有 Tomcat 实例。
  • 避免重复使用相同的静态 .jar 文件。
  • 可以共享某些设置,例如 setenv shell 或 bat 脚本文件(取决于您的操作系统)。

CATALINA_BASE 的内容

在开始使用 CATALINA_BASE 之前,请先考虑并创建 CATALINA_BASE 使用的目录树。请注意,如果您没有创建所有推荐的目录,Tomcat 将自动创建这些目录。如果它无法创建所需的目录,例如由于权限问题,Tomcat 将无法启动,或者可能无法正常工作。

考虑以下目录列表:

  • 包含 setenv.sh、setenv.bat 和 tomcat-juli.jar 文件的 bin 目录。
    • 推荐:否。
    • 查找顺序:首先检查 CATALINA_BASE;然后回退到 CATALINA_HOME。
  • 包含要添加到类路径的其他资源的 lib 目录。
    • 推荐:是,如果您的应用程序依赖于外部库。
    • 查找顺序:首先检查 CATALINA_BASE;其次加载 CATALINA_HOME。
  • 用于特定实例日志文件的 logs 目录。
    • 推荐:是。
  • 用于自动加载的 Web 应用程序的 webapps 目录。
    • 推荐:是,如果您要部署应用程序。
    • 查找顺序:仅检查 CATALINA_BASE。
  • 包含已部署的 Web 应用程序的临时工作目录的 work 目录。
    • 推荐:是。
  • JVM 用于临时文件的 temp 目录。
    • 推荐:是。

我们建议您不要更改 tomcat-juli.jar 文件。但是,如果您需要自己的日志记录实现,可以将 tomcat-juli.jar 文件替换为特定 Tomcat 实例的 CATALINA_BASE 位置。

我们还建议您将所有配置文件从 CATALINA_HOME/conf 目录复制到 CATALINA_BASE/conf/ 目录。如果在 CATALINA_BASE 中缺少配置文件,将不会回退到 CATALINA_HOME。因此,这可能会导致失败。

至少,CATALINA_BASE 必须包含:

  • conf/server.xml
  • conf/web.xml
    • 包括 conf 目录。否则,Tomcat 将无法启动,或无法正常工作。

有关高级配置信息,请参阅 RUNNING.txt 文件。

如何使用 CATALINA_BASE

CATALINA_BASE 属性是一个环境变量。您可以在执行 Tomcat 启动脚本之前设置它,例如:

  • 在 Unix 上:CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start
  • 在 Windows 上:CATALINA_BASE=C:\tomcat_base1 bin/catalina.bat start

配置 Tomcat

本节将向您介绍在配置容器期间使用的基本信息。

所有配置文件中的信息都在启动时读取,这意味着对文件的任何更改都需要重新启动容器。

寻求帮助

虽然我们已尽力确保这些文档写得清晰易懂,但我们可能会漏

掉一些内容。以下是一些网站和邮件列表,以防您遇到困难。

请注意,一些问题和解决方案在不同版本的 Tomcat 之间可能会有所不同。

在网络上搜索时,会有一些文档与 Tomcat 11 无关,而仅与早期版本有关。

  • 当前文档 - 大多数文档将列出潜在的问题。请务必彻底阅读相关文档,这将节省您大量的时间和精力。没有什么比搜索网络更好的了,只是发现答案一直在您眼前!
  • Tomcat FAQ
  • Tomcat Wiki
  • jGuru 的 Tomcat FAQ
  • Tomcat 邮件列表档案 - 许多网站存档了 Tomcat 邮件列表。由于链接随时间而变化,请点击此处搜索 Google。
  • TOMCAT-USER 邮件列表 - 您可以在此订阅。如果您没有收到回复,那么您的问题可能已在列表存档或常见问题解答中得到了解答。尽管有时会提出并回答一般的 Web 应用程序开发问题,但请将您的问题重点放在 Tomcat 特定问题上。
  • TOMCAT-DEV 邮件列表 - 您可以在此订阅。此列表专用于讨论 Tomcat 本身的开发。有关 Tomcat 配置以及开发和运行应用程序时遇到的问题,通常更适合在 TOMCAT-USER 列表上讨论。

如果您认为文档中应该包含某些内容,请务必在 TOMCAT-DEV 列表上让我们知道。

参考资料

https://tomcat.apache.org/tomcat-11.0-doc/introduction.html