Tomcat-配置文件解析

Tomcat-学习目录

1、Tomcat-目录结构介绍

1.1、Tomcat主目录介绍

]# ll /usr/local/tomcat/
drwxr-x--- 2 root root  4096 May  3 14:13 bin      # 主要包含启动和关闭tomcat脚本,以及依赖jar文件
drwx------ 3 root root   254 May  3 14:15 conf     # tomcat配置文件目录
drwxr-x--- 2 root root  4096 May  3 14:13 lib      # tomcat运行需要加载的jar包
drwxr-x--- 2 root root   197 May  3 14:15 logs     # tomcat在运行过程中产生的日志文件#tomcat存放临时文件
drwxr-x--- 2 root root    30 May  3 14:13 temp     # 临时文件存放位置
drwxr-x--- 7 root root    81 Apr 13 16:10 webapps  # tomcat默认站点目录
drwxr-x--- 3 root root    22 May  3 14:15 work     # tomcat运行时产生的缓存文件

1.2、【conf】目录介绍

【conf】目录主要是用来存放tomcat的一些配置文件。
server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码
web.xml可以设置tomcat支持的文件类型
context.xml可以用来配置数据源之类的
tomcat-users.xml用来配置管理tomcat的用户与权限
在Catalina目录下可以设置默认加载的项目

2、server.xml 【Tomcat主配置文件解析】

]# cat /usr/local/tomcat/conf/server.xml 
<?xml version="1.0" encoding="UTF-8"?>
<!-- server表示一个tocmat实例,通过8005远程调用可以关闭tomcat-->
<Server port="8005" shutdown="SHUTDOWN">

<!-- 监听器 -->
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

<!-- 全局资源 -->
  <GlobalNamingResources>
  
    <!--base认证模块->所有站点都能使用 -> conf/tomcat-users.xmL文件定义-->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <!-- http连接器->处理请求与响应-->
  <Service name="Catalina">

    <! --http连接器->处理请求与响应-->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />

    <!-- 共享线程池-->
    <!-- 
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               maxParameterCount="1000"
               />
    -->

    <!-- 定义  SSL/TLS HTTP/1.1,证书格式:jks -->
    <!-- 
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true"
               maxParameterCount="1000"
               >
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->

    <!-- 定义 SSL/TLS HTTP/1.1 证书格式:pem-->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true"
               maxParameterCount="1000"
               >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                         certificateFile="conf/localhost-rsa-cert.pem"
                         certificateChainFile="conf/localhost-rsa-chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->

    < ! --ajp连接器 -> apache代理tomcat使用mod_jk需要该协议 -->
    <!--
    <Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443"
               maxParameterCount="1000"
               />
    -->
    <!-- Engine引擎 -->
    <Engine name="Catalina" defaultHost="localhost">

      <!--多个tomcat配置相同Cluster进行session共享的一种解决方案 -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->

      <!-- 调用认证配置,引入UserDatabase资源定义的用户名及密码进行base认证 -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>

      <!--默认网站站点-->
      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

3、server.xml 【Tomcat主配置文件【图解】】

3.1、请求流程图

3.2、Tomcat的HTTP请求过程

1、用户发出一个请求,如http://tomcat.cyc.com:8080/index.jsp
2、Connector发现是http/1.1协议,而且还是8080端口,于是就把请求接收后交给符合条件的Engine
3、Engine通过请求中的主机名tomcat.oldxu.com查找满足条件的虚拟主机(Host)
4、找到后就去此虚拟主机指定的appBase (代码存放的目录)最后将解析产生的结果返回给用户。

3.3、解析说明

一个server表示一个tomcat实例(当然也可以有多个实例)
一个server中包含多个Connector连接器,Connector的主要功能是接受、响应用户请求。
service的作用是∶将connector关联至engine(catalina引擎)
一个host就是一个站点,类似于nginx的多站点
context类似于nginx中location的概念

 

posted @ 2023-05-03 18:15  小粉优化大师  阅读(276)  评论(0编辑  收藏  举报