Tomcat是一个java的web容器,Tomcat是实现了javaEE当中的Servlet和JSP规范的一个容器。Tomcat通常用于动态请求的处理(Servlet)。Tomcat采用组件的方式去设计(面向组件)。总体的功能是经过组件的方式去拼装的。而且每个组件均可以进行替换保证了它的一个灵活性。看到下图: java
链接器(Connector): 链接器帮助咱们把客户端里面的请求链接到咱们Tomcat的服务。Tomcat能够配置多个链接器。在这个链接器中能够指定Service和外部通讯的一个协议(HTTP 1.一、HTTPS、AJP: apache 私有协议,用于apache 反向代理Tomcat)。web
容器组件(Container ): 容器组件包含引擎(Engine,默认的引擎叫catalina)、虚拟机(Host)、Context。apache
Engine主要的做用是将协议解析并转换成request传给虚拟机。tomcat
虚拟机(Host) 基于域名分发请求(能够配置多个虚拟机)。bash
Context隔离每一个WEB应用,每个Context的ClassLoader都是独立的(Tomcat的webapps目录下有一个ROOT文件夹表明的是根路径)。服务器
Tomcat还有一些其它组件,像logger日志管理器、loader载入器、pipeline管道等。这些组件都是内嵌的组件。app
咱们知道Tomcat里面有哪些组件了,那这些组件的组成关系怎样呢?看下图: curl
一、JAVA_OPTS: jvm 启动参数 , 设置内存 编码等 -Xms100m -Xmx200m -Dfile.encoding=UTF-8;webapp
二、JAVA_HOME: 指定jdk 目录,若是未设置从java 环境变量当中去找;jvm
三、CATALINA_HOME: Tomcat 程序的根目录;
四、CATALINA_BASE: 应用部署目录,默认为CATALINA_HOME;
五、CATALINA_OUT: 应用日志输出目录,默认为CATALINA_BASE;
六、CATALINA_TMPDIR: 应用临时目录,默认为CATALINA_BASE/temp。
一、复制WAR包到Tomcat的webapps文件夹下;
二、执行starup.bat(startup.sh)脚本启动;
三、在启动过程当中会自动将war包解压装载。
可是在咱们平时开发的时候是直接在Eclipse或IDEA中启动WEB项目的,不会把将项目打包,而后将war包复制到Tomcat的webapps目录下再执行starup.bat(startup.sh)脚本的。
咱们在Eclipse或IDEA中启动WEB项目的时候实际上是在Tomcat程序文件以外建立了一个部署目录,在通常的生产环境中也是这么作的 即:Tomcat程序目录和部署目录分开 。咱们在只须要在启动时指定CATALINA_HOME 与 CATALINA_BASE 参数便可实现。
一、下载并解压Tomcat
二、建立apps目录,在apps下建立test-web,test-web下新建一个logs目录。
三、将Tomcat目录下的conf和webapps两个目录拷贝一份到test-web。
四、建立并编写脚本:tomcat.sh。
#!/bin/bash
#####设置jvm内存,最小内存和最大内存
export JAVA_OPTS="-Xms100m -Xmx200m"
#####指定JDK目录
export JAVA_HOME=/usr/local/java
#####对应的Tomcat的目录
export CATALINA_HOME=/usr/local/apache-tomcat-8.5.34
##### pwd:当前脚本所在目录
export CATALINA_BASE="`pwd`"
##### 接收一个参数,这个参数包含start、stop、restart、version和configtest
##### start:执行catalina.sh脚本
##### stop:关闭catalina.sh脚本
##### restart:重启catalina.sh脚本
##### version:查看版本号
##### configtest:查看配置是否正确
case $1 in
start)
$CATALINA_HOME/bin/catalina.sh start
echo start success!!
;;
stop)
$CATALINA_HOME/bin/catalina.sh stop
echo stop success!!
;;
restart)
$CATALINA_HOME/bin/catalina.sh stop
echo stop success!!
sleep 2
$CATALINA_HOME/bin/catalina.sh start
echo start success!!
;;
version)
$CATALINA_HOME/bin/catalina.sh version
;;
configtest)
$CATALINA_HOME/bin/catalina.sh configtest
;;
esac
exit 0
复制代码
五、在test-web目录下执行./tomcat.sh start
命令启动Tomcat,打印出的日志最后一行为start success!!
即启动成功
六、执行curl 127.0.0.1:8080,日志打印出webapps/ROOT/index.jsp文件的内容则访问成功。
这样就能够将应用程序和Tomcat的部署目录进行分离。那这样有什么好处呢?看下图:
二、我在每个应用程序内新建了一个logs文件夹,咱们的日志文件是独立的不会和其它项目混淆在一块儿。
三、咱们的配置文件conf也是独立的。各应用之间互不影响,灵活性高。