

Tomcat Version : 8.5+
我们先回顾下 前几节学习的的tomcat的功能及架构
Tomcat是一个基于JAVA的WEB容器,其实现了JAVA EE中的 Servlet 与 jsp 规范,与Nginx apache 服务器不同在于一般用于动态请求处理。
在架构设计上采用面向组件的方式设计, 即整体功能是通过组件的方式拼装完成。


上述组件,都是可以在server.xml中配置

root元素 , server 的顶级配置
主要属性:
基于telent 执行SHUTDOWN 命令即可关闭(必须大写)
telnet 127.0.0.1 8005
SHUTDOWN服务:将多个connector 与一个Engine组合成一个服务,可以配置多个服务。
连接器:用于接收 指定协议下的连接 并指定给唯一的Engine 进行处理。
主要属性:
举个例子
<Connector port="8860" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8862"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css,application/x-json,application/json,application/x-javascript"
maxThreads="1024" minSpareThreads="200"
acceptCount="800"
enableLookups="false"
/>引擎:用于处理连接的执行器,默认的引擎是catalina。一个service 中只能配置一个Engine。
主要属性:name 引擎名称 defaultHost 默认host
虚拟机:基于域名匹配至指定虚拟机。类似于nginx 当中的server,默认的虚拟机是localhost. 主要属性
举例配置多个Host
<Host name="www.luban.com" appBase="/usr/www/artisan"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.artisan.com.access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
Host>应用上下文:一个host 下可以配置多个Context ,每个Context 都有其独立的classPath。相互隔离,以免造成ClassPath 冲突。
举例配置多个Context
<Context docBase="hello" path="/h" reloadable="true"/>docBase 不能有 / , 否则是根目录
我们平时启动Tomcat过程是怎么样的?
再回想我们在idea 中启动WEB项目的时候 也是把War包复杂至webapps 目录解压吗?
显然不是,其真正做法是在Tomcat程序文件之外创建了一个部署目录,在一般生产环境中也是这么做的 即:Tomcat 程序目录和部署目录分开 。
我们只需要在启动时指定CATALINA_HOME 与 CATALINA_BASE 参数即可实现。
启动参数 | 描述说明 |
|---|---|
JAVA_OPTS | jvm 启动参数 , 设置内存 编码等 -Xms200m -Xmx200m -Dfile.encoding=UTF-8 |
JAVA_HOME | 指定jdk 目录,如果未设置从java 环境变量当中去找。 |
CATALINA_HOME | Tomcat 程序根目录 |
CATALINA_BASE | 应用部署目录,默认为$CATALINA_HOME |
CATALINA_OUT | 应用日志输出目录:默认$CATALINA_BASE/logs |
CATALINA_TMPDIR | 应用临时目录:默认:$CATALINA_BASE/temp |
好处很明显:
当然了,缺点也是你得搞个启动脚本
操作步骤:
#!/bin/bash
export JAVA_OPTS="-Xms1024m -Xmx1024m"
export JAVA_HOME=/root/artisan/jdk
export CATALINA_HOME=/root/artisan/apache-tomcat
export CATALINA_BASE=`pwd`
# start stop restart status
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 3
$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以上是一个比较简单的启动tomcat的脚本,本质上也是调用catalina.sh 。

可以调用 tomcat.sh/configtest 来验证配置是否正确。