tomcat虛擬主機(jī)_動力節(jié)點Java學(xué)院整理
對于Tomcat服務(wù)器,可以放置多個網(wǎng)站(多個web應(yīng)用),這就是講配置多個虛擬主機(jī),可以看成好像有多個主機(jī),而每個主機(jī)上有一個web應(yīng)用。如同之前的文章所說的,對于Tomcat服務(wù)器來講,在server.xml文件中,一個<Host>標(biāo)簽就代表著一臺虛擬主機(jī),之前的文章所用的都是默認(rèn)的虛擬主機(jī),這個在server.xml文件中是這樣定義的:
<Host name="localhost" appBase="webapps" autoDeploy="true" unpackWARs="true"> ... </Host>
可以看到這個已有的虛擬主機(jī)的名稱(“l(fā)ocalhost”)正好是瀏覽器訪問本機(jī)的回環(huán)地址的主機(jī)名,appBase屬性是存放web應(yīng)用的目錄,autoDeploy指是否自動部署,unpackWARs指是否自動解壓war包,如果為false則不解壓直接從war包中運行應(yīng)用程序。
而我們想配置多個虛擬主機(jī)也是這樣,在server.xml文件中添加<Host>標(biāo)簽,指定name屬性和appBase屬性之后,再添加web應(yīng)用。
通常配置虛擬主機(jī)方式與網(wǎng)站域名比較相關(guān),而我沒有有域名的網(wǎng)址,因此直接修改hosts文件將域名重定向作為學(xué)習(xí)在服務(wù)器中虛擬主機(jī)的添加和配置。
修改Tomcat服務(wù)器中的server.xml文件,添加<Host>標(biāo)簽,name屬性采取“域名”的方式,并將該虛擬主機(jī)存放web應(yīng)用的目錄【fjdingsd】放在非Tomcat所在的【D】盤下:
<Host name="www.fjdingsd.com" appBase="D:\fjdingsd" autoDeploy="true" unpackWARs="true"> </Host>

【news】目錄中:

當(dāng)在server.xml中添加好虛擬主機(jī)之后,直接將web應(yīng)用放置在對應(yīng)的虛擬主機(jī)存放web應(yīng)用目錄,注意,這里是由<Host>標(biāo)簽中appBase定義的D盤下【fjdingsd】目錄,而我的web應(yīng)用【news】就應(yīng)該放這其中,在我的web應(yīng)用所在目錄中有自定義的home.html文件。
現(xiàn)在就是需要將定義的虛擬主機(jī)名和ip綁定,因為沒有向DNS服務(wù)器注冊,所以我就使用hosts文件中將我的虛擬主機(jī)名與本機(jī)ip地址綁定:

這樣啟動Tomcat服務(wù)器,在瀏覽器中輸入,可以看到:
這樣就配置好了一個虛擬主機(jī),并且在這虛擬主機(jī)中還有web應(yīng)用。
這里只是小試一下對Tomcat服務(wù)器的虛擬主機(jī)配置,而如果想真正讓外界訪問我們配置的虛擬主機(jī)(網(wǎng)站),應(yīng)該向DNS服務(wù)器注冊域名才行。
不管在Tomcat服務(wù)器中添加了多少個虛擬主機(jī),最終都是轉(zhuǎn)為ip地址向服務(wù)器訪問。這里就會有一個問題,如果每個web應(yīng)用都設(shè)置了首頁,而又不在瀏覽器中輸入域名,而是直接通過ip地址打開,那么服務(wù)器怎么知道應(yīng)該是去哪個虛擬主機(jī)尋求資源呢?
答案就在Tomcat服務(wù)器的引擎<Engine>上,由server.xml文件中的<Engine>標(biāo)簽定義了Tomcat服務(wù)器的默認(rèn)虛擬主機(jī):
<Engine defaultHost="localhost" name="Catalina"> ... <Host name="localhost" ...> </Host> <Host name="www.fjdingsd.com" ...> </Host> ... </Engine>
因此如果我想改變Tomcat服務(wù)器的默認(rèn)虛擬主機(jī),就修改<Engine>標(biāo)簽中的“defaultHost”屬性。
================================================================
如果要將開發(fā)好的web應(yīng)用部署到遠(yuǎn)程服務(wù)器中,可以將web應(yīng)用進(jìn)行壓縮成war格式,再進(jìn)行傳輸,在Tomcat服務(wù)器運行的過程中,如果在其存放web應(yīng)用的目錄中檢測到新增的war包,則會進(jìn)行自動解壓并部署(<Host>中的unpackWARs屬性和autoDeploy屬性)。這種方式最適合向遠(yuǎn)程服務(wù)器進(jìn)行新的web應(yīng)用傳遞并管理。
那么如何對開發(fā)好的web應(yīng)用進(jìn)行war打包呢:
在cmd中鍵入 “jar -cvf 應(yīng)用名.war 應(yīng)用名”。
如我的web應(yīng)用為D盤下【fjdingsd】目錄中的【news】目錄,那么我在cmd中就該這么輸入:jar -cvf news.war news

