(點選上方公眾號,可快速關註)
來源: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技能