網上有很多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:
開發時可以用來測試;上線時可以分離完整的實際業務,友善管理。如:淘寶、支付寶的分離,他們都有完整(是否完整由人自定義)的業務功能。