http://blog.csdn.net/prettywolf/archive/2007/03/10/1525911.aspx
以下文章參考了網上的文章,但經過自己實驗和整理。
linux自動啟動程式的方法很多,但是有時某些程式要設定環境變數的就會引起麻煩。
tomcat啟動時需要設定JAVA_HOME,CLASSPATH等環境變數,
很多文章說設定好環境變數,把/path/startup.sh放到rc.local中就可以實現自動啟動了,
但是實際操作發現,很多的linux版本因為安全原因,rc.local中忽略了export命令,也就是說在這裡設定的export都是無效的,以下為轉貼的方法:
在Linux下,Tomcat可以作為一個守護進程來啟動以及停止,這個必須藉助於項目commons-daemon中的jsvc工具。Tomcat安裝完後就帶有這個工具的源碼{tomcat}/bin/jsvc.tar.gz。按照下列命令安裝這個工具:
解壓: tar zxvf jsvc.tar.gz
配置: cd jsvc-src
chmod +x configure
。/configure --with-java=/usr/local/jdk1.5.0
編譯: make
檢驗: 。/jsvc -help
jsvc工具本身帶了一個指令碼(在native目錄下)用來啟動和停止Tomcat守護進程,但是在實驗中發現該指令碼無法設定為自動啟動,顯示的錯誤資訊是:tomcat 服務不支援 chkconfig,因此修改了此指令碼,可以從此處下載:tomcat.txt
程式碼:(網上大部分代碼有錯誤,經修改運行OK)
#!/bin/sh
#
# Startup Script for Tomcat5
#
# chkconfig: 345 87 13
# description: Tomcat Daemon
# processname: jsvc
# pidfile: /var/run/jsvc.pid
# config:
#
# Source function library.
#/etc/init.d/functions 我的系統沒有這個檔案,不過注釋掉這行沒影響
#
prog=tomcat
#
# Small shell script to show how to start/stop Tomcat using jsvc
# If you want to have Tomcat running on port 80 please modify the server.xml
# file:
#
# <!-- Define a non-SSL HTTP/1.1 Connector on port 80 -->
# <Connector className="org.apache.catalina.connector.http.HttpConnector"
# port="80" minProcessors="5" maxProcessors="75"
# enableLookups="true" redirectPort="8443"
# acceptCount="10" debug="0" connectionTimeout="60000"/>
#
# You need a developement version of Tomcat (Apache Tomcat/4.1-dev)
#
# Adapt the following lines to your configuration
JAVA_HOME=/usr/local/jdk1.5.0
CATALINA_HOME=/usr/local/apache-tomcat-5.5.16
DAEMON_HOME=$CATALINA_HOME/bin
TOMCAT_USER=tomcat5
TMP_DIR=/var/tmp
CATALINA_OPTS=
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar
start(){
echo -n $"Starting $prog: "
#
# Start Tomcat
#
$DAEMON_HOME/jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Djava.io.tmpdir=$TMP_DIR \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#網上文章上面幾行中有空行,會導致出錯
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
RETVAL=$?
[ $RETVAL = 0 ] && touch /var/lock/subsys/jsvc
#我的系統沒有/var/lock/subsys這個檔案夾,建立一個OK
[ $RETVAL = 0 ] && echo success || echo failure
echo
return $RETVAL
}
stop(){
echo -n $"Stopping $prog: "
#
# Stop Tomcat
#
PID=`cat /var/run/jsvc.pid`
kill $PID
RETVAL=$?
[ $RETVAL = 0 ] && rm /var/lock/subsys/jsvc
[ $RETVAL = 0 ] && echo success || echo failure
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo "Usage $0 start/stop"
exit 1;;
esac
修改下載的指令碼裡面有關路徑的資訊以及要啟動Tomcat的使用者(使用者必須已存在)
拷貝指令碼到/etc/rc.d/init.d目錄下的tomcat檔案,給該指令碼賦予可執行許可權
chown tomcat5 tomcat
chmod +x tomcat
你可以使用命令
/etc/rc.d/init.d/tomcat start|stop
來驗證守護進程是否可以正常啟動和停止。
接下來就是把這個指令碼設定成系統啟動時自動執行,系統關閉時自動停止,使用如下命令:
chkconfig --add tomcat
重新啟動系統後可以啟動的過程中看到Starting Tomcat ..... [OK]的資訊,這樣就完成設定過程。
自已再補充一點,要把apache-tomcat-5.5.16下的work所有者設成tomcat5 ,否則會出錯。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1525911