主夫ときどきプログラマ

データベース、Webエンジニアリング、コミュニティ、etc

Tomcatのインストール方法 CentOs5

事前にjavaがインストールされているか確認しよう。
http://d.hatena.ne.jp/masayuki14/20100208

Tomcatをダウンロード

最新バージョンの6.0.20をダウンロード(2009年12月25日現在)
Binary Distributions, Core, tar.gz をダウンロードする。
http://tomcat.apache.org/download-60.cgi

インストールするLinuxマシンで直接ダウンロードする場合は、wget コマンドを使用する。
ファイルをダウンロードするフォルダに移動して、

# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz

--09:54:29--  http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
ftp.riken.jp をDNSに問いあわせています... 134.160.38.1
ftp.riken.jp|134.160.38.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 5998298 (5.7M) [application/x-gzip]
Saving to: `apache-tomcat-6.0.20.tar.gz'

100%[===============================================================================>] 5,998,298   2.56M/s   in 2.2s

09:54:31 (2.56 MB/s) - `apache-tomcat-6.0.20.tar.gz' を保存しました [5998298/5998298]

ダウンロードしたファイルを解凍する

# tar -xvf apache-tomcat-6.0.20.tar.gz

apache-tomcat-6.0.20」フォルダが作成される。

TOMCATをインストールする

RPMで管理されたパッケージではなく追加の独自コンポーネントなので、「/opt」以下に移動する。
/opt に移動するにはrootになっておく必要がある。

# su -
# mv apache-tomcat-6.0.20 /opt/tomcat6

公開サービスが乗っ取られたときに不用意に権限を与えて情報を漏らさないように専用ユーザーを用意して起動することがセキュリティ上望ましい。
Tomcatを起動するためだけの専用ユーザー「tomcat」を作成し、管理はそのユーザーに任せる。

# useradd -d /opt/tomcat6 -s /sbin/nologin tomcat 

useradd help.
-d home directory for the new user account
-s the login shell for the new user account

作成したtomcatユーザーでアプリケーションを起動できるようTomcatのインストールフォルダのPermissionを変更する。

# chown -R tomcat. /opt/tomcat6

※この時点でインストールはひとまず完了

Tomcat自動起動にする

インストールしたままのTomcatでは起動用のスクリプトが用意されていないので自作する必要がある。Tomcatに同梱されているApacheCommonsDeamonを使用して、Tomcatのデーモンを作成する。
(binフォルダのjsvc.tar.gzがそれ。)
※Commons Daemonをビルドするためには、サーバコンポーネントのビルド環境が必要となる。
 autoconf、makeなどのビルド用ツール(コマンド)を実行できる環境をあらかじめ用意しておく。

ApacheCommonsDeamonを取り出し、/tmpなどの作業用フォルダに移動(またはコピー)させる。

# mv -f /opt/tomcat6/bin/jsvc.tar.gz /tmp
# cp -f /opt/tomcat6/bin/jsvc.tar.gz /tmp

ファイルを移動したら、そこへ移動しファイルを解凍する。

# cd /tmp
# tar -xzf jsvc.tar.gz

解凍すると「jsvc-src」というフォルダが作成されるので、そこへ移動。
移動したら autoconf を利用して configure スクリプトを作成する。
その後 configure を実行する。

# cd jsvc-src
# autoconf
# sh configure

成功すると最後に以下のように表示される。

 *** All done ***
 Now you can issue "make"

※失敗するとerrorが表示される。今回は
configure: error: Java Home not defined. Rerun with --with-java=... parameter
が表示された。環境変数JAVA_HOME が設定されていないようなので設定する。
パスが表示されるか確認しよう。

# export JAVA_HOME=/usr/java/jdk1.6.0_16/
# echo $JAVA_HOME 

ビルドする。

# make

ビルド後には「jsvc」という実行ファイルが作成される。
作成されたjsvcのパーミッションtomcatに変更し、
Tomcatのインストールフォルダのbin直下に移動させる。

# chown tomcat. jsvc
# mv jsvc /opt/tomcat6/bin

作成に使用したファイル、フォルダは削除する。
※以降の自動起動スクリプトを作成し終えてからが望ましい。

# cd /tmp
# rm -rf jsvc-src/ jsvc.tar.gz

自動起動させるためのスクリプトを作成する

起動スクリプトは jsvc-src/native/Tomcat5.sh をベースに編集する。
作成した起動スクリプトは /etc/rc.d/init.d/ 配下に作成する。

# cp /tmp/jsvc-src/native/Tomcat5.sh /etc/rc.d/init.d/tomcat
# vi /etc/rc.d/init.d/tomcat

それぞれのフォルダ構成やパス構成を実際のものに合わせて編集する。

#!/bin/sh
#
# chkconfig: - 80 20
# description: tomcat

# Source function library.
. /etc/init.d/functions
umask 002

# Adapt the following lines to your configuration
JAVA_HOME=/usr/java/jdk1.6.0_13
CATALINA_HOME=/opt/tomcat6
CATALINA_BASE=/opt/tomcat6
TOMCAT_USER=tomcat
DAEMON=$CATALINA_HOME/bin/jsvc

# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/tomcat/tomcat.pid
LOCK_FILE=/var/lock/subsys/tomcat

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

start(){
    echo -n "Starting Tomcat:"

    $DAEMON \
    -pidfile $PID_FILE \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.io.tmpdir=$TMP_DIR \
    -wait 10 \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap

    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        touch $LOCK_FILE
    else
        echo_failure
    fi
    echo
}
stop(){
    echo -n "Shutting down Tomcat:"

    $DAEMON \
    -stop \
    -pidfile $PID_FILE \
    org.apache.catalina.startup.Bootstrap
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        rm -f $PID_FILE $LOCK_FILE
    else
        echo_failure
    fi
    echo
}

case "$1" in
  start)
    start
    ;;

  stop)
    stop
    ;;

  restart)
    stop
    start
    ;;

  status)
    status $DAEMON_HOME
    RETVAL=$?
    ;;

  *)
    echo "Usage tomcat.sh start/stop/restart/status"
    exit 1;;
esac


すでに運用している別のサーバーがあればそこからコピーするのもOK。
スクリプトの作成が終了したら、実行権限を与える。

# chmod +x /etc/rc.d/init.d/tomcat
# chmod 755 /etc/rc.d/init.d/tomcat

最後にchkconfigを実行して起動時のON/OFF設定を行って終了。
この設定は3行目の記述がないとエラーとなる。

# chkconfig tomcat on

手動でTOMCATを実行する場合は

# /sbin/service tomcat start
# /etd/init.d/tomcat start


おしまい。

追記

Tomcat.6.0.32 をインストールする機会がありましたが、Tomcatデーモンをコンパイルするフォルダがかわっていました。
jsvc.tar.gz ではなくcommons-daemon-native.tar.gzを解凍してunixディレクリに移動してから同様にコンパイルしてください。


起動できない場合の対処方法。

failed setting default capabilities.
set_caps(CAPS) failed for user 'tomcat'
Service exit with a return value of 4

catalina.outにこの様なメッセージが吐かれているときは以下のコマンドを実行して対処しましょう。

$ modprobe capability

http://commons.apache.org/daemon/faq.html