天天看点

如何理解tomcat的server.xml中host、context的标签配置

              网上有很多tomcat目录下server.xml的配置的文章,但是对于初学者来说,如何理解host的标签的配置内容确实一下转不过弯。至少本人就是这个傻样。

    我希望我能帮助一些初学者去理解。先了解配置步骤,再理解配置的目的。

           首先,host标签的意思,根据大家的普遍意思,它表示“虚拟主机”的意思。而虚拟主机在我理解就是实际主机IP经过DNS解析后的普通文字。

<!--server.xml中host的示例配置如下-->

 <Host appBase="D:\test" autoDeploy="true" name="www.test.com" unpackWARs="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
          
                      
<Context docBase="index" path="" reloadable="true" />
           
<Context docBase="E:\test\app2" path="/app2" reloadable="true" />
<Context docBase="app3" path="/app3" reloadable="true" source="org.eclipse.jst.jee.server:download"/>
           
 </Host>
各个标签的意义:  
  
appBase:顾名思义,就是程序基地的意思,也是是存放应用程序的路径,类似于tomcat默认的webapps,当自定义host标签时,这个值是可以自定义的绝对路径

aotuDeploy:是否设置程序自动装载。不多解释

name:你的主机名,根据需要任意命名。

unpachWARs:是否自动解压war包。true值时,appdase下打成war包的项目会在tomcat启动时自动解压

            
Context:配置上下文,也就是对应主机下的具体子项目。
         docBase指定项目的位置,可以是相对appBase的路径,也可以是绝对路径。如果使用相对appBase路径的位置,则直接写应用文件夹名字即可;
                否则应该写绝对位置,如:E:\test\app1

           
path:设置该项目访问的路径名,如:/app1 .如果path为""--即空字符串,则访问该主机时默认访问该path所在的context元素下docBase所指定的项目, path值为""的context只能有一个。          了解完上诉意思之后,就可以配置了。         步骤1:配置tomcat安装目录下的conf目录下的server.xml文件,直接按照上诉说明配置,保存即可。         步骤2:在C:\Windows\System32\drivers\etc 路径下找到名为hosts的文件,注意不是hosts.txt,是无后缀名的hosts。                       用记事本打开,在最后一行添加,    域名(主机名)-------ip的映射,如,127.0.0.1       www.test.com   ,保存。                      !保存不了? ,那是因为你的权限不够,参考: http://jingyan.baidu.com/article/624e7459b194f134e8ba5a8e.html                         注意:映射名应该与之前配置serverxml文件中的host配置中的name值一致,否则配置无效; 行首不能有#,其代表注释。          完成以后,如果按示例配置,即可通过主机名 www.test.com访问了。                           www.test.com:8080:访问index项目                          www.test.com:8080/app2:访问app2项目                          www.test.com:8080/app3:访问app3项目                PS: 了解映射:      127.0.0.1(映射前)-------------ip地址不好记----》dns--(本地或英特网)域名解析设备映射--------------------www.test.com(映射后)                              总结:

        host是什么:

             多个子项目组成的大项目,他是一个功能完整、能实现实际业务完整性的项目,此时需要使用一个主机这样的逻辑单元来管理。显像的说,我希望这些业务由一台电脑(假设)来完成,此时这样的电脑就叫主机,这个主机的标识就是主机名---域名。比如淘宝,他可以买东西、买东西,浏览东西,这些完整的实际业务的完成,实际可以简单的理解为通过 www.taobao.com来完成,也可以叫这台主机为www.taobao.com。

         什么时候要配置多个host: 

                  开发时可以用来测试;上线时可以分离完整的实际业务,方便管理。如:淘宝、支付宝的分离,他们都有完整(是否完整由人自定义)的业务功能。