近來發現很多 linux 系統管理員對 tomcat 系統服務的配置不是很規范,其實,Tomcat 自帶了一個守護進程管理工具 jsvc,可以用它來配置 Tomcat 的系統服務。
linuxtomcat啟動,為了演示的需要,我準備了 jdk 和 tomcat:
[root@RicenOS opt]# pwd
部署tomcat、/opt
[root@RicenOS opt]# ls
tomcat、java ? ?tomcat
進入到 tomcat 的 bin 目錄,解壓 commons-daemon-native.tar.gz:
[root@RicenOS opt]# cd tomcat/bin/
[root@RicenOS bin]# tar xvf commons-daemon-native.tar.gz
進入到解壓后的 unix 子目錄,配置并編譯:
[root@RicenOS bin]# cd commons-daemon-1.0.15-native-src/unix/
[root@RicenOS unix]# ./configure --with-java=/opt/java && make
把編譯生成的 jsvc 文件拷貝到 tomcat 的 bin 目錄下:
[root@RicenOS unix]# cp jsvc ../../
編寫服務腳本,把這個腳本放到 /etc/rc.d/init.d 目錄下:
[root@RicenOS unix]# vi /etc/rc.d/init.d/tomcat
內容參考如下:
#!/bin/sh
# chkconfig: 35 46 49
# description: Apache tomcat6
DESC="Apache tomcat6"
JAVA_HOME="/opt/java"
CATALINA_HOME="/opt/tomcat"
JAVA_OPTS="-server -XX:PermSize=128M -XX:MaxPermSize=512M -Xms1024M -Xmx1024M -XX:+HeapDumpOnOutOfMemoryError"
SERVICE_START_WAIT_TIME=10
CATALINA_PID="$CATALINA_HOME/logs/catalina.pid"
CATALINA_OUT="$CATALINA_HOME/logs/catalina.out"
CLASSPATH="$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/tomcat-juli.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar"
LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_HOME/conf/logging.properties"
LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
CATALINA_TMPDIR="$CATALINA_HOME/temp"
JSVC="$CATALINA_HOME/bin/jsvc"
CATALINA_MAIN=org.apache.catalina.startup.Bootstrap
RETVAL=0
echo_success() {
echo -en "\\033[60G\033[32m"
echo -n "[ "
echo -n $"OK"
echo -n " ]"
echo -ne "\033[0m\n"
RETVAL=0
}
echo_failure() {
echo -en "\\033[60G\033[31m"
echo -n "[ "
echo -n $"FAILED"
echo -n " ]"
echo -ne "\033[0m\n"
RETVAL=1
}
start(){
echo -n "Starting $DESC ..."
"$JSVC" \
-java-home "$JAVA_HOME" \
-pidfile "$CATALINA_PID" \
-wait "$SERVICE_START_WAIT_TIME" \
-outfile "$CATALINA_OUT" \
-errfile "&1" \
-classpath "$CLASSPATH" \
"$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS \
-Dcatalina.home="$CATALINA_HOME" \
-Dcatalina.base="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
-Duser.timezone=GMT+08 \
$CATALINA_MAIN
sleep 3
RETVAL=$?
if [ "$RETVAL" -eq 0 ]; then
echo_success
else
echo_failure
fi
return $RETVAL
}
stop(){
echo -n "Stopping $DESC ..."
"$JSVC" \
-stop \
-pidfile "$CATALINA_PID" \
-classpath "$CLASSPATH" \
-Dcatalina.home="$CATALINA_HOME" \
-Dcatalina.base="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
$CATALINA_MAIN
RETVAL=$?
if [ "$RETVAL" -eq 0 ]; then
echo_success
else
echo_failure
fi
return $RETVAL
}
repair(){
PIDLIST=`ps -ef | grep "$CATALINA_HOME" | grep -v "grep" | awk '{print $2}'`
if [ -n "$PIDLIST" ]; then
for PID in $PIDLIST
do
kill -9 $PID
echo "Kill $DESC PID:$PID"
done
echo -n "$DESC repair success."
echo_success
else
echo "No $DESC PID alive."
fi
}
status(){
PIDLIST=`ps -ef | grep "$CATALINA_HOME" | grep -v "grep" | awk '{print $2}'`
if [ -n "$PIDLIST" ]; then
echo "$DESC is running."
else
echo "$DESC is not running."
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
repair)
repair
;;
status)
status
RETVAL=0
;;
*)
echo "Usage: $0 {start | stop | repair | status}"
RETVAL=1
;;
esac
exit $RETVAL
改變文件權限:
[root@RicenOS unix]# chmod +x /etc/rc.d/init.d/tomcat
配置系統啟動:
[root@RicenOS unix]# chkconfig --level 35 tomcat on
修改 tomcat/conf 目錄下的 server.xml 文件:
[root@RicenOS unix]# vi ../../../conf/server.xml
主要修改以下這段:
maxThreads="1000" minSpareThreads="100" maxSpareThreads="5000"
minProcessors="50" maxProcessors="500" enableLookups="false"
redirectPort="8443" acceptCount="1000" connectionTimeout="40000"
disableUploadTimeout="true" URIEncoding="utf-8" />
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态