一个tomcat程序启动多个tomcat实例

####环境

CATALINA_HOME /data/app/tomcat-7.0.64 tomcat程序所在目录

CATALINA_BASE /data/app/tomcat-1 每个tomcat实例配置文件,work,临时文件的目录 /data/app/tomcat-2

####多实例启动准备

  • 准备catalina_base并拷贝必要文件

# mkdir tomcat-1

# mdkir tomcat-2

# cp -a tomcat-7.0.64/{conf,logs,webapps,work,temp} tomcat-1/

# cp -a tomcat-7.0.64/{conf,logs,webapps,work,temp} tomcat-2/

  • 修改配置文件,修改端口防止端口冲突

# cat tomcat-1/conf/server.xml

<?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" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <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>

  <Service name="Catalina">

    <Connector port="8080" 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 &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>

# cat tomcat-2/conf/server.xml #修改所有端口,防止端口冲突

<?xml version='1.0' encoding='utf-8'?>
<Server port="8006" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <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>

  <Service name="Catalina">

    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444" />
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />

    <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 &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>
多实例启动tomcat

# export CATALINA_HOME=/data/app/tomcat-7.0.64/

# export CATALINA_BASE=/data/app/tomcat-1/

# /data/app/tomcat-7.0.64/bin/startup.sh

Using CATALINA_BASE:   /data/app/tomcat-1/
Using CATALINA_HOME:   /data/app/tomcat-7.0.64/
Using CATALINA_TMPDIR: /data/app/tomcat-1//temp
Using JRE_HOME:        /data/app/jdk1.7.0_80
Using CLASSPATH:       /data/app/tomcat-7.0.64//bin/bootstrap.jar:/data/app/tomcat-7.0.64//bin/tomcat-juli.jar
Tomcat started.

# export CATALINA_BASE=/data/app/tomcat-2/

# /data/app/tomcat-7.0.64/bin/startup.sh

Using CATALINA_BASE:   /data/app/tomcat-2/
Using CATALINA_HOME:   /data/app/tomcat-7.0.64/
Using CATALINA_TMPDIR: /data/app/tomcat-2//temp
Using JRE_HOME:        /data/app/jdk1.7.0_80
Using CLASSPATH:       /data/app/tomcat-7.0.64//bin/bootstrap.jar:/data/app/tomcat-7.0.64//bin/tomcat-juli.jar
Tomcat started.
  • 查看tomcat进程已多实例启动

# ps aux|grep tomcat

root      2691  4.3  2.9 1363648 57564 pts/1   Sl   21:23   0:02 /data/app/jdk1.7.0_80/bin/java -Djava.util.logging.config.file=/data/app/tomcat-1//conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=85 -XX:+UseCMSInitiatingOccupancyOnly -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Djava.endorsed.dirs=/data/app/tomcat-7.0.64//endorsed -classpath /data/app/tomcat-7.0.64//bin/bootstrap.jar:/data/app/tomcat-7.0.64//bin/tomcat-juli.jar -Dcatalina.base=/data/app/tomcat-1/ -Dcatalina.home=/data/app/tomcat-7.0.64/ -Djava.io.tmpdir=/data/app/tomcat-1//temp org.apache.catalina.startup.Bootstrap start
root      2763 67.0  2.9 1362952 57440 pts/1   Sl   21:23   0:02 /data/app/jdk1.7.0_80/bin/java -Djava.util.logging.config.file=/data/app/tomcat-2//conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=85 -XX:+UseCMSInitiatingOccupancyOnly -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Djava.endorsed.dirs=/data/app/tomcat-7.0.64//endorsed -classpath /data/app/tomcat-7.0.64//bin/bootstrap.jar:/data/app/tomcat-7.0.64//bin/tomcat-juli.jar -Dcatalina.base=/data/app/tomcat-2/ -Dcatalina.home=/data/app/tomcat-7.0.64/ -Djava.io.tmpdir=/data/app/tomcat-2//temp org.apache.catalina.startup.Bootstrap start

####不同实例参数的不同的解决

相同的参数可以写在$CATALINA_HOME/bin/catalina.sh里,但是有些参数是得单独写的,比如jmx的端口 使用脚本启动

  • 启动脚本

# cat /data/app/tomcat-1/tomcat.sh

#!/bin/sh
. /etc/init.d/functions
RETVAL=$?
# tomcat实例目录
export CATALINA_BASE="/data/app/tomcat-1"
# tomcat安装目录
export CATALINA_HOME="/data/app/tomcat-7.0.64"
# 可选
export JVM_OPTIONS="$JAVA_OPTS -server -Xmx128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m"
export CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=$ip -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo $"Start Tomcat"
$CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];then
echo $"Stop Tomcat"
$CATALINA_HOME/bin/shutdown.sh
fi
;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
;;
esac
exit $RETVAL

# cat /data/app/tomcat-2/tomcat.sh

#!/bin/sh
. /etc/init.d/functions
RETVAL=$?
# tomcat实例目录
export CATALINA_BASE="/data/app/tomcat-2"
# tomcat安装目录
export CATALINA_HOME="/data/app/tomcat-7.0.64"
# 可选
export JVM_OPTIONS="$JAVA_OPTS -server -Xmx512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m"
export CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=$ip -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9006 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo $"Start Tomcat"
$CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];then
echo $"Stop Tomcat"
$CATALINA_HOME/bin/shutdown.sh
fi
;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
;;
esac
exit $RETVAL
  • 使用脚本启动tomcat

# sh /data/app/tomcat-1/tomcat.sh stop

# sh /data/app/tomcat-1/tomcat.sh start

# sh /data/app/tomcat-2/tomcat.sh stop

# sh /data/app/tomcat-2/tomcat.sh start

  • 启动

# ps aux|grep tomcat

root      2980  8.6  3.0 1365780 57768 pts/1   Sl   21:33   0:02 /data/app/jdk1.7.0_80/bin/java -Djava.util.logging.config.file=/data/app/tomcat-1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=85 -XX:+UseCMSInitiatingOccupancyOnly -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Djava.rmi.server.hostname= -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.endorsed.dirs=/data/app/tomcat-7.0.64/endorsed -classpath /data/app/tomcat-7.0.64/bin/bootstrap.jar:/data/app/tomcat-7.0.64/bin/tomcat-juli.jar -Dcatalina.base=/data/app/tomcat-1 -Dcatalina.home=/data/app/tomcat-7.0.64 -Djava.io.tmpdir=/data/app/tomcat-1/temp org.apache.catalina.startup.Bootstrap start
root      3066 20.1  3.1 1366796 60308 pts/1   Sl   21:34   0:02 /data/app/jdk1.7.0_80/bin/java -Djava.util.logging.config.file=/data/app/tomcat-2/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=85 -XX:+UseCMSInitiatingOccupancyOnly -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Djava.rmi.server.hostname= -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9006 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.endorsed.dirs=/data/app/tomcat-7.0.64/endorsed -classpath /data/app/tomcat-7.0.64/bin/bootstrap.jar:/data/app/tomcat-7.0.64/bin/tomcat-juli.jar -Dcatalina.base=/data/app/tomcat-2 -Dcatalina.home=/data/app/tomcat-7.0.64 -Djava.io.tmpdir=/data/app/tomcat-2/temp org.apache.catalina.startup.Bootstrap start

转载于:https://my.oschina.net/u/1791060/blog/658194

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值