1. 程式人生 > >如何理解tomcat的server.xml中host、context的標籤配置

如何理解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只能有一個。
        source:沒有深究,大概意思應該是來源於某個ide。





         瞭解完上訴意思之後,就可以配置了。

        步驟1配置tomcat安裝目錄下的conf目錄下的server.xml檔案,直接按照上訴說明配置,儲存即可。

        步驟2:在C:\Windows\System32\drivers\etc 路徑下找到名為hosts的檔案,注意不是hosts.txt,是無後綴名的hosts。

                      用記事本開啟,在最後一行新增,    域名(主機名)-------ip的對映,如,127.0.0.1       www.test.com   ,儲存。

                        注意:對映名應該與之前配置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: 

                  開發時可以用來測試;上線時可以分離完整的實際業務,方便管理。如:淘寶、支付寶的分離,他們都有完整(是否完整由人自定義)的業務功能。