1. 程式人生 > >Tomcat 多埠,多虛擬主機配置方法

Tomcat 多埠,多虛擬主機配置方法

      Tomcat多使用在開發環境裡,但有時也做生產環境。在生產環境下多會碰到,需要在一個tomcat下放置多個站點的情況。有時還需要同時開啟多個不同的埠,接受多個域名請求的情況。通常這種情況會開啟多個tomcat例項。這種方法有如下利弊:

優點:1.每個站點相互獨立,互相不受干擾。不會因為一個站點繁忙導致,其它站點受影響。

            2.可以對tomcat,做高度自定義。當需要做一些對容器不安全的情況下。為保證其它站點不受影響,可以使用這種情況。如:需要開啟自定義執行緒。

缺點:1.浪費系統資源。雖然tomcat佔用系統資源很少,但例項過多浪費還是很嚴重的。由於tomcat有記憶體溢位的問題,需要改大記憶體,而這樣導致了系統資源的大量浪費。

            2.管理不方便,無論是調優,還是日常的啟動,關閉,埠管理。雖然Linux下很多命令很方便,但還是很麻煩。

       我曾經發現有的伺服器上,最多部署過6個tomcat,記憶體的浪費可想而知了...

       有時真的很羨慕windows上的IIS,我想沒幾個見過一臺windows上跑多個IIS吧?所以我認真的花時間研究了一下,tomcat配置,實際上tomcat支援多埠,多虛擬目錄的情況,多個服務的方式,可見tomcat配置很靈活。需要修改conf/server.xml

首先是讓tomcat監聽多個埠:

Xml程式碼  收藏程式碼
  1. <Connector
     port="8081" protocol="HTTP/1.1"  
  2.               connectionTimeout="20000"  
  3.               redirectPort="8443" />  
  4.    <Connector port="8082" protocol="HTTP/1.1"  
  5.               connectionTimeout="20000"  
  6.               redirectPort="8443" />  

只需填加一個Connector就可以了。

         但這種方法有一個缺點是,兩個埠處理的東西是一樣的,也就是訪問8081和8082的內容是一樣的。這種適合需要使用指定模個埠的情況。

接下來是讓tomcat,一個為不同域名服務。

Xml程式碼  收藏程式碼
  1. <Engine name="Catalina" defaultHost="localhost">  
  2.       <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  
  3.          resourceName="UserDatabase"/>  
  4.       <Host name="localhost"  appBase="webapps"  
  5.             unpackWARs="true" autoDeploy="true"  
  6.         xmlValidation="false" xmlNamespaceAware="false">  
  7.       </Host>  
  8.       <Host name="www.java.com"  appBase="webapps2"  
  9.             unpackWARs="true" autoDeploy="true"  
  10.         xmlValidation="false" xmlNamespaceAware="false">  
  11.       </Host>  
  12.  </Engine>  

只需填加一個Host就可以了,appBase需要使用另外一個目錄。這樣不同域名,訪問不同目錄。

         最後,我們可能希望,Tomcat可以使用不同IP,訪問不同目錄。除了程序是一個,其它跟倆個例項一樣。這個xml比較多,只列出需要的部分。

Xml程式碼  收藏程式碼
  1. <Service name="Catalina2">  
  2.    <Connector port="8082" protocol="HTTP/1.1"  
  3.               connectionTimeout="20000"  
  4.               redirectPort="8443" />  
  5.    <Engine name="Catalina2" defaultHost="localhost">  
  6.      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  
  7.             resourceName="UserDatabase"/>  
  8.      <Host name="localhost"  appBase="webapps2"  
  9.            unpackWARs="true" autoDeploy="true"  
  10.            xmlValidation="false" xmlNamespaceAware="false">  
  11.      </Host>  
  12.    </Engine>  
  13.  </Service>  

       上面是需要新增到xml裡面的。就是添加了一個Service。Service name, Engine name,host appBase都需要修改。這樣就可以一個tomcat完成倆個例項工作了。