歡迎光臨
每天分享高質量文章

Tomcat 單機多實體部署

(點選上方公眾號,可快速關註)


來源:ImportNew – xbing

在這篇文章中,我們將會看到在單機單使用者基礎上,如何執行多個tomcat實體。

我們首先看到的是tomcat的目錄結構,其每個檔案夾有以下用途:

  • bin – 包含所有執行tomcat的二進位制和指令碼檔案

  • lib – 包含tomcat使用的所有共享庫

  • conf – 包含配置資訊,如tomcat系結的埠等

  • logs – 包含所有的日誌檔案

  • temp – 此目錄是tomcat存放的臨時檔案

  • webapps – 此目錄非常重要,這裡存放所有的應用程式war包

  • work – 如果應用程式包含jsp檔案,那麼每個jsp檔案會被編譯轉化為servlet,存放於此

當我們執行Tomcat時,會用到5個環境變數。他們是:

  • CATALINA_HOME

  • CATALINA_BASE

  • CATALINA_TMPDIR

  • JRE_HOME/JAVA_HOME

  • CLASSPATH

在以上串列中,CATALINA_HOME和JAVA_HOME是必要的環境變數。其它的都可以透過CATALINA_HOME來轉換,是可選的。

CATALINA_HOME – 此環境變數是tomcat安裝/提取的根目錄。所以透過CATALINA_HOME,可以得到bin和lib目錄。

CATALINA_BASE – 如果不指定則是CATALINA_HOME的值。該變數指向的目錄裡麵包括每個執行實體需要使用自己的conf、logs、temp、webapps、work目錄。

一般執行Tomcat的方法是,只設定CATALINA_HOME變數,執行startup.sh指令碼,startup.sh會自動轉換其它未設定的變數。

startup.sh設定環境變數時呼叫catalina.sh指令碼,此指令碼會讀取CATALINA_BASE的值,在$CATALINA_BASE/conf目錄,得到server.xml。這個檔案時Tomcat的核心配置,它包含所有的配置資訊,如shutdown埠,connector埠,主機名稱,應用目錄等。例如,Tomcat通常使用8080作為連線埠,所以我們可以透過http://localhost:8080/訪問。

如果我們已經設定$CATALINA_BASE,Tomcat就會從該變數所對應的目錄搜尋得到server.xml。

使用此方法可以在一臺機器上執行多個Tomcat實體。我們不需要改變CATALINA_HOME值,只需要在啟動/關閉Tomcat之前修改CATALINA_BASE值。

建立一個名為“tomcat-instance1”的目錄,從CATALINA_HOME目錄中複製conf,logs,temp,webapps,work目錄,修改“tomcat-instance1”目錄中的conf/server.xml檔案。需要修改的埠是:Shutdown port,Connector port,ajp port和Redirect port。

Shutdown port – 此埠用於關閉Tomcat。當執行shutdown.sh指令碼時,它會給此埠發出一個訊號,Tomcat的行程會監聽此埠,如果接收到這樣的訊號,行程會清理退出。

Connector port – 此埠是應用對外公開釋出的埠。

ajp port – Web伺服器(例如Apache的httpd Server)透過此埠和Tomcat進行通訊,也可以使用它設定一個負載均衡伺服器。

Redirect port – 如果此Connector支援非SSL請求和接收SSL請求,Catalina會自動將請求指向到此埠。

看看示例server.xml檔案:

    …..

   

        connectiontimeout=”20000″port=”8080″

        protocol=”org.apache.coyote.http11.Http11NioProtocol”

        redirectport=”8443″ />

   

因為一個埠一旦被系結,其它行程就不能再系結,所以我們將這些埠修改為其它值。在tomcat-instance1/conf/server.xml檔案,配置server port =8105,connector port = 8181,ajp port = 8109。

    …..

   

        connectiontimeout=”20000″ port=”8181″

        protocol=”org.apache.coyote.http11.Http11NioProtocol”

        redirectport=”81443″ />

   

現在我們可以建立兩個指令碼檔案來啟動關閉tomcat-instance1。

startup-instance1.sh

export CATALINA_BASE= /home/ramki/tomcat-instance1

cd $CATALINA_HOME/bin

./startup.sh

shutdown-instance1.sh

export CATALINA_BASE= /home/ramki/tomcat-instance1

cd $CATALINA_HOME/bin

./shutdown.sh

這裡我們設定了CATALINA_BASE變數並指向新的 tomcat-instance1。因為執行tomcat的所有二進位制檔案都在CATALINA_HOME/bin目錄,隨後使用startup/shutdown指令碼。

綜上所述,我們可以透過建立多實體目錄並修改conf/server.xml檔案中的port值來執行實體。

看完本文有收穫?請轉發分享給更多人

關註「ImportNew」,提升Java技能

贊(0)

分享創造快樂