一個tomcat程序啓動多個tomcat實例

####環境java

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

CATALINA_BASE /data/app/tomcat-1 每一個tomcat實例配置文件,work,臨時文件的目錄 /data/app/tomcat-2apache

####多實例啓動準備bootstrap

  • 準備catalina_base並拷貝必要文件

# mkdir tomcat-1tomcat

# mdkir tomcat-2app

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

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

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

# cat tomcat-1/conf/server.xmlcode

<?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 #修改全部端口,防止端口衝突server

<?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
相關文章
相關標籤/搜索