2012-05-22 54 views
35

目前,我跑80端口上的域名www.foo.org單WAR申請單Tomcat是指向該服務器的IP。Tomcat和多域/應用

什麼是添加www.bar.org域爲80端口上的不同客戶端的過程?

謝謝

回答

44

從一開始你有一個單一的 「主機」,在你的的conf/server.xml中localhost

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
       prefix="localhost_access_log." suffix=".txt" 
       pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
</Host> 

現在你可以添加一個 「主機」 記錄的記錄,例如

<Host name="anotherclient.com" appBase="anotherclient" unpackWARs="true" autoDeploy="true"> 

     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
      prefix="anotherclient_access_log." suffix=".txt" 
      pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
    </Host> 

其中name="anotherclient.com"是新客戶的域,appBase="anotherclient"是其Web應用程序根目錄名(其中您部署的戰爭);它是相對於tomcat home dir。 Tomcat啓動後

的變化將被接受。

要求去任何其他領域(在server.xml未上市),但指向你的服務器的IP地址將被傳遞到默認的應用程序,它在Engine元素

<Engine name="Catalina" defaultHost="localhost"> 
+5

這是否意味着戰爭在原始foo.org網站的'/ opt/tomcat/webapps/ROOT.war'中,然後是新的bar.org網站的'/ opt/tomcat/anotherclient/ROOT.war' ? – CodeMed

+1

@CodeMed是的,這是正確的。我只是自己嘗試過,把這樣的WAR似乎對我有用。 –

+1

我們必須創建另一個客戶端自己的目錄,或者在重新啓動tomcat7後創建該目錄 – dollar

3

通常你有口由80種不同(如8080或7001或任何你想要的)一個Tomcat(或其他應用服務器)。 之後,你把一個Web服務器(如Apache HTTP服務器)上的80端口,並配置一個或多個連接器,以指向不同的端口使用不同的地址不同的應用服務器上。

爲Apache HTTP + tomcat的,你可以看看這個鏈接:

http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

+2

指定沒有什麼特別的理由添加另一個產品到OP的環境中:這個問題可以單獨使用Tomcat來解決。 –

+1

這只是在專業的環境中有Web和應用服務器的最佳做法。 – Guaido79

+3

馬拉:Tomcat是完全可以接受的web服務器。稱呼某種「最佳做法」並不是最佳做法。這是一種常見的做法,但絕對不是「最佳」做法。 –

5

在默認配置下,Tomcat接受任何主機的請求,並將它們全部發送到「本地主機」 <主機>在conf/server.xml中定義。如果你還沒有改變,那麼所有你需要做的是確保你已建立了兩個主機名來指向您的服務器的DNS記錄。

如果您希望爲每個主機名擁有一組不同的webapps,那麼您必須在conf/server.xml中定義第二個<主機>,併爲其使用適當的主機名。 (請注意,您總是必須有一個「默認」的主機,所有的請求去不匹配任何明確定義的主機)。

你可以閱讀<的文檔主機>在這裏:http://tomcat.apache.org/tomcat-7.0-doc/config/host.html(這是對於Tomcat 7.0.x.你沒有提到你的版本,所以我給你一個鏈接到最新版本的文檔)。

+0

謝謝 - 它的版本7,WAR文件怎麼樣?每個客戶需要不同的部署? – user648026

+1

@ user648026每個都有它自己的appBase,所以你可以選擇將WAR文件放入其中一個或兩個。選擇一個將使該WAR文件只能使用該主機名進行訪問,同時將WAR文件放在同一個容器中意味着您將有兩個同時在同一個容器中運行的webapp副本:一個用於一個主機,另一個用於另一個主機。 –

+0

因此,在端口80上運行的單個tomcat可以使用多個「主機」配置通過單個WAR處理同一端口(80)上的多個主機。 – user648026