zoukankan      html  css  js  c++  java
  • 一个tomcat下部署多个项目或一个服务器部署多个tomcat

    最近需要把两个项目同时部署到服务器上,于是研究了一下,页借鉴了很多别人的方法,把过程记录下来,以儆效尤。

    目录:

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

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

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

    2)处理重复jar包。

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

    4)启动tomcat

      1.2建立多个类似于webapps的文件夹,通过conf下的server.xml进行配置(每个项目使用不同端口)

    1)在tomcat的webapps同一层目录下新建webapps1文件夹,webapps放入第一个项目,webapps2放入第二个项目。
    2)同1.1第二步:处理重复jar包。
    3)修改server.xml文件,设置端口等信息。

    4)启动tomcat.

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

    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文件: 

    2.7成功! 

    1,一个tomcat下同时部署两个项目(多个项目可以参考)
    1.1项目都放在webapps内(共用一个端口)
    1)把两个项目都放在webapps下。
    2)处理重复jar包。
    两个项目如果有重复的jar包,一定要进行处理,否则会导致服务器内存耗尽,报类似于http-bio-8080"-exec-1等异常。
    解决方案:建立共享包路径。
    参考文章:https://my.oschina.net/angerbaby/blog/271438
    我采用第一种:
    修改catalina.properties中的common.loader属性。在common.loader属性原值基础上追加

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

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

    shared目录里,然后将shared目录放到tomcat下lib目录里。
    建立好共享文件夹之后,把相同的包都放在共享文件夹,每个项目WEB-INF下的lib放各自独有的。

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

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    4)启动tomcat   

    1.2建立多个类似于webapps的文件夹,通过conf下的server.xml进行配置(每个项目使用不同端口)
    1)在tomcat的webapps同一层目录下新建webapps1文件夹,webapps放入第一个项目,webapps2放入第二个项目。
    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端口

    <Server port="8005" shutdown="SHUTDOWN">   

    8005为远程停服务端口

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

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

    b,修改server.xml.
    主要操作为在server下在增加一个service,这个文件中修改的地方主要是Connector里的端口,也就是咱们方法的http端口,

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

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

    1. <?xml version='1.0' encoding='utf-8'?>  
    2.    
    3. <Server port="8005" shutdown="SHUTDOWN">  
    4.   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />  
    5.    
    6.   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />  
    7.   <!-- Prevent memory leaks due to use of particular java/javax APIs-->  
    8.   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  
    9.   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />  
    10.   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />  
    11.     
    12.   <GlobalNamingResources>  
    13.      
    14.     <Resource name="UserDatabase" auth="Container"  
    15.               type="org.apache.catalina.UserDatabase"  
    16.               description="User database that can be updated and saved"  
    17.               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"  
    18.               pathname="conf/tomcat-users.xml" />  
    19.   </GlobalNamingResources>  
    20.     <!-- the first service-->  
    21.     <Service name="Catalina">  
    22.   
    23.      
    24.     <Connector port="80" protocol="HTTP/1.1"  
    25.                connectionTimeout="20000"  
    26.                redirectPort="8443" />  
    27. <!-- 注释的地方-->  
    28.  <!--     
    29.     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
    30.  
    31.  -->  
    32.     
    33.     <Engine name="Catalina" defaultHost="localhost">  
    34.   
    35.       
    36.       <Realm className="org.apache.catalina.realm.LockOutRealm">  
    37.          
    38.         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  
    39.                resourceName="UserDatabase"/>  
    40.       </Realm>  
    41.   
    42.       <Host name="localhost"  appBase="webapps"  
    43.             unpackWARs="true" autoDeploy="true">  
    44.   
    45.           
    46.         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
    47.                prefix="localhost_access_log" suffix=".txt"  
    48.                pattern="%h %l %u %t "%r" %s %b" />  
    49.   
    50.       </Host>  
    51.     </Engine>  
    52.       
    53.   </Service>  
    54.     
    55.   <!-- the second service-->  
    56.       
    57.     <Service name="Catalina">  
    58.     <!-- 修改的地方-->  
    59.     <Connector port="8081" protocol="HTTP/1.1"  
    60.                connectionTimeout="20000"  
    61.                redirectPort="8443" />  
    62.                 -->  
    63.                     <!-- 注释的地方-->  
    64.   <!--    
    65.     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
    66.  
    67.  -->  
    68.   
    69.   
    70.   
    71.     <Engine name="Catalina" defaultHost="localhost">  
    72.   
    73.        
    74.       <Realm className="org.apache.catalina.realm.LockOutRealm">  
    75.          
    76.         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  
    77.                resourceName="UserDatabase"/>  
    78.       </Realm>  
    79.         <!-- 修改的地方 appBase:第二个项目放置的位置-->  
    80.       <Host name="localhost"  appBase="webapps1"  
    81.             unpackWARs="true" autoDeploy="true">  
    82.   
    83.          
    84.         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
    85.                prefix="localhost_access_log" suffix=".txt"  
    86.                pattern="%h %l %u %t "%r" %s %b" />  
    87.   
    88.       </Host>  
    89.     </Engine>  
    90.   </Service>  
    91.    
    92. </Server>  

    可以看到,第一个service中只需要注释掉8009那部分。如果不注释会发生端口被占用的情况,其他不用改变,

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

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

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

    2,一台服务器上同时运行2个tomcat.(多个应该类似)
    如果现在一台机器上已经部署了一个tomcat服务,无论这个tomcat是否已经注册为服务了,或者没有注册windows服务,

    或者注册了,都没关系。都可以采用下面的方法实现。
    如果该tomcat已经注册为windows服务了,从window的环境变量中找不到 
    CATALINA_HOME和CATALINA_BASE,也可以采用下面的方式实现。 

    当第一个tomcat启动后,后面tomcat的server.xml中的端口不管怎么改,仍然会报端口冲突。

    后来在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文件:  

    1. <Server port="8005" shutdown="SHUTDOWN">把端口改为没有是使用的端口。    
    2.   <Connector port="8080" maxHttpHeaderSize="8192"    
    3.   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"    
    4.   enableLookups="false" redirectPort="8443" acceptCount="100"    
    5.   connectionTimeout="20000" disableUploadTimeout="true" /> 把端口改为没有是使用的端口。    
    6.     <Connector port="8009"    
    7.   enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> 把端口改为没有是使用的端口。    

         2.7成功! 


    总结:在遇到问题时,首先应分析问题产生的原因,然后整理解决的思路,思路很重要,如何分析呢,看日志,重要的事情说三遍,看日志,看日志,see logs。然后根据相应信息查找问题原因,参考别人的意见时,也要结合自己的实际情况。最主要的是不要怕错,动手去做。你想拥有你从未拥有的东西,就要去做你从未做过的事。加油。


  • 相关阅读:
    Win32基础知识2 Win32汇编语言003
    Win32基础知识4 Win32汇编语言005
    Win32基础知识4 Win32汇编语言005
    第一个程序 零基础入门学习Delphi01
    Mysql四种通信协议(linux下本地连接的都是socket 其他都是tcp)
    Rhino
    Common Gateway Interface Python CGI编程
    inaccessible
    mysqli_report
    算法功底网站性能瓶颈
  • 原文地址:https://www.cnblogs.com/jpfss/p/9208316.html
Copyright © 2011-2022 走看看