zoukankan      html  css  js  c++  java
  • Tomcat配置详解,配置文件server.xml详解

    Tomcat安装配置

    1、下载tomcat7.0.22  下载地址:http://tomcat.apache.org/download-70.cgi

    2、添加系统环境变量,我的电脑->属性->高级系统设置->环境变量(操作同上) 

    (1)变量名: CATALINA_BASE     变量值: D:Program Filesapache-tomcat-7.0.22(Tomcat解压到的目录)
    (2)变量名: CATALINA_HOME     变量值: D:Program Filesapache-tomcat-7.0.22
    (3)变量名: CATALINA_TMPDIR     变量值: D:Program Filesapache-tomcat-7.0.22 emp
    (4)变量名: Path    变量值:D:Program Filesapache-tomcat-7.0.22in

    3、运行Tomcat7.0.22,“开始”->“运行”->输入cmd,在命令提示符中输入 startup.bat,之后会弹出tomcat命令框,输出启动日志;打开浏览器输入http://localhost:8080/ ,如果进入tomcat欢迎界面,那么恭喜你,配置成功。

    4、Tomcat的默认行为。

          我们的浏览器请求如果到达了Tomcat,并且请求无误,一般Tomcat会以静态页面(即html文件)的形式给与响应,这是http服务器的默认行为。

          一个完整的资源请求包括:协议(如http), 主机名(域名,如localhost、www.baidu.com), 端口号(http协议默认为80,所以我们一般向某个网站发起请求没有输入), 站点, 资源位置如http://localhost:8080/ROOT/index.jsp

      5、更改Tomcat默认配置。

         ①、修改Tomcat监听端口。首先我们需要将监听端口设置为80,道理很简单,用户不会在浏览器输入:8080来访问网站,浏览器也不会自动将请求发送到服务器的8080端口。

              在%TOMCAT_HOME%(以下代指Tomcat的安装路径)下的conf目录下的server.xml文件中修改。

      

        ②、修改默认站点。首先说,站点是具有特定结构的文件夹。这一点在Tomcat里表现得极为清晰。

          站点,在服务器上肯定是用文件夹(即目录结构)来存储和管理的。但是它和普通的文件夹又不同,在Tomcat里,可用于作为站点的文件夹必须有如下特点:拥有一个名为WEB-INF的子文件夹,该子文件夹下必须有一个名为web.xml的文件,而且该xml文件必须受约束与特定的DTD。配置站点:创建文件夹,创建WEB-INF子文件夹,创建web.xml,完成。web.xml内容可以参考webapps/ROOT/WEB-INF/web.xml。

      

                我在index.html里写了几句话,然后结果出来了:

       

        ③、修改默认页面。

          在上面,我们还算是中规中矩,按照常理出牌,谢了index.html。那么如果没有写呢?Tomcat会怎么做呢? 请大家找到conf/web.xml。这个文件是对所有站点的共同属性做出了设置。比如大家看文件结尾处:

      

       6、虚拟主机的配置。

          所谓虚拟主机,就是将一个或多个主机名(域名)和Tomcat所在的服务器进行绑定。由于一个IP可以和多个域名进行帮定,我们大可以将不同的域名指向服务器(指硬件)上的不同文件夹,造成一个服务器(或者一个IP)多个主机的“虚拟主机”效果。

          这个实现起来相当的简单。只需要在server.xml文件中新建Host节点,将其属性进行不同设置即可。

    复制代码
    复制代码
     1 #你的主机名(域名)1
     2 <Host name="localhost"  appBase="webapps"
     3            unpackWARs="true" autoDeploy="true"
     4            xmlValidation="false" xmlNamespaceAware="false"> 
     5 </Host> 
     6 #你的域名2
     7 <Host name="www.coderecord.org" appBase="主机空间地址" 
     8        unpackWARs="true" autoDeploy="true" 
     9        xmlValidation="false" xmlNamespaceAware="false">  
    10        #域名3可以和域名2共用一个主机空间
    11         <Alias>coderecord.org</Alias>
    12         <Context path="" docBase="站点地址" debug="1" reloadable="true" allowLinking="true" />
    13 </Host> 
    复制代码
    复制代码
    两步搞定 Tomcat 下启用 https://
    这个简单教程中我们通过简单的两步就可以在 Tomcat 7 中启用 HTTPS 访问。
    第一步:创建 .keystore 文件
    使用如下命令生成 .keystore 文件
    windows :
    %JAVA_HOME%inkeytool -genkey -alias tomcat -keyalg RSA  
    Linux:
    $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA 
    第二步:在 server.xml 中启用 SSL HTTP/1.1 连接器(已有配置,去除注释即可),端口 8443
    修改 $CATALINA_HOME/conf/server.xml 文件:
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
                  maxThreads="150" scheme="https" secure="true"
                  clientAuth="false" sslProtocol="TLS"
                  keystoreFile="${user.home}/.keystore" keystorePass="123@com"/>
    "keystorePass" 是生成 .keystore 文件的密码,然后重启 Tomcat
    打开浏览器访问如下地址:https://localhost:8443
    如果看到了 Tomcat 的首页就搞定了。
     

    首先,看一下tomcat的目录结构: 

    bin            存放启动和关闭tomcat脚本 
    conf          包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml 

    lib             存放Tomcat运行或者站点运行所需的jar包,所有在此Tomcat上的站点共享这些jar包。
    work          存放jsp编译后产生的class文件 
    webapp     存放应用程序示例,以后你要部署的应用程序也要放到此目录 ,可以更改。
    logs           存放日志文件 

    work目录用于在服务器运行时过度资源,简单来说,就是存储jsp、servlet翻译、编译后的结果。

    lib/japser/common    这三个目录主要存放tomcat所需的jar文件 

    ----------------------------

    tomcat下域名的设置,ROOT.XML的作用

    以下小结使用tomcat5.0.28测试通过,tomcat安装路径为C:Tomcat

    在默认安装后,tomcat的主目录是webapps/root目录,如果我们想改变tomcat的主目录的话可以这样做:

    1.打开C:Tomcatconfserver.xml,在<host></host>之间加入代码:
    <Context path="" docBase="E: omcatAppJeasyCMS" debug="0" reloadable="true" crossContext="true"/>
    这样重新启动tomcat,我们的主目录就被设置为jeasyCMS这个项目了。
     
    2.另外tomcat会生成一个C:TomcatconfCatalinalocalhost目录,里面自动生成了一个ROOT.xml(root大写)文件,我们打开文件可以看到这些代码:
    <?xml version='1.0' encoding='utf-8'?>
    <Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="" reloadable="true">
    </Context>
     
    3.注意:我们创建虚拟目录的时候也是这样来进行设置的,只是context这个标签的path属性不为空。
     
    4.我们设置虚拟目录和主目录,都会在C:TomcatconfCatalinalocalhost目录下生成相应的xml文件,因此,当我们在server.xml里面删除了主目录和虚拟目录的设置后,如果系统还没有生效,这时候我们就要察看一下这个目录下的xml文件是不是已经被删除了,如果没有被删除,他还是对tomcat起作用的,我们必须手动删除。
     
    5.基于第4点,通过测试我发现,每当我们访问一个地址的时候,tomcat首先是到C:TomcatconfCatalinalocalhost目录下去察看有没有存在主目录或虚拟目录的xml文件,如果有xml文件,就按xml里的路径进行访问,如果没有xml文件,就到server.xml文件里去察看是否配置context标签,如果配置了context标签,则在C:TomcatconfCatalinalocalhost目录下生成一个对应的xml文件,以便于下次直接验证而不再访问server.xml,与此同时打开context里指定的路径,如果server.xml里没有配置context标签,则返回访问错误页面。
     
    6.基于第5点,我们其实可以直接在C:TomcatconfCatalinalocalhost下建立一个xml文件,用于主目录或者虚拟目录,而不需要去修改server.xml就可以达到配置主目录和虚拟目录的目的,具体xml的格式可以如下:

    <?xml version='1.0' encoding='utf-8'?>
    <Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="" reloadable="true">
    </Context>

    具体是主目录的配置还是虚拟目录的配置取决于path的值。另外主目录文件名必须是ROOT.XML(root大写),而虚拟目录的文件名称和虚拟目录的名称一致并且为小写,譬如:
    <?xml version='1.0' encoding='utf-8'?>
    <Context crossContext="true" docBase="E:/tomcatApp/JeasyCMS" path="cms" reloadable="true">
    </Context>
    以上则定义了一个名为:cms的虚拟目录,同时要将以上文本保存为cms.xml文件。

    tomcat server.xml配置详解

    元素名

    属性

    解释

    server

    port

    指定一个端口,这个端口负责监听关闭tomcat 的请求

    shutdown

    指定向端口发送的命令字符串

    service

    name

    指定service 的名字

    Connector ( 表示客户端和service 之间的连接)

    port

    指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求

    minProcessors

    服务器启动时创建的处理请求的线程数

    maxProcessors

    最大可以创建的处理请求的线程数

    enableLookups

    如果为true ,则可以通过调用request.getRemoteHost() 进行DNS查询来得到远程客户端的实际主机名,若为false 则不进行DNS查询,而是返回其ip 地址

    redirectPort

    指定服务器正在处理http 请求时收到了一个SSL 传输请求后重定向的端口号

    acceptCount

    指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

    connectionTimeout

    指定超时的时间数( 以毫秒为单位)

    Engine ( 表示指定service 中的请求处理机,接收和处理来自Connector 的请求)

    defaultHost

    指定缺省的处理请求的主机名,它至少与其中的一个host 元素的name 属性值是一样的

    Context ( 表示一个web 应用程序,通常为WAR 文件,关于WAR 的具体信息见servlet 规范)

    docBase

    应用程序的路径或者是WAR 文件存放的路径

    path

    表示此web 应用程序的url 的前缀,这样请求的url为http://localhost:8080/path/ ****

    reloadable

    这个属性非常重要,如果为true ,则tomcat 会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes 目录的变化,自动装载新的应用程序,我们可以在不重起tomcat 的情况下改变应用程序

    host ( 表示一个虚拟主机 )

    name

    指定主机名

    appBase

    应用程序基本目录,即存放应用程序的目录

    unpackWARs

    如果为true ,则tomcat 会自动将WAR 文件解压,否则不解压,直接从WAR 文件中运行应用程序

    Logger ( 表示日志,调试和错误信息)

    className

    指定logger 使用的类名,此类必须实现org.apache.catalina.Logger接口

    prefix

    指定log 文件的前缀

    suffix

    指定log 文件的后缀

    timestamp

    如果为true ,则log 文件名中要加入时间,如下例:localhost_log.2001-10-04.txt

    Realm ( 表示存放用户名,密码及role的数据库)

    className

    指定Realm 使用的类名,此类必须实现org.apache.catalina.Realm接口

    Valve ( 功能与Logger 差不多,其prefix 和suffix 属性解释和Logger 中的一样)

    className

    指定Valve 使用的类名,如用org.apache.catalina.valves.AccessLogValve 类可以记录应用程序的访问信息

    directory

    指定log 文件存放的位置

    pattern

    有两个值,common 方式记录远程主机名或ip 地址,用户名,日期,第一行请求的字符串,HTTP 响应代码,发送的字节数。combined 方式比common 方式记录的值更多

     
     
     
     
    <Server>元素

    它代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个
    <Service>元素.并且它不能做为任何元素的子元素.
     
     < Server port ="8005" shutdown ="SHUTDOWN" debug ="0" >

    1>className指定实现org.apache.catalina.Server接口的类.默认值为
    org.apache.catalina.core.StandardServer
    2>port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出
    shutdown命令.该属性是必须的.
    3>shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设


    <Service>元素


    该元素由org.apache.catalina.Service接口定义,它包含一个<Engine>元素,以及一个或多个
    <Connector>,这些Connector元素共享用同一个Engine元素
       
     < Service name ="Catalina" > 
         < Service name ="Apache" >

       第一个<Service>处理所有直接由Tomcat服务器接收的web客户请求.
       第二个<Service>处理所有由Apahce服务器转发过来的Web客户请求
    1>className 指定实现org.apahce.catalina.Service接口的类.默认为
    org.apahce.catalina.core.StandardService
    2>name定义Service的名字

    <Engine>元素


    每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客
    户请求.由org.apahce.catalina.Engine接口定义.
     < Engine name ="Catalina" defaultHost ="localhost" debug ="0" >
    1>className指定实现Engine接口的类,默认值为StandardEngine
    2>defaultHost指定处理客户的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机
    3>name定义Engine的名字
    在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host>

    <Host>元素


    它由Host接口定义.一个Engine元素可以包含多个<Host>元素.每个<Host>的元素定义了一个虚拟主机.它
    包含了一个或多个Web应用.
     < Host name ="localhost" debug ="0" appBase ="webapps" unpackWARs ="true" autoDeploy ="true" >
    1>className指定实现Host接口的类.默认值为StandardHost
    2>appBase指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录.如果
    没有此项,默认为<CATALINA_HOME>/webapps
    3>autoDeploy如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有
    web应用加入进来,会自运发布这个WEB应用
    4>unpackWARs如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行.如果设为
    false将直接运行为WAR文件
    5>alias指定主机别名,可以指定多个别名
    6>deployOnStartup如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用
    .如果Web应用中的server.xml没有相应的<Context>元素,将采用Tomcat默认的Context
    7>name定义虚拟主机的名字
    在<Host>元素中可以包含如下子元素
    <Logger>, <Realm>, <Value>, <Context>

    <Context>元素


    它由Context接口定义.是使用最频繁的元素.每个<Context元素代表了运行在虚拟主机上的单个Web应用.
    一个<Host>可以包含多个<Context>元素.每个web应用有唯一
    的一个相对应的Context代表web应用自身.servlet容器为第一个web应用创建一个
    ServletContext对象.
     < Context path ="/sample" docBase ="sample" debug ="0" reloadbale ="true" >
    1>className指定实现Context的类,默认为StandardContext类
    2>path指定访问Web应用的URL入口,注意/myweb,而不是myweb了事
    3>reloadable如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-
    INF/lib目录CLASS文件的改运.如果监视到有class文件被更新,服务器自重新加载Web应用
    3>cookies指定是否通过Cookies来支持Session,默认值为true
    4>useNaming指定是否支持JNDI,默认值为了true
    在<Context>元素中可以包含如下元素
    <Logger>, <Realm>, <Resource>, <ResourceParams>

    <Connector>元素


    由Connector接口定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客
    户返回响应结果.
     < Connector port ="8080" maxThread ="50" minSpareThreads ="25" maxSpareThread ="75" 
     enableLookups ="false" redirectPort ="8443" acceptCount ="100" debug ="0" 
     connectionTimeout ="20000" disableUploadTimeout ="true" /> 
     < Connection port ="8009" enableLookups ="false" redirectPort ="8443" debug ="0" 
     protocol ="AJP/1.3" />
    第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定
    义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.
    Connector元素共用属性
    1>className指定实现Connector接口的类
    2>enableLookups如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用
    request.getRemoteHost方法返回客户机主机名.默认值为true
    3>redirectPort指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转
    发至SSL的redirectPort端口
    HttpConnector元素的属性
    1>className实现Connector的类
    2>port设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入http://localhost 即可
    因为TCP/IP的默认端口是80
    3>address如果服务器有二个以上ip地址,此属性可以设定端口监听的ip地址.默认情况下,端口会监听服务
    器上所有的ip地址
    4>bufferSize设定由端口创建的输入流的缓存大小.默认值为2048byte
    5>protocol设定Http协议,默认值为HTTP/1.1
    6>maxThreads设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数
    目.默认值为200
    7>acceptCount设定在监听端口队列的最大客户请求数量,默认值为10.如果队列已满,客户必须等待.
    8>connectionTimeout定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间
    JkConnector的属性
    1>className实现Connector的类
    2>port设定AJP端口号
    3>protocol必须设定为AJP/1.3
     
    ========================================================================================
     
     

    <Server>元素 
    它代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个<Service>元素.并且它不能做为任何元素的子元素.

    <Server port="8005" shutdown="SHUTDOWN" debug="0">

    1> className指定实现org.apache.catalina.Server接口的类.默认值为org.apache.catalina.core.StandardServer
    2> port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令.该属性是必须的.
    3> shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置

    <Service>元素 
    该元素由org.apache.catalina.Service接口定义,它包含一个<Engine>元素,以及一个或多个<Connector>,这些Connector元素共享用同一个Engine元素
       
        <Service name="Catalina">
        <Service name="Apache">
        第一个<Service>处理所有直接由Tomcat服务器接收的web客户请求.
        第二个<Service>处理所有由Apahce服务器转发过来的Web客户请求

    1> className 指定实现org.apahce.catalina.Service接口的类.默认为org.apahce.catalina.core.StandardService
    2> name定义Service的名字

    <Engine>元素 
    每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求.由org.apahce.catalina.Engine接口定义.

    <Engine name="Catalina" defaultHost="localhost" debug="0">

    1> className指定实现Engine接口的类,默认值为StandardEngine
    2> defaultHost指定处理客户的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机
    3> name定义Engine的名字

    在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host>

    <Host>元素 
    它由Host接口定义.一个Engine元素可以包含多个<Host>元素.每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.

     <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">

    1> className指定实现Host接口的类.默认值为StandardHost
    2> appBase指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录.如果没有此项,默认为<CATALINA_HOME>/webapps
    3> autoDeploy如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用
    4> unpackWARs如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行.如果设为false将直接运行为WAR文件
    5> alias指定主机别名,可以指定多个别名
    6> deployOnStartup如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用.如果Web应用中的server.xml没有相应的<Context>元素,将采用Tomcat默认的Context
    7> name定义虚拟主机的名字

    在<Host>元素中可以包含如下子元素 
    <Logger>, <Realm>, <Value>, <Context>


    <Context>元素 
    它由Context接口定义.是使用最频繁的元素.每个<Context元素代表了运行在虚拟主机上的单个Web应用.一个<Host>可以包含多个<Context>元素.每个web应用有唯一
    的一个相对应的Context代表web应用自身.servlet容器为第一个web应用创建一个
    ServletContext对象.

    <Context path="/sample" docBase="sample" debug="0" reloadbale="true">

    1> className指定实现Context的类,默认为StandardContext类
    2> path指定访问Web应用的URL入口,注意/myweb,而不是myweb了事
    3> reloadable如果这个属性设为true, Tomcat服务器在运行状态下会监视在WEB-INF/classes和Web-INF/lib目录CLASS文件的改运.如果监视到有class文件被更新,服务器自重新加载Web应用
    3> cookies指定是否通过Cookies来支持Session,默认值为true
    4> useNaming指定是否支持JNDI,默认值为了true


    在<Context>元素中可以包含如下元素 
    <Logger>, <Realm>, <Resource>, <ResourceParams>

    Connector元素 
    由Connector接口定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客户返回响应结果.

    <Connector port="8080" maxThread="50" minSpareThreads="25" maxSpareThread="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" />

    <Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
    第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.

    Connector元素共用属性 
    1> className指定实现Connector接口的类
    2> enableLookups如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用request.getRemoteHost方法返回客户机主机名.默认值为true
    3> redirectPort指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转发至SSL的redirectPort端口


    HttpConnector元素的属性 
    1> className实现Connector的类
    2> port设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入http://localhost 即可
    因为TCP/IP的默认端口是80
    3> address如果服务器有二个以上ip地址,此属性可以设定端口监听的ip地址.默认情况下,端口会监听服务器上所有的ip地址
    4> bufferSize设定由端口创建的输入流的缓存大小.默认值为2048byte
    5> protocol设定Http协议,默认值为HTTP/1.1
    6> maxThreads设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200
    7> acceptCount设定在监听端口队列的最大客户请求数量,默认值为10.如果队列已满,客户必须等待.
    8> connectionTimeout定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间


    JkConnector的属性 
    1> className实现Connector的类
    2> port设定AJP端口号
    3> protocol必须设定为AJP/1.3
     
     
     
     
     
     
     

    Tomcat7配置虚拟主机

    原文:http://www.xiangxiaren.net/blog/?post=72

    默认主机

    tomcat 7的xml配置文件server.xml通常在默认情况下,在<Engine></Engine>标签之间会有一个默认虚拟主机配置:

    1
    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"></Host>
    • 最简的server.xml
      1
      2
      3
      4
      <Engine name="Catalina" defaultHost="ren">
          <Host name="ren"    appBase="renapps"/>
          <Host name="stimpy" appBase="stimpyapps"/>
      </Engine>

    Host就是虚拟主机的元素(标签)

    默认虚拟主机的应用程序目录是指向tomcat目录下的webapps这个文件夹的,默认打开的应用是ROOT,即在浏览器中输入http://localhost:8080 打开的是ROOT这个Web应用。

    添加虚拟主机

    在第一个虚拟主机的结束标签后面添加:

    1
    2
    3
    <Host name="www.mydomain.com" appBase="/var/tomcat/apps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Context docBase="/var/tomcat/apps/test" path="" reloadable="true" />
    </Host>

    Host标签里面多出的属性先不用管它,有与没有都不会影响后面的操作。

    appBase设置成了docBase的上一级目录,在apps目录下的test文件夹才是存放web应用的地方。

    docBase目录下放一个index.html文件,内容为"Hello,成功了!"。

    配置完成后,重启tomcat使用配置生效。

    在完成域名绑定、或修改hosts文件后,即可访问:http://www.mydomain.com:8080 站点。

    • Host Name Aliases
    <Host name="www.mycompany.com" ...>
      ...
      <Alias>mycompany.com</Alias>
      ...
    </Host>
    
    • Remote Address Filter

    The Remote Address Filter allows you to compare the IP address of the client that submitted this request against one or more regular expressions, and either allow the request to continue or refuse to process the request from this client. A Remote Address Filter can be associated with any Catalina container (Engine, Host, or Context), and must accept any request presented to this container for processing before it will be passed on.

    To allow access only for the clients connecting from localhost:

    <Host name="....
        <Valve className="org.apache.catalina.valves.RemoteAddrValve"
            allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1"/>
    </Host>
    

    tomcat端口虚拟主机说明

    原文:http://ritcher.iteye.com/blog/349972

    虚拟主机

    一般情况下,tomcat只能配置基于域名和IP的虚拟主机,只需要在server.xml里面增加host即可,举例:

    1
    2
    3
    4
    5
    <Host name="www.a.com" debug="0" appBase="e:VSB2006ownerswww.a.com" unpackWARs="true"
        autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Logger className="org.apache.catalina.logger.FileLogger" directory="logs"
        prefix="www.a.com_log." suffix=".txt" timestamp="true" />
    </Host>

    基于端口的虚拟主机

    Tomcat的文档中和网上都无法找到基于端口的虚拟主机的配法,经过尝试,发现了一个方法可以达到这个效果。

    我们看一个最精简的server.xml:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <Server port="8005" shutdown="SHUTDOWN">
     
    ….省略
     
      <Service name="Catalina">
     
        <Connector port="8080" /> <!—这是对外的主要端口-->
        <Connector port="8009" protocol="AJP/1.3" />  <!—这是给apache使用的端口-->
     
        <Engine name="Catalina" defaultHost="localhost">  <!—引擎-->
          <Logger className="org.apache.catalina.logger.FileLogger" />
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 resourceName="UserDatabase" />
          <Host name="localhost" appBase="webapps" /> <!—默认的主机-->
        </Engine>
     
      </Service>
     
    </Server>

    虽然可以增加Connector来增加服务的端口,但是host中没有提供端口的选项,这样增加出来的端口和源端口是一样的虚拟主机设定,无法达到我们的要求。

    单纯增加端口没有办法,那么我们可以增加service,举例如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <Server port="8005" shutdown="SHUTDOWN">
     
    ….省略
     
      <Service name="Catalina">
        <Connector port="8080" /> <!—这是对外的主要端口-->
        <Connector port="8009" protocol="AJP/1.3" />  <!—这是给apache使用的端口-->
        <Engine name="Catalina" defaultHost="localhost">  <!—引擎-->
          <Logger className="org.apache.catalina.logger.FileLogger" />
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 resourceName="UserDatabase" />
          <Host name="localhost" appBase="webapps" /> <!—默认的主机-->
        </Engine>
      </Service>
     
     
      <Service name="Catalina2">
        <Connector port="8090" /> <!—这是对外的主要端口-->
        <Engine name="Catalina2" defaultHost="localhost">  <!—引擎-->
          <Logger className="org.apache.catalina.logger.FileLogger" /><!—这一块有所省略,应该配置不同的文件名-->
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 resourceName="UserDatabase" />
          <Host name="localhost" appBase="webapps2" /> <!—默认的主机-->
        </Engine>
      </Service>
     
    </Server>

    增加的service可以分配自己的connector和host,只要和主service不冲突即可

    通过这个办法,可以让vsb2006的管理端运行在一个端口上,而站点运行在另外的端口上,完全不冲突

    经实验此方式可行:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <Service name="myweb">
        <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" />
        <Engine name="myweb" defaultHost="localhost">
            <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
            </Realm>
            <Host name="localhost" appBase="myweb" unpackWARs="true" autoDeploy="true">
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/log/tomcat"
                    prefix="myweb_access_log." suffix=".txt"
                    pattern="%h %l %u %t &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i %D" />
                    <!-- for ev -->
                <Context path="/gaei/ev" docBase="b2c-admin" debug="0"/>
            </Host>
        </Engine>
    </Service>
  • 相关阅读:
    go 基本包
    go 包
    算法笔记--数据结构--链表
    算法笔记--数据结构--队列
    算法笔记--标准模板库STL--pair
    算法笔记--标准模板库STL--stack
    算法笔记--标准模板库STL--priority_queue
    算法笔记--标准模板库STL--queue
    初识pair
    lower_bound实现离散化
  • 原文地址:https://www.cnblogs.com/timssd/p/5579853.html
Copyright © 2011-2022 走看看