Tomcat7 を jsvc で起動する手順

公開日: : 最終更新日:2014/01/26 Tomcat ,

Tomcat7 を jsvc で起動するようにした手順をメモしておきます。
正直あんまり分かっていないので、とりあえず「こうやれば起動しました」ってログになってます。

java-tomcat

目次

1. 動作環境

動作環境は次の通りです。

1-1. Java

システムにインストールしてある Java のバージョンは次の通りです。

$ java -version
java version "1.6.0_38"
Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.13-b02, mixed mode)

JAVA_HOME は次の通りです。

$ echo $JAVA_HOME
/usr/java/default

1-2. Tomcat

インストール済みの Tomcat のバージョンは次の通りです。

$ /opt/tomcat/apache-tomcat-7.0.42/bin/version.sh 
Using CATALINA_BASE:   /opt/tomcat/apache-tomcat-7.0.42
Using CATALINA_HOME:   /opt/tomcat/apache-tomcat-7.0.42
Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-7.0.42/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /opt/tomcat/apache-tomcat-7.0.42/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-7.0.42/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.42
Server built:   Jul 2 2013 08:57:41
Server number:  7.0.42.0
OS Name:        Linux
OS Version:     2.6.32-431.3.1.el6.x86_64
Architecture:   amd64
JVM Version:    1.6.0_38-b05
JVM Vendor:     Sun Microsystems Inc.

Tomcat は次のディレクトリに展開してあります。

  • CATALINA_HOME=/opt/tomcat/apache-tomcat-7.0.42

1-3. CentOS

OS は CentOS です。

$ cat /etc/redhat-release 
CentOS release 6.5 (Final)

2. jsvc を作成する

Tomcat の起動・停止を操作する jsvc を作成します。
手順は次の通りです。

cp /opt/tomcat/apache-tomcat-7.0.42/bin/commons-daemon-native.tar.gz /tmp/
cd /tmp
tar -xvzf commons-daemon-native.tar.gz
cd commons-daemon-1.0.15-native-src/unix/
./configure
make
cp jsvc /opt/tomcat/apache-tomcat-7.0.42/bin/
cd /opt/tomcat/apache-tomcat-7.0.42/bin
chown xxx.xxx jsvc # Tomcat の起動ユーザに所有者を変更

3. 起動スクリプトを作成する

Tomcat の起動スクリプトは次の場所に作成しました。

  • /etc/init.d/tomcat7

このスクリプトの内容は次の通りです。

#!/bin/bash
#
# chkconfig: - 80 20
# description: jsvc


. /etc/init.d/functions

JAVA_HOME=/usr/java/default
CATALINA_HOME=/opt/tomcat/apache-tomcat-7.0.42
DAEMON=$CATALINA_HOME/bin/jsvc
TOMCAT_USER=tomcat6

TMP_DIR=/tmp
PIDFILE=/var/run/tomcat7.pid
CATALINA_BASE=$CATALINA_HOME
LOCKFILE=/var/lock/subsys/tomcat

CATALINA_OPTS="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"

CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/tomcat-juli.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar

start(){
    #
    # Start Tomcat
    #

    echo -n "Starting tomcat7: "
    $DAEMON $JSVC_OPTS \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.io.tmpdir=$TMP_DIR \
    -wait 10 \
    -pidfile $PIDFILE \
    -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=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        touch $LOCKFILE
    else
        echo_failure
    fi
    echo
}

stop(){
    #
    # Stop Tomcat
    #
    echo -n "Shutting down tomcat7: "
    $DAEMON \
    -stop \
    -pidfile $PIDFILE \
    org.apache.catalina.startup.Bootstrap
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        rm -f $PIDFILE $LOCKFILE
    else
        echo_failure
    fi
    echo
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status $DAEMON
        RETVAL=$?
        ;;
    *)
        echo $"Usage: tomcat7 {start|stop|restart|status}"
        exit 1
        ;;
esac

4. 起動確認

次のコマンドを実行して Tomcat7 が起動すれば OK です。

$ sudo /etc/init.d/tomcat7 start
Starting tomcat7:                                          [  OK  ]
$ sudo /etc/init.d/tomcat7 status
jsvc (pid 13618 13617) を実行中...

5. まとめ

OS の起動時に Tomcat も起動する場合は chkconfig コマンドで設定を追加してください。

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

icatch-journey_1427015543_mini-thumbnail

Tomcatの再起動はworkディレクトリも削除しておいた方が無難

Tomcat を再起動するときは work ディレクトリに作成される「プロジェクト名のディレクトリ」

記事を読む

icatch-tomcat-2process_mini

jsvc を使って daemon として起動した Tomcat のプロセス数が2つなのは正しい

Tomcat7 を jsvc で起動する手順 で Tomcat7 を jsvc を使って daemo

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


9 − = 六

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