以前开发 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 文件;
- 共享某些设置,例如
setenvshell 或者 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 中有详细的描述。