一個tomcat下部署不同端口多個應用


通過配置tmcat的server.xml來實現多端口多應用:

<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!--APR library loader. Documentation at /docs/apr.html -->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
<Listener className="org.apache.catalina.core.JasperListener" />
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>


<Service name="Catalina">

<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" URIEncoding="UTF-8" 
enableLookups="false" 
acceptCount="500" 
connectionTimeout="5000" 
disableUploadTimeout="true" maxThreads="1500" maxSpareThreads="50" minSpareThreads="25"
redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="/data/java/appstore-api" path="/" reloadable="false" />
</Host>
</Engine>
</Service>

<Service name="web">
<Connector port="8088" protocol="HTTP/1.1" maxThreads="700" acceptCount="100" connectionTimeout="2000" redirectPort="8445" URIEncoding="UTF-8"/>

<Engine name="web" defaultHost="localhost">
<Host name="localhost" appBase="webapp1">
<Context docBase="/data/java/appstore-web" path="" reloadable="true" />
</Host>
</Engine>
</Service>

<Service name="web2">
<Connector port="8089" protocol="HTTP/1.1" maxThreads="700" acceptCount="100" connectionTimeout="2000" redirectPort="8445" URIEncoding="UTF-8"/>
<Engine name="web2" defaultHost="localhost">
<Host name="localhost" appBase="webapp2">
<Context docBase="/data/java/appstore-web2" path="" reloadable="true" />
</Host>
</Engine>
</Service>
</Server>

1、按照上面的配置,啟動tomcat,可以發現:
1)啟動tomcat后,在tomcat配置目錄:/usr/local/tomcat/conf下,除了默認的Catalina文件夾外,還會生成web1和web2兩個文件夾。原因是Engine組件中,指定了所用的web1和web2。當然,我們可以將不同service組件的Engine name都指定成Catalina。
2)啟動tomcat后,在tomcat目錄:/usr/local/tomcat下,除了默認的webapps文件夾外,還會生成webapp1和webapp2兩個目錄。原因是Host組件中,指定了appBase偉webapp1和webapp2.當然,我們可以將不同service組件的Host appBase指定成默認的webapps。
3)<Context docBase="/data/java/appstore-web" path="" reloadable="true" /> 這個用於配置根路徑項目,也就是/data/java/appstore-web包訪問時是通過ip:port來訪問,而不是傳統的ip:port/app

2、配置說明:
1)appBase是虛擬主機存放webapp的目錄,它可以是相對路徑,也可以是絕對路徑。如果是相對路徑,則相對於$CATALINA_HOME,嚴格並准確地說是CATALINA_BASE。
2)path是URI的匹配路徑,相當於nginx的location后的路徑。tomcat要求每個虛擬主機必須配置一個空字符串的path,該條context作為URI無法被明確匹配時的默認context,它相當於nginx中location / {}的作用。
3)docBase則是每個webapp的存放目錄,可以配置文件夾或者war包路徑
a. 如果如果配置的是文件夾,它可以是相對路徑,也可以是絕對路徑,提供相對路徑時它相對於appBase。該目錄一般在appBase的目錄下,但並不規定一定要放在appBase下,比如
<Context docBase="/data/java/appstore-web" path="" reloadable="true" />
就會將這個文件夾當成ROOT web來訪問,訪問地址是ip:port 而不是ip:port/appstore-web
(對於web服務來說,它相當於nginx的root指令,但對於webapp來說,一個context就相當於一個webapp,而docBase正是webapp的路徑。)
b. 如果配置的是war文件,比如
<Context docBase="/data/java/appstore-web.war" path="" reloadable="true" />
就會將這個jar文件解壓到webapp1的ROOT文件夾中,當成ROOT web來訪問,訪問地址是ip:port 而不是ip:port/appstore-web

 

另外如果app需要將自定義配置文件引入tomcat 可以在tomcat catalina.properties中增加紅色部分

common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/appconfig

 

 

 

 

 

 

 

 本文部分轉載自https://blog.csdn.net/liuxiao723846/article/details/79940428

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM