じぶんメモ

プログラミングのメモ、日常のメモとか。

tomcat起動スクリプトを自作する

tomcat起動法

CentOStomcatを起動すると、以下の場所に起動シェルスクリプトが生成される。
(環境によって違うかも)

/usr/local/tomcat/bin/startup.sh 

これを実行すればtomcatが起動されるが、面倒なのでservice tomcat startで起動できるようにする。

起動スクリプトファイルの作成

まずはファイルの作成。

vi /etc/rc.d/init.d/tomcat

ファイルに以下の内容を作成。

#!/bin/bash
# Startup script for the Tomcat Servlet Container
#
# chkconfig: 2345 35 65

export LANG=ja_JP.UTF-8

TOMCAT_HOME=/usr/local/tomcat
LOCKFILE=/var/lock/subsys/tomcat

# source function library
. /etc/rc.d/init.d/functions

start(){
    # ロックファイルがなければ起動を開始する
    if [ ! -f ${LOCKFILE} ]; then
        echo "Starting tomcat"
        #sudo -u tomcat ${TOMCAT_HOME}/bin/startup.sh
        ${TOMCAT_HOME}/bin/startup.sh
        sleep 1
        PID=`ps -ef | grep catalina.home=${TOMCAT_HOME} | grep -v grep | awk '{print $2}'`
        echo ${PID} > ${LOCKFILE}
    else
        echo "tomcat is already running"
    fi
}

stop(){
    if [ -f ${LOCKFILE} ]; then
        echo "Shutting down tomcat"
        #sudo -u tomcat ${TOMCAT_HOME}/bin/shutdown.sh
        ${TOMCAT_HOME}/bin/shutdown.sh
        echo "Shutted down tomcat"
        rm -f ${LOCKFILE}
    else
        echo "tomcat is not running"
    fi
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        #${TOMCAT_HOME}/bin/catalina.sh version
        if [ -f ${LOCKFILE} ]
        then
          echo "tomcat(pid:"`cat ${LOCKFILE}`") is running."
        else
          echo "tomcat is not running."
        fi
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
esac

exit 0

TOMCAT_HOMEとLOCKFILEの場所は環境によって変えること。 あとは起動ファイルに権限を付与し、chkconfigをonにすればサーバー起動時に自動的にtomcatが起動される。

sudo chmod 755 /etc/rc.d/init.d/tomcat
sudo chkconfig tomcat on

使用方法は以下の通り

sudo service tomcat start
sudo service tomcat stop
sudo service tomcat restart
sudo service tomcat status