Tomcat虚拟主机
Tomcat虛擬主機(jī)配置示例
?
有3個(gè)web項(xiàng)目,都已打成了war包,分別是aaa.war、bbb.war、ccc.war。
打算配置3個(gè)tomcat虛擬主機(jī),分別綁定域名aaa.com、bbb.com、ccc.com。
?
配置方法如下:
?
1、在tomcat安裝目錄,與webapps目錄平級(jí)的地方,建立3個(gè)文件夾,分別是webapps_1/war、webapps_2/war、webapps_3/war,把3個(gè)war包分別放入3個(gè)war文件夾中。
這里不可以使用tomcat自帶的webapps目錄,不可以把3個(gè)war包放入同一個(gè)webapps文件夾,否會(huì)導(dǎo)致tomcat加載多次web項(xiàng)目(本例是3次),造成重復(fù)啟動(dòng)。
?
2、修改sever.xml,內(nèi)容如下:
Xml代碼??
<Engine?name="Catalina"?defaultHost="wwww.aaa.com">??
????<Host?name="www.aaa.com"?appBase="webapps_1"?autoDeploy="true"?unpackWARs="true"?xmlNamespaceAware="false"?xmlValidation="false">??
??????<Alias>aaa.com</Alias>??????????????
??????<Context?path="/"?docBase="./war/aaa.war"?reloadable="true"?/>??
????</Host>??
????<Host?name="www.bbb.com"?appBase="webapps_2"?autoDeploy="true"?unpackWARs="true"?xmlNamespaceAware="false"?xmlValidation="false">??
??????<Context?path="/"?docBase="./war/bbb.war"?reloadable="true"?/>??
????</Host>??
????<Host?name="www.ccc.com"?appBase="webapps_3"?autoDeploy="true"?unpackWARs="true"?xmlNamespaceAware="false"?xmlValidation="false">??
??????<Context?path="/"?docBase="./war/ccc.war"?reloadable="true"?/>??
????</Host>??
</Engine>??????
?
3、關(guān)鍵屬性說明:
defaultHost="wwww.aaa.com"?的作用是,如果使用ip來訪問,默認(rèn)進(jìn)入www.aaa.com網(wǎng)站。
Host name="www.aaa.com" 的作用是,為當(dāng)前Host綁定域名www.aaa.com。
appBase="webapps_1" ? ? ? ?的作用是,指定應(yīng)用程序(網(wǎng)站)的基本路徑 ,這里可以存放多個(gè)程序(網(wǎng)站)。一般是相對(duì)路徑,相對(duì)于tomcat的安裝目錄。
<Alias>aaa.com</Alias> ? ? ? 的作用是,為一個(gè)Host,綁定多個(gè)域名。
<Context docBase="./war/aaa.war" ? ?的作用是,aaa.war會(huì)被tomcat解包為aaa目錄或ROOT目錄(具體哪個(gè)目錄取決于后面的 path參數(shù)),docBase作用就是指向aaa目錄,這里是相對(duì)路徑,是相對(duì)于前面指定的webapps_1目錄。也可以是絕對(duì)路徑。這里如果不使用子目錄,會(huì)導(dǎo)致應(yīng)用程序被啟動(dòng)兩次。
<Context path="/" ? ? ? ? ? ? ? ? 的作用是,指定?Web應(yīng)用的 上下文根,本例是Web應(yīng)用的 上下文根是 /。
windows環(huán)境(tomcat6.0.18):如果設(shè)置為path="",tomcat會(huì)在webappa_1目錄中自動(dòng)生成ROOT目錄(里面有還有與aaa目錄一樣一樣的內(nèi)容),要設(shè)置為path=""。
Linux環(huán)境(tomcat6.0.33):如果設(shè)置為path="",tomcat不會(huì)在webappa_1目錄中自動(dòng)生成ROOT目錄。而是生成 aaa目錄。要設(shè)置為path="/"。(有待試驗(yàn),今天凌晨驗(yàn)證到關(guān)鍵時(shí)刻,試驗(yàn)環(huán)境出問題了,未繼續(xù))。
?
4、運(yùn)行過程
tomcat啟動(dòng)時(shí),解壓webapps_1/war/aaa.war包到webapps_1/ROOT目錄中
Tomcat虛擬主機(jī)與虛擬目錄虛擬主機(jī)與虛擬目錄
有這么一家公司,這家公司呢為了宣傳自己.做了兩個(gè)網(wǎng)站來宣傳.?
網(wǎng)址分別是www.gogo.com 和 www.pcw.com?
可是公司老總不想用兩臺(tái)服務(wù)器.只想在一臺(tái)服務(wù)器上部署這兩個(gè)項(xiàng)目.?
但是一臺(tái)電腦只有一個(gè)80端口啊,總不能說訪問其中一個(gè)項(xiàng)目的時(shí)候要帶上端口吧.?
為了解決這個(gè)問題,就需要將tomcat添加一個(gè)虛擬主機(jī).公用這個(gè)80端口.?
好了,這個(gè)問題解決了,可是新的問題又出現(xiàn)了.?
隨著公司的不斷發(fā)展,項(xiàng)目越來越大,文件越來越多.一個(gè)硬盤都塞滿了,空間不夠用了.?
要是能把這個(gè)項(xiàng)目中的文件放到別的盤就好了,所以這個(gè)時(shí)候我們就可以配置一個(gè)虛擬目錄.?
這樣就可以把這個(gè)項(xiàng)目中的一些文件放到這個(gè)虛擬目錄中,這樣就解決了這個(gè)問題.
Tomcat/conf/server.xml
配置虛擬主機(jī)與虛擬目錄需要用到這個(gè)文件.下面就說一說這個(gè)文件
這幅圖是一個(gè)標(biāo)準(zhǔn)的server.xml文件.我只是把其中的注釋刪除了.?
下面大致介紹一下 :?
第2行 : 端口8005是關(guān)閉服務(wù)的監(jiān)聽端口,如果用telnet命令連上,輸入SHUTDOWN那么tomcat就會(huì)關(guān)閉了.?
第17行 : 配置tomcat監(jiān)聽瀏覽器訪問端口.http協(xié)議就會(huì)走80(原8080)端口,https協(xié)議就會(huì)轉(zhuǎn)發(fā)到8443端口.?
第18行 : 與apache服務(wù)器整合時(shí)使用的端口,使用ajp協(xié)議.?
第19行 : Engine 標(biāo)簽是一個(gè)引擎.里面至少要有一個(gè)Host標(biāo)簽.?
第22行 : Host標(biāo)簽配置了一個(gè)虛擬主機(jī).?
第24行 : Context標(biāo)簽配置了一個(gè)虛擬目錄
Host與Context
從上面可以看出來,如果你想添加一個(gè)虛擬主機(jī),則需要添加一個(gè)Host節(jié)點(diǎn).?
如果你想添加一個(gè)虛擬目錄,則需要添加一個(gè)Context節(jié)點(diǎn).?
可是如何添加呢?這些參數(shù)都有什么含義呢??下面我就簡(jiǎn)單說一下.
添加一個(gè)虛擬主機(jī)
只需要添加一個(gè)Host節(jié)點(diǎn)就可以添加一個(gè)虛擬主機(jī).?
我現(xiàn)在想做到這種效果,當(dāng)用戶輸入www.zte.com時(shí),就可以訪問我的項(xiàng)目了.那么就需要進(jìn)行下面這樣配置
name : 表示用戶訪問的虛擬主機(jī)名字.?
appBase : 對(duì)比上面的名為localhost的虛擬主機(jī),上面的用的是相對(duì)地址相對(duì)tomcat的安裝目錄.?
那么此處的意思就是說,我的D盤下www這個(gè)文件夾下就相當(dāng)與tomcat中的那個(gè)webapps目錄了.?
僅僅這樣還是不夠的.因?yàn)闉g覽器解析不了www.zte.com這個(gè)網(wǎng)址.?
所以我們需要修改一個(gè)C:\Windows\System32\drivers\etc\hosts文件
途中箭頭指向的地方是一個(gè)table鍵?
書寫規(guī)則 : table + ip + table + 域名.這樣本機(jī)就會(huì)找到www.zte.com的ip地址了.?
我們?cè)贒盤的www文件夾下建立一個(gè)ROOT文件夾,文件夾里面放一個(gè)index.html.?
文件內(nèi)容為 d:/www. ok訪問一下
這樣,虛擬主機(jī)就建立好了.?
ps : 之所以要放在ROOT目錄下,因?yàn)镽OOT目錄為默認(rèn)訪問目錄.?
一個(gè)虛擬主機(jī)可以放很多項(xiàng)目,訪問的時(shí)候都是ip:port/serverName?
如果端口是80,那么端口可以省略.如果訪問的是默認(rèn)的目錄,那么目錄名也可以省略.
虛擬目錄
下面我就在E盤給www.zte.com配置一個(gè)虛擬目錄.并且設(shè)置他為默認(rèn)目錄.
path : 表示訪問的時(shí)候需要添加的路徑.如果為空,則表示默認(rèn)訪問這個(gè).?
docBase : 虛擬目錄的位置.同上,在這個(gè)目錄下簡(jiǎn)歷一個(gè)測(cè)試的index.html
?
這樣虛擬目錄就配置好了.
總結(jié)
因?yàn)榻裉焱蝗幌氲搅诉@個(gè),就百度了半天然后總結(jié)了一下,做了一個(gè)簡(jiǎn)單的配置.?
其實(shí)這里面還有好多參數(shù)可以設(shè)置,以后學(xué)習(xí)深入了在做配置.?
如果虛擬主機(jī)中不寫Context那么默認(rèn)訪問的就是ROOT.?
如果你寫了,并且設(shè)置path為空,那么默認(rèn)訪問的就是Context虛擬目錄的位置.
轉(zhuǎn)載于:https://blog.51cto.com/wuhui1994/2060327
總結(jié)
以上是生活随笔為你收集整理的Tomcat虚拟主机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git仓库的简单使用
- 下一篇: Cocos Creator中的动画支持技