并得到了war文件:
然后將這個news.war往Tomcat的【webapps】目錄中一放,過幾秒后Tomcat就會對其自動解壓,Tomcat服務(wù)器一定要先打開才會看到自動解壓的過程。

過3、4秒后:

如果在Tomcat運行的過程中,將已經(jīng)自動解壓的war包刪除,則過幾秒Tomcat也會自動將解壓后的web應(yīng)用刪除,這點請注意。
如果是在Tomcat服務(wù)器未啟動之前,將war包放入【webapps】目錄中,那么Tomcat啟動后會自動解壓并部署。
如果在是Tomcat解壓的war包,而在將Tomcat關(guān)閉后再刪除war包,那么在此啟動Tomcat后之前由war包解壓出來的web應(yīng)用不會被刪除。
Tomcat的體系結(jié)構(gòu)
Tomcat的體系結(jié)構(gòu)可以從其最重要的server.xml文件中進(jìn)行結(jié)構(gòu)分析,下圖是一張Tomcat的體系結(jié)構(gòu)圖:
結(jié)合server.xml文件可以看到:
![]()
Tomcat啟動后,也就是服務(wù)器(<Server>標(biāo)簽),啟動后也會啟動一些監(jiān)聽器(<Listener>)和一些全局命名資源(<GlobalNamingResources>)。
除了服務(wù)器(<Server>標(biāo)簽)被啟動后,還會啟動“服務(wù)”(<Service>),正如在cmd中鍵入的“services.msc”的那種?!?/p>
在服務(wù)(<Service>)下會有各種連接器(<Connector>),如上面體系結(jié)構(gòu)圖所示,其中和瀏覽器打交道的連接器(<Connector>)定義了連接協(xié)議(protocol),連接端口(port),連接超時(connectionTimeout)等等屬性,當(dāng)然還要別的用途的連接器。
在服務(wù)(<Service>)下除了各種連接器(<Connector>),還有一個引擎(<Engine>),當(dāng)瀏覽器將一些請求發(fā)來時就通過連接器(<Connector>)交給引擎(<Engine>),引擎(<Engine>)中可以包含一個或多個虛擬主機(jī)(<Host>),而引擎也規(guī)定了哪個虛擬主機(jī)是默認(rèn)訪問的?!?/p>
引擎(<Engine>)通過尋找指定的虛擬主機(jī)(<Host>)將請求交給它,然后由虛擬主機(jī)(<Host>)來尋找是哪個web應(yīng)用,虛擬主機(jī)(<Host>)定義了瀏覽器需輸入的主機(jī)名稱、web應(yīng)用存放的位置,和別的一些屬性等等
而至于何種web應(yīng)用就要看采用哪種虛擬目錄映射了,如果是添加<Context>,那么一個<Context>標(biāo)簽就代表一個web應(yīng)用
![]()
或者是直接將web應(yīng)用所在目錄放在<Host>標(biāo)簽指定的路徑,那么就沒有<Context>標(biāo)簽來代表該web應(yīng)用
相關(guān)文章
Java開啟/關(guān)閉tomcat服務(wù)器的方法
這篇文章主要介紹了Java開啟/關(guān)閉tomcat服務(wù)器的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-06-06
Tomcat在linux環(huán)境中開機(jī)自啟(定時重啟)的方法
我們經(jīng)常會遇到服務(wù)器斷電或異常,而異常后tomcat中部署的web項目需要我手動去啟動,為此,特別貢獻(xiàn)出Linux環(huán)境中Tomcat開機(jī)自啟的方式供學(xué)習(xí)使用,需要的朋友可以參考下2023-10-10
SpringBoot?升級內(nèi)嵌Tomcat的操作示例
這篇文章主要介紹了SpringBoot升級內(nèi)嵌Tomcat,這里采用的是屏蔽舊的依賴,然后手動寫dependency的方式,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
window和linux通過tomcat9手工部署war包的方法
這篇文章主要介紹了window和linux通過tomcat9手工部署war包的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-10-10
Tomcat默認(rèn)程序發(fā)布路徑的使用與修改方法講解
今天小編就為大家分享一篇關(guān)于Tomcat默認(rèn)程序發(fā)布路徑的使用與修改方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02

