以下文章參考了網上的文章,但經過自己試驗和整理。
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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
