Advertisement

一个tomcat下部署多个项目或一个服务器部署多个tomcat

阅读量:

近期为了实现两个项目的同步部署需求,在服务器平台上进行了深入研究,并在此过程中参考了许多现有的解决方案。具体操作步骤已详细记录下来,并作为警示供其他技术人员参考。

目录:

1,一个tomcat下同时部署两个项目(多个项目可以参考)

1.1项目都放在webapps内(共用一个端口)

1)把两个项目都放在webapps下。

2)处理重复jar包。

3)tomcat端口默认为8080.如果想修改可以去conf下的server.xml中进行修改

4)启动tomcat

1.2 创建多个类似于WebApps的目录,并在配置文件server.xml中进行相应设置(每个项目分配不同的端口号)

在位于tomcat webapps目录下的相同层级创建一个新文件夹命名为webapps1并将第一个项目放置于该文件夹中随后再创建一个名为webapps2的新文件夹并放入第二个项目。
如同步骤1.1中的第二步所述:处理重复使用的JAR包。
更新并重新配置server.xml文件以设置所需端口及其他相关信息。

4)启动tomcat.

2,一台服务器上同时运行2个tomcat.(多个应该类似)

压缩版tomcat无法配置安装版相关设置。
第一个tomcat配置保持不变。
新增环境变量CATALINA_HOME2和CATAL INA_BASE2,并分别设置为新tomcat的位置地址。
对新tomcat启动及停止脚本进行更新,请将其中所有的CATAL INA_HOME替换为CATAL INA_HOME2。
对升级启动脚本catalina.bat进行调整,请将其中所有的CAT ALIN A_HOM E替换为CA TALKA IN _HOME ₂,并将CA TAINA _BASE也相应更改为CA TAINA _BASE₂。
修改conf/server.xml文件:

2.7成功!

在一个tomcat环境中同时部署两个项目(多个项目可作为参考)。将两个项目放置于webapps目录下(使用同一个端口)。将这两个项目放置在webapps目录中。如果这两个项目的jar包存在重复内容,则需进行处理以避免服务器内存溢出,并排除类似http-bio-8080"-exec-1等异常。建立共享包路径设置即可解决此问题。修改catalina.properties文件中的common.loader属性值,并在此基础上增加必要的配置项。

