以前开发 java web 应用的时候简单地使用过 tomcat,但是对其理解并不深,很多配置项都不清楚。后来长时间不做 web 开发都快忘光了,现在补补课:)
1、简介
1.1、关键的文件夹和文件
/bin
文件,包含了 startup、shutdown 等脚本。*.sh
和*.bash
文件分别为 Unix 系统和 Windows 系统的脚本,由于 win32 命令行缺少某些功能,这里包含了一些额外的文件。/conf
文件,配置文件和依赖的 DTD 文件。在这里最重要的文件是server.xml
,它是 tomcat 容器的主要配置文件。/logs
文件,日志文件是默认存在的。/webapps
文件,这里是部署你的 web 应用的地方。
1.2、CATALINA_HOME
和CATALINA_BASE
CATALINA_HOME
:代表了你 tomcat 安装的根目录,CATALINA_BASE
:代表了一个具体的 tomcat 实例运行时的配置的根目录,如果你想在一个服务器上运行多个 tomcat 实例,那么使用该属性。
如果你将这两个属性设置成不同的位置,CATALINA_HOME
位置包含静态的资源,例如.jar
文件,或者二进制文件。CATALINA_BASE
则包含配置文件,日志文件,部署的应用和其他的运行时依赖。
1.2.1、为何使用CATALINA_BASE
CATALINA_BASE
和CATALINA_HOME
默认指向相同的目录。当你需要在一个服务器上运行多个 tomcat 实例时需要手动设置CATALINA_BASE
,这样做会有以下一些好处:
- 更容易管理新版 tomcat 的升级。因为所有使用单个
CATALINA_HOME
地址的实例共享同一组.jar
文件和二进制文件,你能够轻松地将文件升级到最新的版本并且同时改变所有使用相同CATALINA_HOME
目录的 tomcat 实例; - 避免复制相同的静态.jar 文件;
- 共享某些设置,例如
setenv
shell 或者 bat 脚本文件。
1.2.2、CATALINA_BASE
的内容
在你使用CATALINA_BASE
之前,首先创建一个目录树。注意,如果你不创建所有建议的目录,tomcat 将自动创建。如果创建必要的目录失败了,比如遇到了权限问题,tomcat 要么启动失败,要么功能错误。
考虑如下目录:
bin
目录下,包含setenv.sh
、setenv.bat
和tomcat-juli.jar
文件。- recommended: No.
- 查找顺序:首先查找
CATALINA_BASE
,CATALINA_HOME
备用。
lib
目录在类路径下添加更多资源。- Recommended:Yes,如果你的应用依赖其他库。
- 查找顺序:首先检查
CATALINA_BASE
,之后再加载CATALINA_HOME
。
log
目录每个不同实例的日志文件。- Recommended:Yes.
webapps
目录自动加载 web 应用。- Recommended:Yes,如果你想要部署一个应用。
- 查找顺序:只查找
CATALINA_BASE
。
work
目录包含了 web 应用的临时工作目录。- Recommended:Yes。
temp
目录被 JVM 用于存放临时文件。- Recommended:Yes。
建议不要修改tomcat-juli.jar
文件。但是如果你需要使用你自己的日志实现,你可以在CATALINA_BASE
下为某个具体的 tomcat 实例修改tomcat-juli.jar
文件。
我们建议你复制所有CATALINA_HOME/conf
目录下的配置文件到CATALINA_BASE/conf
目录。以防如果一个配置文件在CATALINA_BASE
中丢失了,在CATALINA_HOME
下却没备份,这将会导致错误。
CATALINA_BASE
至少需要包含:
- conf/server.xml
- conf/web.xml
否则 tomcat 将无法启动或者无法正常使用。
1.2.3、如何使用CATALINA_BASE
CATALINA_BASE
属性是一个环境变量,你可以在运行 tomcat 脚本之前设置它,比如:
- On Unix:
CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start
- On Windows:
CATALINA_BASE=C:\tomcat_base1 bin/catalina.bat start
1.3、配置 tomcat
所有的配置信息文件都在 tomcat 启动时被读取,这意味着,如果你更改了配置,你需要重新启动 tomcat 容器。
2、安装
tomcat 的安装和使用方法在随 tomcat 目录下的 RUNING.txt 中有详细的描述。