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

Posted 全栈开发者社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个tomcat下部署多个项目或一个服务器部署多个tomcat相关的知识,希望对你有一定的参考价值。

♪ 点击上方绿标 收听一个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.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,过程如下。

<?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.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成功! 


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

原文参考:https://blog.csdn.net/kangguowei/article/details/53037563

留言打卡第18天。

觉得本文对你有帮助?请分享给更多人

关注「全栈开发者社区」加星标,提升全栈技能



好文章,我在看❤️

以上是关于一个tomcat下部署多个项目或一个服务器部署多个tomcat的主要内容,如果未能解决你的问题,请参考以下文章

怎么在同一个tomcat部署多个应用

一个 tomcat 下如何部署多个项目?附详细步骤

一个tomcat部署多个应用实例总结

多个Spring Boot项目部署在一个Tomcat容器无法启动

多个项目如何部署在一个tomcat

Apache中同一个端口如何部署多个项目