“${catalina.home}/lib/shared/*.jar”,然后启动tomcat。很显然,

需要将共享的jar包放到一个

在创建好共享文件夹后,
首先将shared目录中的内容复制到tomcat的lib目录下。
接着,在创建好共享文件夹后,
将相同的包都放置于shared目录内,
并确保每个项目的WEB-INF下的lib分别存放各自独有的依赖项。

3)tomcat端口默认为8080.如果想修改可以去conf下的server.xml中进行修改

4) 启动tomcat

1.2 创建多个与WebApps类似的目录结构,并以conf下的server.xml为配置依据(建议每个项目均设置不同的端口号)

  1. 在 tomcat 的 webapps 目录下新增 webapps 子目录,在其中放置第一个项目;
  2. 参考步骤 1.1 的第二步:处理重复的JAR包;
  3. 更新 server.xml 文件内容,并设置相应的端口号及其他必要的信息;
    A部分首先需了解 tomcat 的几个主要使用的端口号:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="60000"

redirectPort="8443" disableUploadTimeout="false"

executor="tomcatThreadPool" URIEncoding="UTF-8"/>

其中8080为HTTP端口,8443为HTTPS端口。

8005为远程停服务端口

8009为AJP端口,APACHE能过AJP协议访问TOMCAT的8009端口。

b,修改server.xml. 主要操作是在server目录中新增一个service。这个过程主要集中在Connector部分的端口配置上。这些改动将影响到咱们方法所使用的HTTP连接端口。

注释掉8009AJP端口,修改host下的

appBase为对应的webapps,过程如下。

复制代码
 <?xml version='1.0' encoding='utf-8'?>

    
  
    
 <Server port="8005" shutdown="SHUTDOWN">
    
   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
    
  
    
   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
    
   <!-- 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>
    
 	<!-- the first service-->
    
     <Service name="Catalina">
    
  
    
    
    
     <Connector port="80" protocol="HTTP/1.1"
    
            connectionTimeout="20000"
    
            redirectPort="8443" />
    
 <!-- 注释的地方-->
    
  <!--    
    
     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
   31.  -->
    
   
    
     <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">
    
  
    
     
    
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    
            prefix="localhost_access_log" suffix=".txt"
    
            pattern="%h %l %u %t "%r" %s %b" />
    
  
    
       </Host>
    
     </Engine>
    
 	
    
   </Service>
    
   
    
   <!-- the second service-->
    
     
    
     <Service name="Catalina">
    
 	<!-- 修改的地方-->
    
     <Connector port="8081" protocol="HTTP/1.1"
    
            connectionTimeout="20000"
    
            redirectPort="8443" />
    
 			    -->
    
 					<!-- 注释的地方-->
    
   <!--   
    
     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
   67.  -->
    
  
    
  
    
  
    
     <Engine name="Catalina" defaultHost="localhost">
    
  
    
      
    
       <Realm className="org.apache.catalina.realm.LockOutRealm">
    
    
    
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    
            resourceName="UserDatabase"/>
    
       </Realm>
    
 		<!-- 修改的地方 appBase:第二个项目放置的位置-->
    
       <Host name="localhost"  appBase="webapps1"
    
         unpackWARs="true" autoDeploy="true">
    
  
    
    
    
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    
            prefix="localhost_access_log" suffix=".txt"
    
            pattern="%h %l %u %t "%r" %s %b" />
    
  
    
       </Host>
    
     </Engine>
    
   </Service>
    
  
    
 </Server>

可以看到,在第一个service中仅仅需要关闭掉相关的配置项即可。若不关闭该配置项,则该端口将无法正常运行,其余的部分无需做任何调整。

第二个service为第一个service的副本,

在其中修改80端口为8081.host的appBase修改为自己对应的位置。

如果想部署多个项目,再次增加service节点即可。
4),启动tomcat

2)同一台服务器上同时支持两个Tomcat实例。
当在一台机器上已部署一个Tomcat服务时,请确保其配置正确,并且无论该Tomcat是否已注册为Windows服务或未注册时。

无论是否注册了系统服务都不会产生影响。都可通过以下步骤进行配置。
当该tomcat已成功注册为Windows服务时,在Windows环境中无法找到CATALINA_HOME和CATALINA_BASE参数。
同样地,请按照以下方法完成设置。

一旦第一个tomcat启动后

后来在dos下运行才发现所有的tomcat都会去找

CATALINA_HOME和CATALINA_BASE这两个环境变量,因此步骤如下:
2.1.使用压缩版的tomcat不能使用安装版的。
2.2.第一个tomcat的配置不变。
2.3.增加环境变量CATALINA_HOME2,值为新的tomcat的地址;增加环境变量CATALINA_BASE2,值为新的tomcat的地址。
2.4.修改新的tomcat中的startup.bat、shutdown.bat,把其中的CATALINA_HOME改为CATALINA_HOME2。
2.5.修改新的tomcat中的catalina.bat,把其中的CATALINA_HOME改为CATALINA_HOME2,CATALINA_BASE改为CATALINA_BASE2。
2.6.修改conf/server.xml文件:

复制代码
 <Server port="8005" shutdown="SHUTDOWN">把端口改为没有是使用的端口。  
    
   <Connector port="8080" maxHttpHeaderSize="8192"  
    
   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
    
   enableLookups="false" redirectPort="8443" acceptCount="100"  
    
   connectionTimeout="20000" disableUploadTimeout="true" /> 把端口改为没有是使用的端口。  
    
 	<Connector port="8009"  
    
   enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> 把端口改为没有是使用的端口。

2.7成功!

总结经验:在遇到问题时

全部评论 (0)

还没有任何评论哟~