####環境java
CATALINA_HOME /data/app/tomcat-7.0.64 tomcat程序所在目錄web
CATALINA_BASE /data/app/tomcat-1 每一個tomcat實例配置文件,work,臨時文件的目錄 /data/app/tomcat-2apache
####多實例啓動準備bootstrap
# 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 "%r" %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 "%r" %s %b" /> </Host> </Engine> </Service> </Server>
# 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.
# 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
# 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