虛擬主機和 Tomcat

目錄

假設

為了本教學的目的,假設您有一個開發主機,具有兩個主機名稱,renstimpy。我們也假設執行 Tomcat 的一個執行個體,所以 $CATALINA_HOME 參照它安裝的位置,可能是 /usr/local/tomcat

此外,本教學使用 Unix 風格的路徑分隔符號和指令;如果您使用 Windows,請做適當的修改。

server.xml

最簡單的方法,編輯 server.xml 檔案的 引擎 部分,使其看起來像這樣

<Engine name="Catalina" defaultHost="ren">
    <Host name="ren"    appBase="renapps"/>
    <Host name="stimpy" appBase="stimpyapps"/>
</Engine>

請注意,每個主機的 appBase 底下的目錄結構不應互相重疊。

有關 EngineHost 元素的其他屬性,請參閱組態文件。

Webapps 目錄

為每個虛擬主機建立目錄

mkdir $CATALINA_HOME/renapps
mkdir $CATALINA_HOME/stimpyapps

組態您的內容

一般

Context 通常位於 appBase 目錄底下。例如,若要在 ren 主機中將 foobar context 部署為 war 檔案,請使用 $CATALINA_HOME/renapps/foobar.war。請注意,ren 的預設或 ROOT context 會部署為 $CATALINA_HOME/renapps/ROOT.war (WAR) 或 $CATALINA_HOME/renapps/ROOT (目錄)。

注意:context 的 docBase 永遠不應與主機的 appBase 相同。

context.xml - 方法 #1

在您的 Context 中,建立一個 META-INF 目錄,然後將您的 Context 定義放入其中一個名為 context.xml 的檔案中。例如 $CATALINA_HOME/renapps/ROOT/META-INF/context.xml。這會讓部署更容易,特別是如果您正在分發 WAR 檔案時。

context.xml - 方法 #2

$CATALINA_HOME/conf/Catalina 底下建立一個與您的虛擬主機對應的結構,例如

mkdir $CATALINA_HOME/conf/Catalina/ren
mkdir $CATALINA_HOME/conf/Catalina/stimpy

請注意,結尾目錄名稱「Catalina」代表 Engine 元素的 name 屬性,如上所示。

現在,針對您的預設 Web App,請新增

$CATALINA_HOME/conf/Catalina/ren/ROOT.xml
$CATALINA_HOME/conf/Catalina/stimpy/ROOT.xml

如果您想針對每個主機使用 Tomcat 管理員 Web App,您也需要在此處新增它

cd $CATALINA_HOME/conf/Catalina
cp localhost/manager.xml ren/
cp localhost/manager.xml stimpy/

每個主機的預設值

您可以透過在主機特定 xml 目錄中指定 context.xml.defaultweb.xml.default 檔案中的新值,來覆寫 conf/context.xmlconf/web.xml 中找到的預設值。

根據我們先前的範例,您可以使用 $CATALINA_HOME/conf/Catalina/ren/web.xml.default 來自訂部署在名為 ren 的虛擬主機中的所有 Web App 的預設值。

更多資訊

有關 Context 元素的其他屬性,請參閱組態文件。