1. 程式人生 > >一個tomcat部署多個應用實例總結

一個tomcat部署多個應用實例總結

%u error 難度 conf proto webapp 信息 eba onf

項目組有好幾個項目需要運行,之前項目少,一個tomcat對應一個項目還能應付,但現在項目多了,要是再一個tomcat對應一個項目的話,一方面看起來很業余,一方面也加大服務器的維護難度。所以現在需要對tomcat進行整理,用一個tomcat來啟動多個應用實例,每個應用相互獨立,互不幹擾。
準備工作:下載的apache-tomcat-7.0.26.zip,上傳到linux服務器下/opt/apps/目錄下。
百牛信息技術bainiu.ltd整理發布到博客園
一、操作步驟
1、解壓apache-tomcat-7.0.26.zip。
2、在apache-tomcat-7.0.26新建一個應用實例目錄,如test,在test目錄下創建三個目錄:conf、temp和webapps.
3、將原tomcat目錄下的conf的server.xml、tomcat-user.xml和web.xml拷貝到test/conf/,將原tomcat目錄下的webapps/manager拷貝到test/webapps.
4、修改test/conf/server.xml.修改的地方如下:

<Server port="${tomcat.server.port}" shutdown="SHUTDOWN">

<Connector port="${tomcat.http.port}" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

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

<Engine name="Catalina" defaultHost="localhost" jvmRoute="${tomcat.instance.name}">

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/opt/app/logs/${tomcat.instance.name}" prefix="localhost_access_log." suffix=".txt" pattern="%h %{x-forwarded-for}i %l %u %t "%r" %s %b" />
5、在/opt/apps/下新建logs/test目錄
6、在/opt/apps/下新建bin目錄:
創建test-start.sh文件,文件內容如下:
#!/bin/bash
export LD_LIBRARY_PATH="/opt/apps/apache-tomcat-7.0.26/bin/native"
#export JAVA_HOME="/opt/apps/jdk1.7.0_05"

export CATALINA_OPTS="-Dtomcat.server.port=8005 -Dtomcat.http.port=8010 -Dtomcat.instance.name=test -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError"
export CATALINA_OUT="/opt/apps/logs/test/catalina.$(date +‘%Y-%m-%d‘).out"
export CATALINA_PID="/opt/apps/apache-tomcat-7.0.26/tomcat-test.pid"
export CATALINA_BASE="/opt/apps/apache-tomcat-7.0.26/test"

rm -rf /opt/apps/apache-tomcat-7.0.26/test/work
/opt/apps/apache-tomcat-7.0.26/bin/catalina.sh start

exit $?

創建test-stop.sh文件,文件內容如下:
#!/bin/bash
export JAVA_HOME="/opt/apps/jdk1.7.0_05"
export JAVA_OPTS="-Dtomcat.server.port=8005"
export CATALINA_PID="/opt/apps/apache-tomcat-7.0.26/tomcat-test.pid"
/opt/apps/apache-tomcat-7.0.26/bin/catalina.sh stop 0 -force

7、將應用拷貝到apache-tomcat-7.0.26/test/webapps/,通過test-start.sh來啟動應用實例,test-stop.sh來停止應用實例。
8、如要再創建一個實例,重復進得2~7操作。

二、遇到的問題:
1、Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
解決方案:copy apache-tomcat-7.0.26/conf/web.xml到apache-tomcat-7.0.26/test/conf/

2、利用jenkins自動部署時,報錯:Caused by: java.io.IOException: Server returned HTTP response code: 401 for URL: http://localhost:8010/manager/text/list
解決方案:copy apache-tomcat-7.0.26/webapps/manager到apache-tomcat-7.0.26/test/webapps/,同時需要在test/conf/tomcat-user.xml加上用戶配置。

有時候再centos操作系統一個tomcat部署多個應用實例會出現問題,重啟一下有時候由可以,由於技術有限還在處理這個問題。

一個tomcat部署多個應用實例總結