本文介紹在同一個tomcat下運行mydomain.com和mysite.com這兩個實例的步驟。web
有時候,咱們但願週期性的更新Tomcat;有時候,咱們又想統一管理安裝在一臺機器上的tomcat(好比讓tomcat版本統一,讓多個實例的tomcat的依賴統1、配置統一等)。在這些場景下,咱們都不但願把Web應用程序的文件放入Tomcat發行版的目錄結構中,而是讓一個tomcat運行多個實例,並把Web應用放在tomcat的安裝目錄以外。apache
通常在使用Tomcat時,服務器會從conf及webapps目錄中讀取配置文件,並將文件寫入logs、temp和work目錄,固然一些jar文件和class文件須要從服務器的公共目錄樹中予以加載。所以,爲了讓多個實例能同時運行,每個Tomcat實例都必須有本身的目錄集。瀏覽器
首先,下載tomcat安裝包,並解壓,這裏我使用的tomcat版本是tomcat-8.0.33:tomcat
而後,建立一個文件夾tomcat-instance(該文件夾用於存放tomcat全部實例),並在這個文件夾下分別建立mydomain.com和mysite.com兩個實例文件夾:服務器
mkdir tomcat-instance cd tomcat-instance mkdir mydomain.com mkdir mysite.com
對於mydomain.com,依次作如下步驟:app
1. 拷貝Tomcat安裝目錄的conf文件夾下的全部內容,到mydomain.com文件夾下:dom
cd mydomain.com cp -a /home/user/Software/apache-tomcat-8.0.33/conf . mkdir common logs temp server shared webapps work
2.修改mydomain.com/conf/server.xml,將中止端口號修改成不一樣的端口號:webapp
3.修改Connector的端口號:spa
4.刪除server.xml中全部的Context元素(由於這份server.xml來自於tomcat的安裝目錄,若是曾經用該tomcat部署過項目,server.xml中就會有Context元素,因爲如今沒有將這些項目複製到mydomain.com實例的webapps文件夾下)及嵌套的全部元素,並加入與本身的webapps相關的內容。code
5.爲了簡化變量設置步驟,建立tomcat啓動腳本start-mydomain.sh,並將該文件放在tomcat-instance目錄下,該文件的內容以下:
6.修改腳本的權限,使其可執行:
7.用腳本啓動tomcat實例:
能夠看到,這個實例使用的CATALINA_BASE是instance/mydomain.com,這裏的CATALINA_HOME是安裝tomcat的目錄。
8.將Web應用程序內容拷貝到mydomain.com/webapps目錄(這裏我只拷貝示例文件),從瀏覽器驗證啓動的tomcat實例:
到這裏,tomcat實例mydomain.com已經正常運行了。
另外一個實例mysite.com也按照1~8的步驟依次進行,可是注意如下步驟的不一樣配置:
2.Server端口號修改成8013。
3.Connector端口號修改成8082。
5.腳本中的CATALINA_BASE修改成/home/user/Software/tomcat-instance/mysite.com。
7.用腳本啓動mysite.com實例:
能夠看到,這個實例使用的CATALINA_BASE是instance/mysite.com。而這裏的CATALINA_HOME依然是安裝tomcat的目錄,這和mydomain.com實例的配置是同樣的,說明兩者確實共用了一個安裝目錄。
8.拷貝示例文件到mysite.com/webapps目錄,從瀏覽器驗證啓動的tomcat實例:
至此,tomcat的多實例已能正常運行,固然,也能夠爲這些實例建立中止tomcat的腳本。
當把Web應用的文件和Tomcat發行版的文件分開管理後,升級Tomcat將會變得十分容易,由於咱們能夠用新目錄直接替換整個Tomcat發行版的目錄。