2012年9月26日星期三

CENTOS 安装tomcat(转)


概要

LinuxサーバへTomcat 7.xを導入し、自動起動するように設定する。
更新日:2012/07/12

環境

以下の環境・バージョンでインストールを行う。
LinuxCentOS 5.5 (64bit)
JavaJRE 1.7.0 update 5
Tomcat7.0.29
手順は次の通り。
  1. Java (JRE 1.7)のインストール
  2. Tomcat管理ユーザの作成
  3. Tomcatのインストール
  4. startup.sh/shutdown.shの書き換え
  5. 自動起動スクリプト /etc/init.d/tomcat の設置
  6. 起動確認

Java (JRE 1.7)のインストール

TomcatのWebページWhich version?で書かれている通り、Tomcat 7.0.xを動かすにはJavaのバージョンが1.6以上である必要がある。そのため、まずSunのページ……ではなくOracleのページからJavaをダウンロードしてインストールする。
Tomcatを動かすだけならばJRE(Javaランタイム環境)だけで良く、JDK(Java開発キット)は必要ない(もちろん、JDKで動かすこともできる)。Java SE Downloadsのページから、2012年7月11日現在でJava 1.7系列最新のJava SE 7u5(Version 7 Update 5)を入れることにする。
JREの"Download"をクリックするとダウンロードページに行くので、[Accept License Agreement]をクリックしてから、Linux x64のパッケージをダウンロードする。rpm版とtar.gz版があるが、tar.gz版にした。
持ってきたtar.gzを適当な場所で展開し、出てきた[jre1.7.0_05]フォルダを /usr/local にコピーしてシンボリックリンクを作っておく。
# tar xvzf jre-7u5-linux-x64.tar.gz
# mv jre1.7.0_05 /usr/local
# cd /usr/local
# ln -s jre1.7.0_05 java
これで、Javaが/usr/local/javaにインストールできた。

Tomcat管理ユーザの作成

Tomcatをroot権限で実行するのはよろしくないので、実行専用のユーザtomcatアカウントを作成する。ログインシェルに/sbin/nologinを指定して通常利用はできないようにしておく。
# useradd -s /sbin/nologin tomcat

Tomcatのインストール

Tomcatの公式ページよりパッケージをダウンロードする。ダウンロードページには色々あるのだが、[Core:]の中の[tar.gz]をダウンロードすれば良い。7.0.29ならばapache-tomcat-7.0.29.tar.gzというファイルになる。
ダウンロードしたtar.gzファイルを、/usr/localに展開する。展開後、ディレクトリのオーナーをtomcatユーザにしておき、tomcatという名前でシンボリックリンクを作成しておく。
# tar xvzf apache-tomcat-7.0.29.tar.gz
# mv apache-tomcat-7.0.29 /usr/local
# cd /usr/local
# chown tomcat:tomcat -R apache-tomcat-7.0.29
# ln -s apache-tomcat-7.0.29 tomcat
これで、Tomcatが/usr/local/tomcatにインストールできた。

startup.sh/shutdown.shの書き換え

JavaとTomcatをインストールしたので、環境変数JAVA_HOMEとCATALINA_HOMEを設定しておく。/etc/profileに書く人も多いが、私はTomcatのbinディレクトリ内にあるstartup.sh/shutdown.shの先頭に追加する形にしている。
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
この3行を、/usr/local/tomcat/bin/startup.sh, shutdown.sh のそれぞれ最初(#!/bin/sh の直後)に記述する。

自動起動スクリプト /etc/init.d/tomcat の設置

以下の内容で /etc/init.d/tomcat として設置する。設置後、chmod +xして実行権限を付けること。priority(35 65)は、サーバに合わせて適宜変えると良い。
#!/bin/bash
#
# Startup script for the Tomcat Servlet Container
#
# chkconfig: 2345 35 65
# description: Tomcat is the servlet container that is used in the official \
#              Reference Implementation for the Java Servlet and JavaServer \
#              Pages technologies

TOMCAT_USER=tomcat
CATALINA_HOME=/usr/local/tomcat

. /etc/rc.d/init.d/functions
prog=tomcat

start() {
    echo -n $"Starting $prog: "
    daemon --user $TOMCAT_USER $CATALINA_HOME/bin/startup.sh > /dev/null
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        echo_success
    else
        echo_failure
    fi
    echo
    [ $RETVAL = 0 ] && touch /var/lock/subsys/$prog
    return $RETVAL
}
stop() {
    echo -n $"Stopping $prog: "
    daemon --user $TOMCAT_USER $CATALINA_HOME/bin/shutdown.sh > /dev/null
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        echo_success
    else
        echo_failure
    fi
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/$prog
    return $RETVAL
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  status)
    INSTANCES=`ps --columns 512 -aef|grep java|grep tomcat|grep org.apache.catalina.startup.Bootstrap|wc -l`
    if [ $INSTANCES -eq 0 ]; then
        echo $prog is stopped
        RETVAL=3
    else
        if [ $INSTANCES -eq 1 ]; then
            echo $prog is running 1 instance...
        else
            echo $prog is running $INSTANCES instances...
        fi
        RETVAL=0
    fi
    ;;
  *)
    echo $"Usage: $prog {start|stop|restart|status|help}"
    exit 1
esac

exit $RETVAL
tomcat起動スクリプトファイルを/etc/init.dに設置したら、chkconfigコマンドで自動起動するように登録しておく。
# /sbin/chkconfig --add tomcat

自動起動スクリプトのチェック

設置できたら、rootになって実行してみる。
# cd /etc/init.d
# ./tomcat start
起動後、http://(サーバのIPアドレス):8080 にアクセスしてみて、Tomcatの起動画面を確認する。上手くいかなければ、/usr/local/tomcat/logs の中身を確認する。

その他備考

  • $CATALINA_BASE という環境変数を設定する人もいるが、これは1台のサーバで複数のTomcatを利用する場合に必要なもの。複数使わないなら設定の必要は無い。
  • Tomcatをデーモンとして実行するためには、Tomcatに付属しているjsvc toolというのを使う方法もある。しかし、これを使うには自分でビルドする必要があったり、/usr/lib/libcap.so が無いと言われたり色々ややこしかったので、使わない方針にした。

没有评论:

发表评论