OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2011/03/18
更新日: 2011/03/26

OSSでLinuxサーバ構築

Tomcat6インストール+初期設定

トップページOSSでLinuxサーバ構築 > Tomcat6インストール+初期設定
このエントリーをはてなブックマークに追加

構成

想定環境

<準備中>

サーバ構成

OSバージョン

CentOS 5.5 64bit

パッケージ一覧

apache-tomcat-6.0.32.tar.gz

クライアント構成

OSバージョン

<準備中>

ソフトウェア一覧

<準備中>

サーバ構築

インストール

 以下のウェブサイトから、Tomcat 6.0の最新のtar.gzファイルをダウンロードします。
【URL】
 http://tomcat.apache.org/download-60.cgi
【ファイル名】
 apache-tomcat-6.0.32.tar.gz ※2011/03/11時点での最新版

 ダウンロードしたファイルを/tmpディレクトリに配置します。

 Tomcat起動用のユーザを作成します。ユーザ名、グループ名共に「tomcat」とします。

# groupadd -g 1001 tomcat
# useradd -u 1001 -g tomcat -s /bin/bash tomcat

 tomcatユーザにスイッチした後、配置したファイルをtarコマンドで展開し、/usr/localディレクトリに移動させます。

# su - tomcat
$ cd /tmp/
$ tar zxvf ./apache-tomcat-6.0.32.tar.gz 
apache-tomcat-6.0.32/bin/catalina.sh
apache-tomcat-6.0.32/bin/digest.sh
apache-tomcat-6.0.32/bin/setclasspath.sh
apache-tomcat-6.0.32/bin/shutdown.sh
apache-tomcat-6.0.32/bin/startup.sh
(中略)
apache-tomcat-6.0.32/webapps/manager/images/tomcat.gif
apache-tomcat-6.0.32/webapps/manager/images/update.gif
apache-tomcat-6.0.32/webapps/manager/images/void.gif
apache-tomcat-6.0.32/webapps/manager/status.xsd
apache-tomcat-6.0.32/webapps/manager/xform.xsl
$ exit
# mv /tmp/apache-tomcat-6.0.32 /usr/local/

 ディレクトリ名を簡略化させるためにtomcatという名でシンボリックリンクを作成します。 これによって、今後Tomcatをリビジョンアップさせた場合でも、シンボリックリンクを 張り直すだけで最新のTomcatを利用でき、関連シェル等の修正が不要となります。

# cd /usr/local/
# ln -s apache-tomcat-6.0.32 tomcat

 ログディレクトリを/var/logディレクトリ以下へtomcat6という名前にリネームして移動し、 元のlogsディレクトリへシンボリックリンクを作成します。

# cd /usr/local/tomcat/
# mv logs /var/log/tomcat6
# ln -s /var/log/tomcat6 logs

 tomcatユーザで起動シェルを実行後、プロセスが起動したことを確認します。 その後、tomcatユーザで停止シェルを実行し、プロセスが停止したことを確認します。

# su - tomcat -c /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.6.0_24
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar
# ps -ef | grep tomcat | grep -v grep
tomcat    4328     1  4 00:23 ?        00:00:03 /usr/java/jdk1.6.0_24/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
# su - tomcat -c /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.6.0_24
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar
# ps -ef | grep tomcat | grep -v grep

 Linux起動時にTomcatを自動起動させるためのrcスクリプトを作成します。 今回はCentOS5.5にバンドルされているTomcat5のrcスクリプトをベースにして作成しました。 一部バグ修正も行っていますが、ザッと作成しただけなので不具合があるかもしれませんがご了承ください。

# cd /etc/rc.d/init.d/
# vi tomcat6
ファイル名:/etc/rc.d/init.d/tomcat6
#!/bin/bash
#
# tomcat6      This shell script takes care of starting and stopping Tomcat
#
# chkconfig: - 80 20
#
### BEGIN INIT INFO
# Provides: tomcat6
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Release implementation for Servlet 2.4 and JSP 2.0
# Short-Description: start and stop tomcat
### END INIT INFO
#
# - originally written by Henri Gomez, Keith Irwin, and Nicolas Mailhot
# - heavily rewritten by Deepak Bhole and Jason Corley
#

# commented out until the RHEL and FC daemon functions converge
# Source the function library
#if [ -r "/etc/rc.d/init.d/functions" ]; then
    #. /etc/rc.d/init.d/functions
#fi

NAME="$(basename $0)"
unset ISBOOT
if [ "${NAME:0:1}" = "S" -o "${NAME:0:1}" = "K" ]; then
    NAME="${NAME:3}"
    ISBOOT="1"
fi

# For SELinux we need to use 'runuser' not 'su'
if [ -x "/sbin/runuser" ]; then
    SU="/sbin/runuser"
else
    SU="su"
fi

# Define which connector port to use
CONNECTOR_PORT="${CONNECTOR_PORT:-8080}"

# Tomcat program name
TOMCAT_PROG="$NAME"

# Define the tomcat username
TOMCAT_USER="${TOMCAT_USER:-tomcat}"

# Define the tomcat log file
TOMCAT_LOG="${TOMCAT_LOG:-/var/log/tomcat6/catalina.out}"

# Time to wait in seconds, before killing process
SHUTDOWN_WAIT=30

RETVAL="0"

