精华内容
下载资源
问答
  • tomcat配置文件详解

    千次阅读 2020-08-11 17:19:15
    tomcat配置文件详解目录结构及作用tomcat配置文件1. context.xml2. web.xml3. server.xml4. tomcat-users.xml运维常用配置文件1. 整体结构2. 元素分类 目录结构及作用 查看目录: [root@localhost tomcat]# ls bin ...

    目录结构及作用

    查看目录:

    [root@localhost tomcat]# ls
    bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
    
    
    • bin :脚本文件目录。
    • conf:存放配置文件,最重要的是server.xml。
    • logs:存放日志文件。
    • lib :仅对所有WEB APP可见,对TOMCAT不可见(使用Shared类加载器加载)。
    • temp:Tomcat运行时候存放临时文件用的。
    • webapps:web应用发布目录。
    • work:Tomcat把各种由jsp生成的servlet文件放在这个目录下。删除后,启动时会自动创建。
      在这里插入图片描述

    tomcat配置文件

    [root@localhost tomcat]# cd conf/
    [root@localhost conf]# ls
    Catalina  catalina.policy  catalina.properties  context.xml  jaspic-providers.xml  jaspic-providers.xsd  logging.properties  server.xml  tomcat-users.xml  tomcat-users.xsd  web.xml
    
    

    Tomcat 的配置文件由4个 xml 文件构成,context.xml、web.xml、server.xml、tomcat-users.xml

    1. context.xml

    Context.xml 是 Tomcat 公用的环境配置,tomcat 服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。

    服务一旦启动,在去修改server.xml,就得需要重新加载配置文件,或者重新启动服务来加载文件。 而context.xml的优势是无需重启。 所以我们一般会在这个文件中独立配置。

    2. web.xml

    Web应用程序描述文件,都是关于是Web应用程序的配置文件。所有Web应用的 web.xml 文件的父文件。

    3. server.xml

    server.xml是对tomcat的设置,可以设置端口号,添加虚拟机这些的,是对服务器的设置

    4. tomcat-users.xml

    Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Manager也成为了使用非常普遍的功能应用。
    Tomcat Manager的用户配置是在Tomcat安装目录/conf/tomcat-users.xml文件中进行管理的

    运维常用配置文件

    作为运维用的最多的还是server.xml,同一台服务器部署多tomcat时,修改此文件端口别冲突就可以
    vim server.xml

    <?xml version='1.0' encoding='utf-8'?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      the License.  You may obtain a copy of the License at
    
          http://www.apache.org/licenses/LICENSE-2.0
      distributed under the License is distributed on an "AS IS" BASIS,
      limitations under the License.
     -->
     ### 上面一堆说的是你可以通过上买的那个网址获得授权的副本, 与咱们没关系,就相当于个声明
    <Server port="8005" shutdown="SHUTDOWN">
      -->
      #### 关闭使用的端口
      <!--APR library loader. Documentation at /docs/apr.html -->
      <Listener className="org.apache.catalina.core.JasperListener" />
    
      <!-- Global JNDI resources   
           Documentation at /docs/jndi-resources-howto.html
      -->
             UserDatabaseRealm to authenticate users
        -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  pathname="conf/tomcat-users.xml" />
           Documentation at /docs/config/service.html
       -->
      <Service name="Catalina">
      ### 定义service组件,用来关联executor和engine
    
        <!--
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="150" minSpareThreads="4"/>
             and responses are returned. Documentation at :
        <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000"
                   redirectPort="8443" />
        <!-- A "Connector" using the shared thread pool-->
        <!--
        <Connector executor="tomcatThreadPool"
                   port="8080" protocol="HTTP/1.1"
             documentation -->
        <!--
                   clientAuth="false" sslProtocol="TLS" />
        -->
    
    
    
             on to the appropriate Host (virtual host).
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
        -->
        <Engine name="Catalina" defaultHost="www.zmkjedu.com">
    
          <!--For clustering, please take a look at documentation at:
              /docs/cluster-howto.html  (simple how to)
              /docs/config/cluster.html (reference documentation) -->
          -->
               via a brute-force attack -->
          <Realm className="org.apache.catalina.realm.LockOutRealm">
                 resources under the key "UserDatabase".  Any edits
                 available for use by the Realm.  -->
                   resourceName="UserDatabase"/>
          </Realm>
    
          <Host name="www.zmkjedu.com"  appBase="/web"
    <?xml version='1.0' encoding='utf-8'?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      the License.  You may obtain a copy of the License at
    
          http://www.apache.org/licenses/LICENSE-2.0
      distributed under the License is distributed on an "AS IS" BASIS,
      limitations under the License.
     -->
    <Server port="8005" shutdown="SHUTDOWN">
      -->
      <!--APR library loader. Documentation at /docs/apr.html -->
      <Listener className="org.apache.catalina.core.JasperListener" />
    
      <!-- Global JNDI resources
           Documentation at /docs/jndi-resources-howto.html
      -->
             UserDatabaseRealm to authenticate users
        -->
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  pathname="conf/tomcat-users.xml" />
           Documentation at /docs/config/service.html
       -->
      <Service name="Catalina">
    
        <!--
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    126             unpackWARs="true" autoDeploy="true">
    127 
    128         <!-- SingleSignOn valve, share authentication between we    b applications
    129              Documentation at: /docs/config/valve.html -->
    130         <!--
    131         <Valve className="org.apache.catalina.authenticator.Sing    leSignOn" />
    132         -->
    133 
    134         <!-- Access log processes all example.
    135              Documentation at: /docs/config/valve.html
    136              Note: The pattern used is equivalent to using patte    rn="common" -->
    137         <Valve className="org.apache.catalina.valves.AccessLogVa    lve" directory="logs"
    138                prefix="localhost_access_log." suffix=".txt"
    139                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    140 
    141       </Host>
    142     </Engine>
    143   </Service>
    144 </Server>
    
    
    

    1. 整体结构

     1  <Server>
     2   <Service>
     3         <Connector />
     4         <Connector />
     5         <Engine>
     6             <Host>
     7                 <Context />
     8             </Host>
     9         </Engine>
    10     </Service>
    11 </Server>
    
    

    2. 元素分类

    元素分为4类
    1)顶层元素:和

    元素是整个配置文件的根元素,元素则代表一个Engine元素以及一组与之相连的Connector元素。

    (2)连接器:

    代表了外部客户端发送请求到特定Service的接口;同时也是外部客户端从特定Service接收响应的接口。

    (3)容器:

    容器的功能是处理Connector接收进来的请求,并产生相应的响应。Engine、Host和Context都是容器,但它们不是平行的关系,而是父子关系:Engine包含Host,Host包含Context。一个Engine组件可以处理Service中的所有请求,一个Host组件可以处理发向一个特定虚拟主机的所有请求,一个Context组件可以处理一个特定Web应用的所有请求。

    (4)内嵌组件:可以内嵌到容器中的组件。实际上,Server、Service、Connector、Engine、Host和Context是最重要的最核心的Tomcat组件,其他组件都可以归为内嵌组件。

    展开全文
  • Tomcat配置文件详解

    千次阅读 2018-07-12 14:20:38
    Server.xml配置文件说明,以及Tomcat组件的说明Tomcat服务器是由一系列可以配置的组件构成,其中核心组件是Catalina Servlet,它是最顶层组件Tomcat各组件是在server.xml(CATALINA_HOME\conf\server.xml)配置的。...

    Server.xml配置文件说明,以及Tomcat组件的说明

    Tomcat服务器是由一系列可以配置的组件构成,其中核心组件是Catalina Servlet,它是最顶层组件
    Tomcat各组件是在server.xml(CATALINA_HOME\conf\server.xml)配置的。

    Tomcat各组件关系图

    1.Server

    Server即Catalina Servlet组件,它是server.xml的最外层元素

    常用属性

    • Address—Tomcat监听shutdown命令的地址,默认为localhost
    • className—指定实现org.apache.catalina.Server接口的类,默认值为org.apache.catalina.core.StandardServer
    • port-Tomcat监听shutdown命令的端口。设置为-1,则禁止通过端口关闭Tomcat,同时shutdown.bat也不能使用
    • shutdown-通过指定的地址(Address)、端口(port)关闭Tomcat所需的字符串。修改shutdown的值,对shutdown.bat无影响

    通过端口关闭Tomcat,可以用telnet进行测试
    安装telnet
    打开控制面板-程序-启用或关闭Windows功能,勾上”Telnet服务器”、”Telnet客户端”,点”确定”

    安装成功后,首先启动Tomcat,然后在cmd下输入telnet localhost 8005,然后输入SHUTDOWN即可关闭Tomcat

    2.Listener

    Listener即监听器,负责监听特定的事件,当特定事件触发时,Listener会捕捉到该事件,并做出相应处理。Listener通常用在Tomcat的启动和关闭过程。Listener可嵌在Server、Engine、Host、Context内
    常用属性:
    className-指定实现org.apache.catalina.LifecycleListener接口的类

    3.GlobalNamingResources

    GlobalNamingResources用于配置JNDI

    4.Service

    Service包装Executor、Connector、Engine,以组成一个完整的服务
    常用属性:
    className—指定实现org.apache.catalina. Service接口的类,默认值为org.apache.catalina.core.StandardService
    name—Service的名字
    Server可以包含多个Service组件

    5.Executor

    Executor即Service提供的线程池,供Service内各组件使用
    常用属性:
    className-指定实现org.apache.catalina. Executor接口的类,默认值为org.apache.catalina.core. StandardThreadExecutor
    name-线程池的名字
    daemon-是否为守护线程,默认值为true
    maxIdleTime-总线程数高于minSpareThreads时,空闲线程的存活时间(单位:ms),默认值为60000,即1min
    maxQueueSize-任务队列上限,默认值为Integer.MAX_VALUE(2147483647),超过此值,将拒绝
    maxThreads-线程池内线程数上限,默认值为200
    minSpareThreads-线程池内线程数下限,默认值为25
    namePrefix-线程名字的前缀。线程名字通常为namePrefix+ threadNumber
    prestartminSpareThreads-是否在Executor启动时,就生成minSpareThreads个线程。默认为false
    threadPriority-Executor内线程的优先级,默认值为5(Thread.NORM_PRIORITY)
    threadRenewalDelay-重建线程的时间间隔。重建线程池内的线程时,为了避免线程同时重建,每隔threadRenewalDelay(单位:ms)重建一个线程。默认值为1000,设置为负则不重建

    6.Connector

    Connector是Tomcat接收请求的入口,每个Connector有自己专属的监听端口
    Connector有两种:HTTP Connector和AJP Connector
    常用属性:
    port-Connector接收请求的端口
    protocol-Connector使用的协议(HTTP/1.1或AJP/1.3)
    connectionTimeout-每个请求的最长连接时间(单位:ms)
    redirectPort-处理http请求时,收到一个SSL传输请求,该SSL传输请求将转移到此端口处理
    executor-指定线程池
    如果没设置executor,可在Connector标签内设置maxThreads(默认200)、minSpareThreads(默认10)
    acceptCount-Connector请求队列的上限。默认为100。当该Connector的请求队列超过acceptCount时,将拒绝接收请求

    7.Engine

    Engine负责处理Service内的所有请求。它接收来自Connector的请求,并决定传给哪个Host来处理,Host处理完请求后,将结果返回给Engine,Engine再将结果返回给Connector
    常用属性:
    name-Engine的名字
    defaultHost-指定默认Host。Engine接收来自Connector的请求,然后将请求传递给defaultHost,defaultHost 负责处理请求
    className-指定实现org.apache.catalina. Engine接口的类,
    默认值为org.apache.catalina.core. StandardEngine
    backgroundProcessorDelay-Engine及其部分子组件(Host、Context)调用backgroundProcessor方法的时间间隔。backgroundProcessorDelay为负,将不调用backgroundProcessor。
    backgroundProcessorDelay的默认值为10
    注:Tomcat启动后,Engine、Host、Context会启动一个后台线程,定期调用backgroundProcessor方法。backgroundProcessor方法主要用于重新加载Web应用程序的类文件和资源、扫描Session过期
    jvmRoute-Tomcat集群节点的id。部署Tomcat集群时会用到该属性,
    Service内必须包含一个Engine组件
    Service包含一个或多个Connector组件,Service内的Connector共享一个Engine

    8.Host

    Host负责管理一个或多个Web项目
    常用属性:
    name-Host的名字
    appBase-存放Web项目的目录(绝对路径、相对路径均可)
    unpackWARs-当appBase下有WAR格式的项目时,是否将其解压(解成目录结构的Web项目)。设成false,则直接从WAR文件运行Web项目
    autoDeploy-是否开启自动部署。设为true,Tomcat检测到appBase有新添加的Web项目时,会自动将其部署
    startStopThreads-线程池内的线程数量。Tomcat启动时,Host提供一个线程池,用于部署Web项目
    startStopThreads为0,并行线程数=系统CPU核数
    startStopThreads为负数,并行线程数=系统CPU核数+startStopThreads,如果(系统CPU核数+startStopThreads)小于1,并行线程数设为1
    startStopThreads为正数,并行线程数= startStopThreads
    startStopThreads默认值为1
    startStopThreads为默认值时,Host只提供一个线程,用于部署Host下的所有Web项目。如果Host下的Web项目较多,由于只有一个线程负责部署这些项目,因此这些项目将依次部署,最终导致Tomcat的启动时间较长。此时,修改startStopThreads值,增加Host部署Web项目的并行线程数,可降低Tomcat的启动时间
    Tomcat配置多Host可参考此文:http://grass51.blog.51cto.com/4356355/1123400

    9.Context

    Context代表一个运行在Host上的Web项目。一个Host上可以有多个Context
    将一个Web项目(D:\MyApp)添加到Tomcat,在Host标签内,添加Context标签


    常用属性:
    path-该Web项目的URL入口。path设置为””,输入http://localhost:8080即可访问MyApp;path设置为”/test/MyApp”,输入http://localhost:8080/test/MyApp才能访问MyApp
    docBase-Web项目的路径,绝对路径、相对路径均可
    (相对路径是相对于CATALINA_HOME\webapps)
    reloadable-设置为true,Tomcat会自动监控Web项目的/WEB-INF/classes/和/WEB-INF/lib变化,当检测到变化时,会重新部署Web项目。reloadable默认值为false。通常项目开发过程中设为true,项目发布的则设为false
    crossContext-设置为true,该Web项目的Session信息可以共享给同一host下的其他Web项目。默认为false

    10.Cluster

    Tomcat集群配置。(见Tomcat 8(三)Apache2.2.25+Tomcat8.0.3集群配置和Tomcat 8(四)server.xml的Cluster标签详解)

    11.Realm

    Realm可以理解为包含用户、密码、角色的”数据库”。Tomcat定义了多种Realm实现:JDBC Database Realm、DataSource Database Realm、JNDI Directory Realm、UserDatabase Realm等

    12.Valve

    Valve可以理解为Tomcat的拦截器,而我们常用filter为项目内的拦截器。Valve可以用于Tomcat的日志、权限等。Valve可嵌在Engine、Host、Context内

    最后再来回顾一下Tomcat处理请求的流程图

    (request为http://localhost:8080/examples/index.html)

    展开全文
  • 超详细Tomcat配置文件解读

    万次阅读 2018-10-10 10:05:08
    但是由于Tomcat遵循apache开源协议,并且对当前Java开发框架开源组件Structs、Spring和Hibernate等实现完美支持,因此tomcat被众多企业用来部署配置众多的Java应用程序,实现替代一些商业的Java应用服务器。...

    1、了解tomcat
    Tomcat不是一个完整意义上的Jave EE(j2ee)服务器,因为它没有提供完整的Java EE企业应用平台的API。但是由于Tomcat遵循apache开源协议,并且对当前Java开发框架开源组件Structs、Spring和Hibernate等实现完美支持,因此tomcat被众多企业用来部署配置众多的Java应用程序,实现替代一些商业的Java应用服务器。

    2、Tomcat的目录结构
    要部署使用tomcat,则必须了解tomcat的目录结构以及各目录的作用。这里以tomcat7为例
    安装Tomcat,再次不在阐述,[详情请移步]

    进入tomcat安装目录下:

    |-- bin
    |   |-- bootstrap.jar tomcat启动时所依赖的一个类,在启动tomcat时会发现Using CLASSPATH: 是加载的这个类
    |   |-- catalina-tasks.xml 定义tomcat载入的库文件,类文件
    |   |-- catalina.bat
    |   |-- catalina.sh                  tomcat单个实例在Linux平台上的启动脚本
    |   |-- commons-daemon-native.tar.gz            jsvc工具,可以使tomcat已守护进程方式运行,需单独编译安装
    |   |-- commons-daemon.jar            jsvc工具所依赖的java类
    |   |-- configtest.bat
    |   |-- configtest.sh         tomcat检查配置文件语法是否正确的Linux平台脚本
    |   |-- cpappend.bat
    |   |-- daemon.sh tomcat已守护进程方式运行时的,启动,停止脚本
    |   |-- digest.bat
    |   |-- digest.sh
    |   |-- setclasspath.bat
    |   |-- setclasspath.sh
    |   |-- shutdown.bat
    |   |-- shutdown.sh tomcat服务在Linux平台下关闭脚本
    |   |-- startup.bat
    |   |-- startup.sh          tomcat服务在Linux平台下启动脚本
    |   |-- tomcat-juli.jar
    |   |-- tomcat-native.tar.gz  使tomcat可以使用apache的apr运行库,以增强tomcat的性能需单独编译安装
    |   |-- tool-wrapper.bat
    |   |-- tool-wrapper.sh
    |   |-- version.bat
    |   `-- version.sh 查看tomcat以及JVM的版本信息
    |-- conf 顾名思义,配置文件目录
    |   |-- catalina.policy 配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,session等的管理权限
    |   |-- catalina.properties 配置tomcat的classpath等
    |   |-- context.xml tomcat的默认context容器
    |   |-- logging.properties 配置tomcat的日志输出方式
    |   |-- server.xml        tomcat的主配置文件
    |   |-- tomcat-users.xml        tomcat的角色(授权用户)配置文件
    |   `-- web.xml tomcat的应用程序的部署描述符文件
    |-- lib
    |-- logs 日志文件默认存放目录
    |-- temp
    |   `-- safeToDelete.tmp
    |-- webapps           tomcat默认存放应用程序的目录,好比apache的默认网页存放路径是/var/www/html一样
    |   |-- docs tomcat文档
    |   |-- examples                     tomcat自带的一个独立的web应用程序例子
    |   |-- host-manager              tomcat的主机管理应用程序
    | |   |-- META-INF           整个应用程序的入口,用来描述jar文件的信息
    | |   |   `-- context.xml     当前应用程序的context容器配置,它会覆盖tomcat/conf/context.xml中的配置
    | |   |-- WEB-INF  用于存放当前应用程序的私有资源
    | |   |   |-- classes  用于存放当前应用程序所需要的class文件
    |       |   | |-- lib          用于存放当前应用程序锁需要的jar文件
    | |   |   `-- web.xml 当前应用程序的部署描述符文件,定义应用程序所要加载的serverlet类,以及该程序是如何部署的
    |   |-- manager                  tomcat的管理应用程序
    |   |-- ROOT              指tomcat的应用程序的根,如果应用程序部署在ROOT中,则可直接通过http://ip:port 访问到
    `-- work 用于存放JSP应用程序在部署时编译后产生的class文件

    3、了解tomcat的主配置文件(server.xml)结构及含义
    如下图所示,前端请求被tomcat直接接收或者由前端的代理,通过HTTP,或者AJP代理给Tomcat,此时请求被tomcat中的connector接收,不同的connector和Engine被service组件关联起来,在一个Engine中定义了许多的虚拟主机,由Host容器定义,每一个Host容器代表一个主机,在各自的Host中,又可以定义多个Context,用此来定义一个虚拟主机中的多个独立的应用程序。

    4、单实例应用程序配置一例

    规划: 
    网站网页目录:/web/www      域名:www.test1.com 
    论坛网页目录:/web/bbs     URL:bbs.test1.com/bbs 
    网站管理程序:$CATALINA_HOME/wabapps   URL:manager.test.com    允许访问地址:172.23.136.* 
    
    conf/server.xml 
    <Server port="8005" shutdown="SHUTDOWN"> 
      <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
      <Listener className="org.apache.catalina.core.JasperListener" /> 
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 
      <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 
      <GlobalNamingResources> 
      <!-- 全局命名资源,来定义一些外部访问资源,其作用是为所有引擎应用程序所引用的外部资源的定义 --!> 
        <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> 
      <!-- 定义的一个名叫“UserDatabase”的认证资源,将conf/tomcat-users.xml加载至内存中,在需要认证的时候到内存中进行认证 --> 
      <Service name="Catalina"> 
      <!-- # 定义Service组件,同来关联Connector和Engine,一个Engine可以对应多个Connector,每个Service中只能一个Engine --!> 
        <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 
        <!-- 修改HTTP/1.1的Connector监听端口为80.客户端通过浏览器访问的请求,只能通过HTTP传递给tomcat。  --> 
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
        <Engine name="Catalina" defaultHost="test.com"> 
        <!-- 修改当前Engine,默认主机是,www.test.com  --> 
        <Realm className="org.apache.catalina.realm.LockOutRealm"> 
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
                   resourceName="UserDatabase"/> 
        </Realm> 
        # Realm组件,定义对当前容器内的应用程序访问的认证,通过外部资源UserDatabase进行认证 
          <Host name="test.com"  appBase="/web" unpackWARs="true" autoDeploy="true"> 
          <!--  定义一个主机,域名为:test.com,应用程序的目录是/web,设置自动部署,自动解压    --> 
            <Alias>www.test.com</Alias> 
            <!--    定义一个别名www.test.com,类似apache的ServerAlias --> 
            <Context path="" docBase="www/" reloadable="true" /> 
            <!--    定义该应用程序,访问路径"",即访问www.test.com即可访问,网页目录为:相对于appBase下的www/,即/web/www,并且当该应用程序下web.xml或者类等有相关变化时,自动重载当前配置,即不用重启tomcat使部署的新应用程序生效  --> 
            <Context path="/bbs" docBase="/web/bbs" reloadable="true" /> 
            <!--  定义另外一个独立的应用程序,访问路径为:www.test.com/bbs,该应用程序网页目录为/web/bbs   --> 
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/web/www/logs" 
                   prefix="www_access." suffix=".log" 
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
            <!--   定义一个Valve组件,用来记录tomcat的访问日志,日志存放目录为:/web/www/logs如果定义为相对路径则是相当于$CATALINA_HOME,并非相对于appBase,这个要注意。定义日志文件前缀为www_access.并以.log结尾,pattern定义日志内容格式,具体字段表示可以查看tomcat官方文档   --> 
          </Host> 
          <Host name="manager.test.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
          <!--   定义一个主机名为man.test.com,应用程序目录是$CATALINA_HOME/webapps,自动解压,自动部署   --> 
            <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="172.23.136.*" /> 
            <!--   定义远程地址访问策略,仅允许172.23.136.*网段访问该主机,其他的将被拒绝访问  --> 
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/web/bbs/logs" 
                   prefix="bbs_access." suffix=".log" 
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
            <!--   定义该主机的访问日志      --> 
          </Host> 
        </Engine> 
      </Service> 
    </Server> 
    
    conf/tomcat-users.xml 
    <?xml version='1.0' encoding='utf-8'?> 
    <tomcat-users> 
      <role rolename="manager-gui" /> 
      <!--  定义一种角色名为:manager-gui    --> 
      <user username="cz" password="manager$!!110" roles="manager-gui" /> 
      <!--  定义一个用户的用户名以及密码,并赋予manager-gui的角色    --> 
    </tomcat-users> 

     

    由以上配置不难看出存在的一个问题。如果我们想要对其中一个应用程序的配置做一些修改,那么就必须重新启动tomcat,那样势必就会影响到另外两个应用程序的正常服务。因此以上配置是不适合线上使用的,因此需要将其配置为多实例,每个实例只跑一个独立的应用程序,那样我们应用程序之间就不会在互相受到影响。但是我们将面临这样一个问题,80端口只能被一个HTTP/1.1 Connector监听,而三个tomcat实例则至少需要3个HTTP/1.1 Connector,这样我们就需要一个前端代理做分发处理,接收HTTP 80端口的请求,按域名通过每个tomcat实例的AJP/1.3 Connector传递请求。而前端的代理选择apache,基于这样的思路,我们还可以做到tomcat的负载均衡,而且apache会将接收的HTTP超文本传输报文重新封装成二进制格式通过AJP/1.3 协议传递给后端的tomcat处理,在效率上也是有明显的提升。

    5、结合apache构造多实例tomcat集群
    apache结合tomcat的方式主要有三种:mod_jk,ajp_proxy,http_proxy(以http协议代理给tomcat),而当前使用最多的还是要数mod_jk。因为mod_jk出现的较早,技术已经相当成熟,而且具备集群节点健康检测功能,支持大型的AJP数据包。

    安装apache,tomcat这里不在详述,需要了解,[请狂戳这里]
    安装tomcat-connectors
    tar zxvf tomcat-connectors-1.2.30-src.tar.gz
    cd tomcat-connectors/src
    ./configure --with-apxs=/usr/local/apache/bin/apxs
    make && make install

    ①单独建立httpd-jk.conf

    单独建立httpd-jk.conf文件用来配置mod_jk的相关设置
    vim /usr/local/apache2/conf/extra/httpd-jk.conf

    LoadModule jk_module modules/mod_jk.so
    # 配置apache装载mod_jk.so模块
    JkWorkersFile /usr/local/apache/conf/extra/workers.properties
    # 指定保存了worker相关工作属性定义的配置文件
    JkLogFile /usr/local/apache/logs/mod_jk.log
    # 定义mod_jk模块的日志文件
    JkLogLevel info
    # 定义mod_jk模块日志的记录级别

    ②建立worker相关工作属性定义的配置文件
    vim /usr/local/apache/conf/extra/workers.properties
    worker.list=Cluster1,stat
    worker.web2.port=8003
    worker.web2.host=172.23.138.19
    worker.web2.type=ajp13
    worker.web2.lbfactor=1

    worker.web3.port=8003
    worker.web3.host=172.23.136.144
    worker.web3.type=ajp13
    worker.web3.lbfactor=1
    worker.Cluster1.type=lb
    worker.Cluster1.balance_workers=web2,web3
    worker.Cluster1.sticky_session = 1

    worker.stat.type=status
    worker.list=Cluster2
    worker.manager2.port=7003
    worker.manager2.host=172.23.138.19
    worker.manager2.type=ajp13
    worker.manager2.lbfactor=1

    worker.manager3.port=7003
    worker.manager3.host=172.23.136.144
    worker.manager3.type=ajp13
    worker.manager3.lbfactor=1
    worker.Cluster2.type=lb
    worker.Cluster2.balance_workers=manager2,manager3
    worker.Cluster2.sticky_session = 1

    ③配置后端tomcat多实例
    使用脚本快速部署tomcat实例,修改新实例的AJP/1.3 Connector的监听端口,HTTP/1.1 Connector的监听端口以及Server容器的监听端口。脚本内容如下:

     

    #!/bin/bash 

    # when:2013-01-21 

    # who: czlinux@163.com 

    Java_Home=/usr/java/jdk1.7.0_10 

    Tomcat_Home=/usr/local/tomcat_7 

    Tomcat_User=tomcat 

    New_instance=/usr/local/new 

     

    if [ ! -d $New_instance ];then 

            mkdir -p $New_instance 

    else 

            echo "The parh alreadly exists..." 

            exit 

    fi 

     

    id $Tomcat_User 2&> /dev/null & useradd -r $Tomcat_User 

     

    cp -r $Tomcat_Home/conf $New_instance 

    mkdir -p $New_instance/{logs,temp,webapps/ROOT,work} 

     

    cat > $New_instance/tomcat.sh << EOF 

    #!/bin/sh 

     

    JAVA_HOME=`echo $Java_Home` 

    JAVA_OPTS="-Xms64m -Xmx128m" 

    CATALINA_HOME=`echo $Tomcat_Home` 

    CATALINA_BASE=`echo $New_instance` 

    export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE 

     

    su `echo $Tomcat_User` \$CATALINA_HOME/bin/catalina.sh \$1 

    EOF 

     

    cat > $New_instance/webapps/ROOT/index.jsp << EOF 

    <html><body><center> 

    <h1>This is a new tomcat instance!</h1> 

    </br> 

    Now time is: <%=new java.util.Date()%> 

    </center> 

    </body></html> 

    EOF 

     

    chown $Tomcat_User:$Tomcat_User -R $New_instance 

    现在后端每台tomcat节点的配置状况如下:

    www.test.com实例:

    <Server port="8000">

    <Connector port="8001" protocol="HTTP/1.1">

    <Connector port="8003" protocol="AJP/1.3">

    </Server>

    manager.test.com实例:

    <Server port="7000">

    <Connector port="7001" protocol="HTTP/1.1">

    <Connector port="7003" protocol="AJP/1.3">

    </Server>

    使用新实例中的tomcat.sh进行启动每个实例

     

    ④配置多域名的负载均衡
    vim /usr/local/apache/conf/extra/httpd-vhosts.conf

     

    NameVirtualHost *:80
    <VirtualHost *:80>
        ServerName www.test.com
        JkMount /* Cluster1
    </VirtualHost>
    <VirtualHost *:80>
        ServerName manager.test.com
        JkMount /* Cluster2
        JkMount /status stat
    </VirtualHost>

     

    到此基于多域名多实例的tomcat负载均衡集群构建完成,启动apache即可,基于当前结构还可结合持久会话管理器(PersistentManager)来实现会话持久的效果。

    展开全文
  • Win10安装Tomcat服务器与配置环境变量

    万次阅读 多人点赞 2019-10-18 11:52:41
    文章目录下载安装JDK下载Tomcat压缩包解压Tomcat压缩包Tomcat目录结构启动Tomcat环境变量配置 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的...

    Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。本文主要讲述Windows环境Tomcat服务器安装与环境变量配置

    下载安装JDK

    要想安装Tomcat服务器,首先要安装配置好JDK,可以参考JDK安装与环境变量配置

    Windows + R然后输入cmd进入命令行窗口,检查Java是否安装正确,检查的命令为java -version

    如果输出类似下面的内容说明安装成功

    java version "1.8.0_191"
    Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
    

    下载Tomcat压缩包

    Tomcat有Tomcat7,Tomcat8和Tomcat9,目前企业使用较多的是Tomcat8,所以这里以Tomcat8为列

    进入Tomcat8下载网址:Tomcat8下载网址https://tomcat.apache.org/download-80.cgi

    点击左侧Download下的对应版本,这里我下载的是64-bit Windows zip,即Windows 64位的zip包

    Tomcat主要有三个安装版本

    • tar.gz:Linux环境下的压缩包,免安装

    • Windows.zip:Windows压缩包,免安装,解压即用,推荐安装,同时注意根据自己电脑是64位系统还是32位系统下载对应的压缩包

    • Windows Service Installer:Windows安装包,32位和64位版本的Windows系统都适用

    在这里插入图片描述

    解压Tomcat压缩包

    将下载好的zip包放到指定的位置,注意:路径不能有中文和特殊字符

    我的zip包放在C:\develop\Tomcat

    在这里插入图片描述

    然后解压到当前文件夹既可

    在这里插入图片描述

    Tomcat目录结构

    解压Tomcat后的目录结构如下图

    在这里插入图片描述

    具体目录文件作用可参考Tomcat目录结构,说明写的非常详细哦

    启动Tomcat

    在Tomcat的bin目录里双击运行startup.bat文件,如果出现如下的界面,说明你的Tomcat服务器已经成功跑起来了,为自己点赞。

    在这里插入图片描述

    然后在浏览器地址栏输入127.0.0.1:8080或者localhost:8080即可进入Tomcat主界面

    在这里插入图片描述

    但是有些小伙伴在启动Tomcat时也会遇到各种各样的问题,比如Tomcat的startup.bat启动后出现乱码,端口占用,启动后闪退等问题,具体可以参考Tomcat乱码与端口占用的解决方案

    环境变量配置

    Tomcat的环境变量配置跟JDK的环境变量配置几乎一样,只是修改变量名称和对应的路径,具体操作如下。

    注意:如果不是经常需要全局使用Tomcat,个人不建议设置环境变量,因为可能与其他命令冲突,而且不像JDK使用得那么多,其实直接进入Tomcat目录启动也是很方便的。

    此电脑右键属性

    在这里插入图片描述

    单击"高级系统设置",然后单击"环境变量"。

    在这里插入图片描述

    新建->变量名"CATALINA_HOME",变量值"C:\develop\Tomcat\apache-tomcat-8.5.47"(即Tomcat的安装路径)

    在这里插入图片描述

    在系统变量找到变量名"Path",点击编辑,然后点击"新建",然后输入上"%CATALINA_HOME%\bin",点击"确定",再点击"确定"。

    在这里插入图片描述

    测试环境变量是否配置成功,Windows + R然后输入cmd进入命令行窗口,检查的命令为startup.bat

    如果输出如下则说明配置成功

    在这里插入图片描述

    展开全文
  • Spring 3.1引入了非常有用的功能,称为配置文件 。 因此,它易于构建,可以在所有环境(开发,测试,生产等)中部署的软件包。 通过定义系统属性spring.profiles.active, Spring允许我们使用XML配置或@Profile注释...
  • Tomcat系列1-配置文件

    千次阅读 2019-05-07 19:11:15
    tomcat配置文件目录是conf目录,主要配置文件有5个,下面一个个分析下。 1.context.xml Context.xml是Tomcat公用的环境配置,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新...
  • SpringBoot全局配置文件

    千次阅读 2020-09-22 01:07:20
    第二章 2.2 SpringBoot的全局配置文件application.properties/yml的相关介绍
  • Tomcat目录结构及配置文件

    千次阅读 2018-04-20 11:16:35
    TOMCAT的目录结构/bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件/conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml/doc:存放Tomcat文档/server:包含三个子目录:classes...
  • Tomcat的conf文件夹下的web.xml文件中根元素下添加 以下内容,分别对应错误代码号和错误的网址,建议把错误网页放置在ROOT目录下。这样就直接可用’/'前缀指定该网页了。 <error-page> <error-code>...
  • 深度解析tomcat核心配置文件server.xml

    千次阅读 2017-08-28 16:16:21
    前言 对于tomcat,大家都应该很熟悉,哪怕你是一个小白,也应该略知一二。在日常开发中我们一般都是用tomcat来进行部署测试的,tomcat是属于apache的一...之所以说它是tomcat的核心配置文件,因为tomcat中的组件都是
  • tomcat中设置全局变量实现配置文件和项目分离 由于项目中使用的文件较多,每次上线需要将包中的properties文件删除比较麻烦,所以需要将这些配置文件放在服务器一个指定的目录中,这样项目中就不包含这些配置文件...
  • server.xml位于$TOMCAT_HOME/conf目录下,作为整个 tomcat 服务器最核心的配置文件,server.xml的每一个元素都对应了 tomcat中的一个组件,通过对xml中元素的配置,实现对 tomcat中的各个组件和端口的配置。...
  • 初学Tomcat,记录整理Tomcat的简介和配置文件信息
  • Tomcat配置全局的错误返回页面(如404、500)有两种设置方式 方式一 1、首先准备一个自定义的error.html页面。 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head> <title&...
  • server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制。因此,学习server.xml文件的配置,对于了解和使用...
  • 1、 设置tomcat启动参数 在tomcat的bin目录下,更改catalina.sh或catalina.bat, 根据自己服务器的系统。 在首行加上 JAVA_OPTS="-Xms1024m -Xmx1024m -Xss512K -XX:...在tomcat配置目录conf下的server.xml中做如下
  • Tomcat配置文件server.xml详解

    千次阅读 2019-01-08 10:23:25
    Tomcat作为常用的java容器,是运维人员必须掌握的内容,而其配置文件是重中之重。本文将通过实例,介绍server.xml中各个组件的配置,并详细说明Tomcat各个核心组件的作用以及各个组件之间的相互关系。
  • 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改CATALINAHOME/conf/server.xml文件为如下内容即可,本文的tomcat安装在/usr/local/tomcat下,因此‘CATALINA_HOME/conf/server....
  • 1.前一段时间在自己的云服务器上部署了个tomcat服务器并部署了项目,Tomcat的http请求端口还是使用的8080端口,并开放了外网访问权限,这样在安全性上可能存在漏斗,特此想着修改下Tomcat端口 并学习下tomcat的运行原理....
  • tomcat8配置全局数据源

    千次阅读 2015-10-02 11:27:12
    李刚的书《轻量级java web企业应用实战》 p33 讲了这个功能。 First, tomcat/conf/context.xml 中加如下代码 auth="Container" type="javax.sql.DataSource" description="Us
  • 1.修改配置文件tomcat\conf\web.xml 添加类似的配置: 404 /message/error.html 2.error.html文件不能太小,否则转向不会成功。
  • tomcat核心配置文件server.xml核心元素的配置  本篇文章,我们不打算对server.xml进行深入的讲解。因为就大多数实际开发者而言,对server.xml进行配置的操作少之又少。但是,作为 tomcat服务器的核心配置文件...
  • tomcat配置文件server.xml详解

    万次阅读 2016-10-13 10:08:10
    1、了解tomcat Tomcat不是一个完整意义上的Jave EE(j2ee)服务器,因为它没有提供完整的...但是由于Tomcat遵循apache开源协议,并且对当前Java开发框架开源组件Structs、Spring和Hibernate等实现完美支持,因
  • 修改配置文件不用重启tomcat

    万次阅读 2016-08-09 18:02:44
    项目需要频繁更新配置文件,每次改完需要先停tomcat,在重启很麻烦~~~ 今天抽个空研究了一下,发现很多人都遇到类似的问题,然后综合了下各个网站的解决办法,我整了一个demo出来了,废话不多说先上图: 说明...
  • tomcat 全局filter配置

    2013-11-30 11:39:00
    修改在tomcat下的conf下的web.xml文件。和在原来的web-inif下的修改一样,添加filter. 然后将你的filter打包成jar,放在tomcat下的lib目录下,如果你知道tomcat的lib目录的作用的话。<filter> <filter-n...
  • Tomcat 下4个xml配置文件详细介绍

    万次阅读 2016-11-27 12:21:54
    Tomcat配置文件并不多,由4个 xml 文件组成,分别是 context.xml、web.xml、server.xml、tomcat-users.xml 这几个文件。每个文件都有自己的功能与配置方法,本文将逐一的详细介绍这几个配置文件。 一、...
  • 1、了解tomcat Tomcat不是一个完整意义上的Jave EE(j2ee)服务器,因为它没有提供完整的...但是由于Tomcat遵循apache开源协议,并且对当前Java开发框架开源组件Structs、Spring和Hibernate等实现完美支持,因
  • nginx配置tomcat负载均衡 nginx可以作为Web前置机,将客户请求按照一定算法合理分配给后置的tomcat应用服务器,从而达到均衡目的。当然如果应用使用了session会话,后 置的tomcat应用还要保证session共享才能达到...
  • 最近在写javaweb一个项目,再连接数据库时用了context.xml数据库配置文件,结果导致tomcat无法启动,重装tomcat和eclipse浪费了大半天都没弄好,结果重新建项目时忘记匹配context.xml时,误打误撞成功启动了。...
  • 项目背景:maven项目,有多个环境:dev、sit、uat、pat。之前用的Idea和jetty,现在因项目需要切换成了eclipse和...eclipse里该怎么配置tomcat让它跟随环境加载.properties文件呢?有木有大神和我遇到的是同一个问题?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,853
精华内容 24,341
关键字:

tomcat的全局配置文件是