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

转载自:https://www.cnblogs.com/jpfss/p/9208316.html

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

目录:

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中进行修改

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端口。

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" /> 
 
 -- >  

    <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" /> 
 
 -->  
    <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中只需要注释掉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文件:

<Server port="8005" shutdown="SHUTDOWN" 。/>  把端口改为没有是使用的端口。
<Connector port="8080" ... redirectPort="8443" acceptCount="100"      connectionTimeout="20000" disableUploadTimeout="true" /> 把端口改为没有是使用的端口。 
<Connector port="8009"    enableLookups="false"     redirectPort="8443" protocol="AJP/1.3" / > 把端口改为没有是使用的端口。  

2.7成功!

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

要在同一个Tomcat服务器上部署多个Web项目,你可以按照以下步骤进行操作: 1. 确保你已经安装了Tomcat服务器,并且它正在运行。 2. 在Tomcat的"webapps"目录下创建多个项目文件夹,每个文件夹代表一个独立的Web项目。例如,你可以创建"project1"和"project2"两个文件夹。 3. 将每个Web项目的相关文件(HTML、CSS、JavaScript、JSP等)放置在相应的项目文件夹中。 4. 针对每个项目,你可能还需要创建一个单独的配置文件,比如项目名称为"project1"的配置文件可以命名为"project1.xml"。在该配置文件中,你可以指定项目的上下文路径、端口号等信息。 5. 在Tomcat的"conf"目录下的"server.xml"文件中,配置每个Web项目的上下文路径和端口号。找到`<Host>`标签,添加类似以下的配置: ```xml <Host name="localhost" appBase="webapps"> <Context path="/project1" docBase="path_to_project1_directory" reloadable="true"></Context> <Context path="/project2" docBase="path_to_project2_directory" reloadable="true"></Context> ... </Host> ``` 确保将"path_to_project1_directory"和"path_to_project2_directory"替换为实际的项目文件夹路径。 6. 保存"server.xml"文件,并重新启动Tomcat服务器。 现在,你应该能够通过访问`http://localhost:8080/project1`和`http://localhost:8080/project2`来访问部署的两个Web项目。请注意,端口号可能因你的Tomcat配置而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值