zoukankan      html  css  js  c++  java
  • 一个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

  • 相关阅读:
    LeetCode 9. Palindrome Number(回文数)
    POJ 1080 Human Gene Functions
    springcloud之gateway
    canal快速入门
    Java8新特性
    vue整合echarts
    vue整合微信支付
    Thymeleaf快速入门
    vue整合阿里云播发器
    vue之vuex
  • 原文地址:https://www.cnblogs.com/king1302217/p/10691507.html
Copyright © 2011-2022 走看看