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