歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux管理 >> Linux配置

tomcat中虛擬主機的配置

在開發的時候都是直接把war包直接扔到tomcat的webapps目錄下,通過localhost:8080/project來訪問,但是在上線系統的部署,顯然不可能通過www.xxx.com/project這樣去訪問的。

原來天真的認為域名是可以指向IP:端口/project這樣的,今天去客戶那部署發現完全不是那麼回事,域名只能指向IP,於是馬上求助度娘,找到如下方案。

在tomcat的conf/server.xml中,默認有個節點是
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true"></Host>
其中localhost就是本機的域名,在hosts文件中可以看到一句話:localhost name resolution is handled within DNS itself.即localhost指向的是本機,127.0.0.1這個ip。通過修改和添加Host可以增加tomcat的虛擬主機,並綁定域名。

這裡實驗我就放兩個war包,一個是admin.war,對應的域名是admin.xxx.com。一個是sm.war,對應的域名是www.xxx.com

在本機做實驗的時候,可以通過修改hosts文件模擬域名訪問。這裡我就添加三個域名進去
127.0.0.1 www.xxx.com
127.0.0.1 admin.xxx.com
接下來在tomcat中配置虛擬主機

先說明一下兩個主機的目錄結構
tomcat
├─admin
│  └─war
├─sm
│  └─war
稍後解釋為什麼目錄這麼建。

在server.xml中添加兩個虛擬主機
<Host name="www.xxx.com"  appBase="sm" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="./war/sm.war" />
</Host>
<Host name="admin.xxx.com"  appBase="admin" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="./war/admin.war" />
</Host>
說明一下其中的參數

Host
name     虛擬主機名,一般寫域名
appBase     虛擬主機應用的目錄
unpackWARs
    如果為true,會解壓war包,否則不解壓,直接運行
autoDeploy     默認為true,表示如果有新的WEB應用放入appBase並且Tomcat在運行的情況下,自動載入應用。

context
path     web應用名,
docBase     web應用的具體存放路徑

path的作用可以看這位朋友寫的tomcat原理了解一下:http://www.linuxeye.com/Linux/2390.html
配置完成後啟動tomcat,就通過域名訪問兩個app了。

這裡有幾點要說明的:

  1. 剛剛在建立目錄的時候為什麼要建立war目錄

    在appBase中指定的根目錄中如果有war包,tomcat就會加載到內存中去,而子目錄裡的war包不會。也可以把war包扔到appBase意外的其他目錄去,Context的docBase裡指定就可以了。

  2. 為什麼不把war包都放在webapps裡

    由於我的path配置是“”(空字符串),默認會解壓到ROOT目錄中去,如果都放在webapps裡,就都會解壓到ROOT

Copyright © Linux教程網 All Rights Reserved