简述
实际使用场景中,如果使用tomcat ,在一个测试服务器中会有多个开发团队部署多个java服务,每个服务都有自己的端口。如果是生产环境同一台服务器每个java服务都部署一个tomcat 实例,每个服务都配置自己的 catalina.sh 配置。但是在测试环境中仅用于测试没有个性化配置要求,所以为了维护方便可以统一配置tomcat ,然后每个服务部署自己的应用,也就是说共用一个catalina.home ,独享自己的catalina.base,但是这种情况也是多实例部署。
具体配置
安装jdk 及tomcat
每个服务部署一个单独的目录,例如 test-pay test-shop test-message ,目录结构如下:
ls test-pay conf lib logs temp webapps work
每个服务一个启动和停止脚本,脚本内容如下:
#!/bin/bash #set env export JAVA_HOME=/usr/java/jdk1.8.0_65 export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export CATALINA_HOME=/data/tomcat8 #所有服务此处的catalina.home 都是相同 export CATALINA_BASE=/data/test-pay #每个服务都有自己的base ,例如test-shop 就是/data/test-shop $CATALINA_HOME/bin/startup.sh #停止脚本此处脚本名为shutdown.sh,其他配置一样
tomcat 启动和停止过程
所有的服务启动脚本调用都是/data/tomcat8/bin/startup.sh , 此脚本调用的是同级目录的catalina.sh ,此脚本中配置了统一的jvm参数等配置,启动的时候会加载服务启动脚本中定义的CATALINA_HOME路径,根据路径加载每个服务的conf目录下的server.xml等配置文件,每个server.xml都定义了自己服务对应的端口默认的appBase,一般默认weapps,所有然后就会解压其下的war包。整个过程启动了三个进程
1 S tomcat 30279 1 0 80 0 - 27064 do_wai Feb21 ? 00:00:00 /bin/sh /data/tomcat/bin/catalina.sh start 4 S root 30280 1 0 80 0 - 1527 pipe_w 09:02 pts/6 00:00:00 /usr/sbin/cronolog /data/qa-instances/logs/catalina.%Y-%m-%d.out 0 S root 30281 30279 0 80 0 - 1181811 futex_ 09:02 pts/6 00:00:34 /usr/java/jdk1.8.0_65/bin/java -Djava.util.logging.config.file=/data/qa-instances/qa-/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms1024m -Xmx1024m -Xloggc:/data/qa-instances/qa-/logs/gc.log -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /data/tomcat8/bin/bootstrap.jar:/data/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/data/qa-instances/qa- -Dcatalina.home=/data/tomcat8 -Djava.io.tmpdir=/data/qa-instances/qa-/temp org.apache.catalina.startup.Bootstrap start
注意停止脚本也要定义自己的CATALINA_BASE ,这样停止的时候只会停止对应的服务。