# remove when the RHEL and FC daemon functions converge
# (pulled from /etc/rc.d/init.d/functions)
function checkpid() {
    local i
    for i in $* ; do
        if [ -d "/proc/${i}" ]; then
            return 0
        fi
    done
    return 1
}

# remove when the RHEL and FC daemon functions converge
# (pulled from /etc/rc.d/init.d/functions)
function echo_failure() {
    echo -en "\\033[60G"
    echo -n "[  "
    echo -n $"FAILED"
    echo -n "  ]"
    echo -ne "\r"
    return 1
}

# remove when the RHEL and FC daemon functions converge
# (pulled from /etc/rc.d/init.d/functions)
function echo_success() {
    echo -en "\\033[60G"
    echo -n "[  "
    echo -n $"OK"
    echo -n "  ]"
    echo -ne "\r"
    return 0
}

# See how we were called.
function start() {
    echo -n "Starting ${TOMCAT_PROG}: "
    if [ -f "/var/lock/subsys/${NAME}" ] ; then
        if [ -f "/var/run/${NAME}.pid" ]; then
            read kpid < /var/run/${NAME}.pid
                if checkpid $kpid 2>&1; then
                    echo "$NAME process already running"
                        return -1
                    else
                        echo "lock file found but no process running for"
                        echo "pid $kpid, continuing"
                fi
        fi
    fi
    export CATALINA_PID="/var/run/${NAME}.pid"
    touch $CATALINA_PID
    chown ${TOMCAT_USER}:${TOMCAT_USER} $CATALINA_PID
#    $SU - $TOMCAT_USER -c "$TOMCAT_SCRIPT start" >> $TOMCAT_LOG 2>&1
    $SU - $TOMCAT_USER -c "/usr/local/tomcat/bin/startup.sh" >> $TOMCAT_LOG 2>&1
    RETVAL="$?"
    if [ "$RETVAL" -eq 0 ]; then
        echo_success
        pgrep -u tomcat java > $CATALINA_PID
        touch /var/lock/subsys/${NAME}
    else
        echo_failure
    fi
    echo
    return $RETVAL
}

function status() {
    RETVAL="1"
    if [ -f "/var/run/${NAME}.pid" ]; then
        read kpid < /var/run/${NAME}.pid
        if checkpid $kpid 2>&1; then
            echo "$0 is already running (${kpid})"
            RETVAL="0"
        else
            echo "lock file found but no process running for pid $kpid"
        fi
    else
        pid="$(pgrep -u tomcat java)"
        if [ -n "$pid" ]; then
            echo "$0 running (${pid}) but no PID file exists"
            RETVAL="0"
        else
            echo "$0 is stopped"
        fi
    fi
    return $RETVAL
}

function stop() {
    local STOP_VERBOSE="false"
    echo -n "Stopping $TOMCAT_PROG: "
    if [ -f "/var/lock/subsys/${NAME}" ]; then
#        $SU - $TOMCAT_USER -c "$TOMCAT_SCRIPT stop" >> $TOMCAT_LOG 2>&1
        $SU - $TOMCAT_USER -c "/usr/local/tomcat/bin/shutdown.sh" >> $TOMCAT_LOG 2>&1
        RETVAL="$?"
        if [ "$RETVAL" -eq "0" ]; then
            count="0"
            if [ -f "/var/run/${NAME}.pid" ]; then
                read kpid < /var/run/${NAME}.pid
                until [ "$(ps --pid $kpid | grep -c $kpid)" -eq "0" ] || \
                      [ "$count" -gt "$SHUTDOWN_WAIT" ]; do
                    if [ "$STOP_VERBOSE" = "true" ]; then
                        echo -n -e "\nwaiting for processes $kpid to exit"
                    fi
                    sleep 1
                    let count="${count}+1"
                done
                if [ "$count" -gt "$SHUTDOWN_WAIT" ]; then
                    if [ "$STOP_VERBOSE" = "true" ]; then
                        echo -n -e "\nkilling processes which didn't stop"
                        echo -n -e "after "
                        echo -n "$SHUTDOWN_WAIT seconds"
                    fi
                    kill -9 $kpid
                fi
                echo_success
                if [ "$count" -gt "0" ]; then
                    echo -n -e "\n"
                fi
            fi
            rm -f /var/lock/subsys/$NAME /var/run/$NAME.pid
        else
            echo_failure
        fi
    fi
}


# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 2
        start
        ;;
    condrestart)
        if [ -f "/var/run/${NAME}.pid" ]; then
            stop
            start
        fi
        ;;
    status)
        status
        ;;
    *)
        echo "Usage: $TOMCAT_PROG {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $RETVAL

 作成したrcスクリプトに実行権限を付与します。

# chmod 755 tomcat6

 作成したrcスクリプトを登録します。 その後自動起動するよう設定します。

# chkconfig --add tomcat6
# chkconfig --list tomcat6
tomcat6         0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig tomcat6 on
# chkconfig --list tomcat6
tomcat6         0:off   1:off   2:on    3:on    4:on    5:on    6:off

設定

<準備中>

クライアント設定

インストール

<準備中>

設定

<準備中>

動作テスト

<準備中>

利用方法

<準備中>

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会

■■■ 当サイトは Internet Explorer 11 と Mozilla Firefox 43 で動作確認済みです。 ■■■