CenOS系統中安裝Tomcat7并設置為自啟動服務
來自: http://www.cnblogs.com/gao241/archive/2012/09/17/2688308.html
1、 軟件
a) 下載apache-tomcat-7.0.27 地址: http://apache.etoak.com/tomcat/tomcat-7/v7.0.27/bin/apache-tomcat-7.0.27.tar.gz
b) 如無特殊說明,本文檔操作用戶為tomcat
2、 安裝
a) 解壓
# tar zxvf apache-tomcat-7.0.27.zip
b) 移動到其他目錄
# mv apache-tomcat-7.0.27 /home/tomcat/tomcat
c) 啟動Tomcat服務
# cd /home/tomcat/tomcat/bin./startup.sh</pre>
d) 檢查是否啟動成功
在本機瀏覽器中訪問URL: http://localhost:8080/
會出現Tomcat的歡迎頁面
注:如果想遠程通過瀏覽器訪問,則在遠程瀏覽器中輸入http://<ip>:8080/
<ip> 可通過在本地機器上輸入命令 ifconfig 查看
如果未能訪問到tomcat的歡迎頁面,需要查看本機的防火墻設置,是否打開了端口8080
e) 停止服務
# ./shutdown.sh
3、 可能出現的問題
a) Java未先安裝,或未正確配置JAVA_HOME系統環境變量
b) Linux系統的防火墻8080端口未被設置為遠程可訪問
4、配置tomcat由tomcat用戶自啟動(使用jsvc)
a) 編譯安裝jsvc
# export CATALINA_HOME=/home/tomcat/tomcatcd $CATALINA_HOME/bin
tar xvfz commons-daemon-native.tar.gz
cd commons-daemon-1.0.8-native-src/unix
./configure
make
cp jsvc ../..</pre>
b) 編寫自啟動腳本:用root用戶登錄,創建腳本tomcat7</b>
# vi /etc/init.d/tomcat7
</b>
添加如下腳本:
#! /bin/shchkconfig: 35 96 04
description: Apache-Tomcat service script.
Version:
2008-01-17-01
By:
Typhoon.Free.Wolf.
Service name.
SVC_NAME="tomcat7"
Lock file.
LOCK_FILE="/var/lock/subsys/tfw_tomcat"
Installation prefix.
APP_HOME="/home/tomcat/tomcat"
The process name to monitor.
APP_PROC="java"
Authorize user.
APP_USER="tomcat" SLEEP_START=5 SLEEP_STOP=$SLEEP_START
Importing functions.
flg_func=0 if [ -f /etc/init.d/functions ] ; then . /etc/init.d/functions flg_func=1 elif [ -f /etc/rc.d/init.d/functions ] ; then . /etc/rc.d/init.d/functions flg_func=1 fi
Templete.
Return:
FLG_PROC_ON means process is there.
FLG_PROC_OFF means process not exists.
Other means error.
FLG_PROC_ON=1 FLG_PROC_OFF=0 probe() { srch_rst=$(ps -A|grep $APP_PROC|awk '{print $4}') for rst in $srch_rst ; do if [ $APP_PROC = $rst ] ; then return $FLG_PROC_ON fi done return $FLG_PROC_OFF }
Templete.
Shows OK.
Return:
echo_ok() { case $flg_func in 1) echo_success echo "" ;; *) echo "" echo " [ OK ]" ;; esac }
Templete.
Shows Passed.
Return:
echo_pass() { case $flg_func in 1) echo_passed echo "" ;; *) echo "" echo " [PASSED]" ;; esac }
Templete.
Shows Failed.
Return:
echo_bad() { case $flg_func in 1) echo_failure echo "" ;; *) echo "" echo " [FAILED]" ;; esac }
Templete.
Start section.
Return:
_start() { probe proc=$? echo "" echo "Starting $SVC_NAME..." if (touch $LOCK_FILE) ; then echo_ok else echo_bad fi }
start() { probe proc=$? echo "" echo "Starting $SVC_NAME..." if [ $FLG_PROC_OFF = $proc ] ; then if (su - $APP_USER -c "$APP_HOME/bin/startup.sh") ; then sleep $SLEEP_START if (touch $LOCK_FILE) ; then echo_ok else echo_pass echo "" fi else echo_bad fi
elif [ $FLG_PROC_ON = $proc ] ; then if (touch $LOCK_FILE) ; then echo_passed echo "" else echo_bad fi fi
}
Templete.
Stop section.
Return:
_stop() { probe proc=$? echo "" echo "Stopping $SVC_NAME..." if (rm -Rf $LOCK_FILE) ; then echo_ok else echo_bad fi }
stop() { probe proc=$? echo "" echo "Stopping $SVC_NAME..." if [ $FLG_PROC_OFF = $proc ] ; then if (rm -Rf $LOCK_FILE) ; then echo_passed echo "" else echo_bad fi elif [ $FLG_PROC_ON = $proc ] ; then if (su - $APP_USER -c "$APP_HOME/bin/shutdown.sh") ; then sleep $SLEEP_STOP if (rm -Rf $LOCK_FILE) ; then echo_ok else echo_pass echo "" fi else echo_bad fi fi }
Parse command line parameters.
case $1 in start) start ;; stop) stop ;;
restart) stop start ;; *) # Print help echo "Usage: $0 {start|stop|restart}" exit 1 ;;
esac exit 0</pre>
</b>
注意修改APP_HOME為tomcat實際安裝路徑,APP_USER為啟動tomcat的用戶。
c) 設置tomcat自啟動服務
使用如下命令給tomcat7增加執行權限
# chmod +x tomcat7
</b>
將tomcat添加到啟動服務中
# chkconfig --add tomcat7chkconfig --level 234 tomcat7 on</pre>
</b>
可以用如下命令確認是否配置成功
chkconfig --list tomcat7
</b>
之后就可以用service來控制tomcat的啟動和停止了。
# service tomcat7 startservice tomcat7 stop</pre>
查看/home/tomcat/tomcat/logs/catalina-daemon.out,確認沒有error。</b>