此前虽然对Tomcat有一些了解,但是在使用的时候总感觉云里雾里,索性趁着现在比较清闲,把Tomcat的基础知识整理一下,不足之处还请各位路过的客官多多指正。
简介
Apache Tomcat是由Apache Software Foundation(ASF)开发的一个开源Java WEB应用服务器。
Tomcat是用Java语言编写的,需要运行在Java虚拟机上,所以一般需要先安装JDK,以提供运行环境。
Tomcat实现了几个Java EE规范,包括Java Servlet、Java Server Pages(JSP),Java Expression Language和Java WebSocket等,这些是都下载Tomcat安装包默认提供的,可以在源码中看到相关Java EE 规范API源码引用。
安装jdk
使用二进制包安装,下载解压并移动/usr/local/jdk1.8,然后配置环境变量:
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
安装Tomcat
- 下载二进制包进行安装:
$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
$ tar zxvf apache-tomcat-8.5.38.tar.gz
$ mv apache-tomcat-8.5.38 /usr/local/tomcat
- 启动:
$ /usr/local/tomcat/bin/startup.sh
$ netstat -lntp |grep java
tcp6 0 0 :::8009 :::* LISTEN 50401/java
tcp6 0 0 :::8080 :::* LISTEN 50401/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 50401/java
$ ps -ef |grep tomcat
- 8005:管理端口;
- 8009:第三方服务调用端口,比如httpd和Tomcat结合的时候会用到;
- 8080:web服务端口;
Tomcat文件介绍
目录及文件
- /bin:各种执行脚本,如启动服务、停止服务脚本等,
*.sh
用于Unix系统; - /conf:配置文件及相关的 DTDs (XML 文档类型定义,俗称 DTD,它是一种准确描述 XML 语言的方式。)这里最重要的文件是server.xml,它是容器的主要配置文件;
- /logs:日志文件;
- /webapps:webapp的存放位置。
CATALINA_HOME 和 CATALINA_BASE
- CATALINA_HOME:Tomcat的安装根目录,如
/home/tomcat/apache-tomcat-8.5.38
- CATALINA_BASE:表示特定Tomcat实例的运行时配置文件根目录。如果要在一台计算机上拥有多个Tomcat实例,请使用该
CATALINA_BASE
属性。
为什么使用CATALINA_BASE?
默认情况下,CATALINA_HOME 和 CATALINA_BASE指向相同的目录,可以通过手动配置CATALINA_BASE在同一台机器上运行多个Tomcat实例,主要有以下好处:
- 便于管理和升级Tomcat。由于所有Tomcat实例共享一个CATALINA_HOME中的
.jar
文件和二进制文件,因此您可以轻松地将文件升级到较新版本,并通过CATALIA_HOME目录将更改应用到所有Tomcat实例; - 避免重复相同的静态
.jar
文件; - 共享某些特定的文件,如
setenv shell
CATALINA_BASE及CATALINA_HOME的文件内容
在开始使用CATALINA_BASE之前,首先考虑并创建CATALINA_BASE使用的目录树。请注意,如果您不创建所有推荐的目录,Tomcat会自动创建目录。如果无法创建必要的目录,例如由于权限问题,Tomcat将无法启动,或者可能无法正常运行。
CATALINA_BASE 文件结构:
CATALINA_BASE
├── bin
│ └── setenv.sh # 只放该文件
├── conf # cp CATALINA_HOME/conf/* CATALINA_BASE/conf/ ;至少含有以下两个配置文件
│ ├── server.xml
│ └── web.xml
├── lib
├── logs
├── temp
├── webapps
└── work
CATALINA_HOME 文件结构:
CATALINA_HOME
├── bin
│ └── startup.sh
│ └── shutdown.sh
├── lib
└── endorsed
-
bin/setenv.sh:设置所有的环境变量,默认情况下,setenv脚本文件不存在。文件格式如下:
#!/bin/sh export JAVA_HOME="/usr/java/latest" # -Xmx{{ heap_size }} -Xms{{ heap_size }} # export CATALINA_OPTS="-XX:+UseParallelGC {{ JAVA_OPTS }} -Djava.security.egd=file:/dev/./urandom" export CATALINA_PID="$CATALINA_BASE/tomcat.pid" export CATALINA_BASE="/usr/local/tomcat"
-
关于lib文件:将标准的Tomcat库放在
CATALINA_HOME / lib
文件下,将其他库,如数据库驱动程序等添加到对应的CATALINA_BASE / lib
目录下。Tips:一般情况下,建议Web应用程序之间的库永远不要共享,将它们放入应用程序内的WEB-INF / lib目录中。 -
关于conf文件:建议将
CATALINA_HOME/conf
所有文件拷贝到CATALINA_HOME/conf
如何使用CATALINA_BASE文件?
CATALINA_BASE属性是一个环境变量。您可以在执行Tomcat启动脚本之前进行设置,例如:
CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start