單機單用戶基礎上, 如何運行多個tomcat實例. 首先是tomcat的目錄結構
- bin – 包含所有運行tomcat的二進制和腳本文件
- lib – 包含tomcat使用的所有共享庫
- conf – 包含配置信息, 如tomcat綁定的端口等
- logs – 包含所有的日志文件
- temp – 此目錄是tomcat存放的臨時文件
- webapps – 此目錄非常重要, 這里存放所有的應用程序war包和war包解壓后的類和資源目錄
- work – 如果應用程序包含jsp文件, 那么每個jsp文件會被編譯轉化為servlet, 存放於此
當我們運行Tomcat時,會用到5個環境變量
- CATALINA_HOME - Tomcat的安裝目錄, 通過CATALINA_HOME, 可以得到bin和lib目錄
- CATALINA_BASE - Tomcat的工作目錄, 其下是conf, logs, temp, webapps, work. 如果不指定則與CATALINA_HOME相同
- CATALINA_TMPDIR
- JRE_HOME/JAVA_HOME
- CLASSPATH
在以上列表中, CATALINA_HOME和JAVA_HOME是必要的環境變量。其它的都可以通過CATALINA_HOME來轉換,是可選的。
一般運行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:
<server port="8005" shutdown="SHUTDOWN"> ..... <connector connectiontimeout="20000"port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectport="8443" /> <connector port="8009" protocol="AJP/1.3" redirectport="8443" /> </server>
在tomcat-instance1/conf /server.xml文件,配置server port =8105,connector port = 8181,ajp port = 8109。
<server port="8105" shutdown="SHUTDOWN"> ..... <connector connectiontimeout="20000" port="8181" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectport="81443" /> <connector port="8109" protocol="AJP/1.3" redirectport="81443" /> </server>
現在我們可以創建兩個腳本文件來啟動關閉tomcat-instance1。
startup-instance1.sh
export CATALINA_BASE= /home/ramki/tomcat-instance1
export CATALINA_HOME=/opt/tomcat/apache-tomcat-7.0.62 cd $CATALINA_HOME/bin ./startup.sh
shutdown-instance1.sh
export CATALINA_BASE= /home/ramki/tomcat-instance1
export CATALINA_HOME=/opt/tomcat/apache-tomcat-7.0.62 cd $CATALINA_HOME/bin ./shutdown.sh
這里我們設置了CATALINA_BASE變量並指向新的 tomcat-instance1。因為運行tomcat的所有二進制文件都在CATALINA_HOME/bin目錄,隨后使用startup/shutdown腳本。也可以直接通過catalina.sh來啟動和關閉tomcat:
export JAVA_HOME=/opt/jdk1.6.0_45 export CATALINA_BASE= /home/ramki/tomcat-instance1
export CATALINA_HOME=/opt/tomcat/apache-tomcat-7.0.62 cd $CATALINA_HOME/bin
./catalina.sh start