Tomcat/インストール(Linux編)

Tomcat/インストール(Linux編)

バージョンと製造年月日

  • 2011-12-12
  • Java1.6
  • Tomcat6.0
  • CentOS5.6 64bit

インストールの流れ

  • Sun版JRE、JDKのダウンロード
  • JRE、JDKのインストール
  • Tomcatのダウンロード
  • Tomcatのインストール
  • デーモン化ツールのビルド
  • 起動スクリプトの作成

JREのインストール

Tomcatを駆動するためのJREをインストールする。JREのOpen版の実装が入っている場合は入れる前にアンインストールしておく。 今回インストールするのはSun版(Java7 以降ならばOracle版はOpen版を元に作られているので互換性で問題になることは少ない)

ダウンロードとrpm実行

ここからrpm版をダウンロード。

http://www.java.com/ja/download/linux_manual.jsp

実行権限を付けて実行。自己解凍されてrpmが自動実行。

chmod +x jre-6u29-linux-x64-rpm.bin
./jre-6u29-linux-x64-rpm.bin

ここらへんにインストールされる

/usr/java/default

確認

java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)

クラスパスの設定

環境変数をセット。サーバ全体的にセットしたいので

/etc/profile

に設定を書きこむ

JAVA_HOME=/usr/java/default
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

を追記する

JDKのインストール

デーモン化ツールのビルドにJDKが必要になるのでインストール。

Linux 64bit rpm版をダウンロード

http://www.oracle.com/technetwork/java/javase/downloads/index.html

実行権限をつけて実行。自己解凍されてrpmが自動実行。

chmod +x jdk-6u29-linux-amd64.rpm
./jdk-6u29-linux-amd64.rpm

Tomcatのインストール

ダウンロードと設置

Apacheの本家http://tomcat.apache.org/download-60.cgiからTomcat6の本体を取ってくる

解凍

tar xvzf apache-tomcat-6.0.35.tar.gz 

/usr/local以下に設置することにする。

cp -a apache-tomcat-6.0.35 /usr/local/

シンボリックリンクを作っておく

ln -s apache-tomcat-6.0.35/ tomcat

Tomcat実行ユーザーの作成

シェルを奪ってログインを禁止のtomcat実行専用ユーザーを作る

useradd -s /sbin/nologin tomcat

さっき設置したTomcatの本体をTomcat実行ユーザーのものにする

chown tomcat -R /usr/local/tomcat/

デーモン化ツールのビルド

Tomcatをデーモンとして動かす。そのためにjsvcというツールを使う。まずこいつをビルドする。

jsvcのソース一式はTomcatに同梱されているcommons-daemon-native.tar.gzに格納されている。commons-daemon-native.tar.gzは・・・

/usr/local/tomcat/bin

・・・ディレクトリにある

解凍

tar xvzf commons-daemon-native.tar.gz 

Unix向けとWindows向けがあるみたいなのだが、今回はLinuxなのでのでunixを使う

cd /usr/local/tomcat/bin/commons-daemon-1.0.7-native-src/unix/

ビルド!

./support/buildconf.sh
./configure
make

jsvcというバイナリができていればOKこいつがTomcatデーモン化ツールの本体

binに移動しておく

cp jsvc /usr/local/tomcat/bin/

起動スクリプトの作成

Tomcatデーモン起動のための起動スクリプトを作る。

jsvcにサンプルの起動スクリプトがくっついてくるので流用する。

/usr/local/apache-tomcat-6.0.35/bin/commons-daemon-1.0.7-native-src/unix/samples/Tomcat5.sh

環境変数を自分の環境に合わせる

変数設定値memo
JAVA_HOME/usr/java/defaultJREを設置しているパス
CATALINA_HOME/usr/local/tomcatTomcatの本体が置いてある場所
DAEMON_HOME/usr/local/tomcat/binjsvcが置いてあるディレクトリ さっきコピーしたからね
TOMCAT_USERtomcat実行するユーザー名 作ったやつ
CATALINA_BASE/usr/local/tomcat起動に必要なconf(server.xmlとか)とwebappが配置されているディレクトリ。今は本体位置と設定位置が一致しているのでCATALINA_HOMEと同じ値になっている
PID_FILE/var/run/tomcat.pid起動時にプロセスIDを記録しておくファイル
CATALINA_OPTSなしTomcat起動時に渡すオプション。メモリの量とか設定したいならどうぞ
tomcat
#!/bin/sh
 
JAVA_HOME=/usr/java/default
CATALINA_HOME=/usr/local/tomcat
DAEMON_HOME=/usr/local/tomcat/bin
TOMCAT_USER=tomcat
 
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/tomcat.pid
CATALINA_BASE=/usr/local/tomcat
 
#CATALINA_OPTS="-Djava.library.path=/home/jfclere/jakarta-tomcat-connectors/jni/native/.libs"
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
 
case "$1" in
  start)
    #
    # Start Tomcat
    #
    $DAEMON_HOME/jsvc $JSVC_OPTS \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.io.tmpdir=$TMP_DIR \
    -wait 10 \
    -pidfile $PID_FILE \
    -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 \
    exit $?
    ;;
 
  stop)
    #
    # Stop Tomcat
    #
    $DAEMON_HOME/jsvc $JSVC_OPTS \
    -stop \
    -pidfile $PID_FILE \
    org.apache.catalina.startup.Bootstrap
    exit $?
    ;;
 
  *)
    echo "Usage tomcat.sh start/stop"
    exit 1;;
esac

・・・この起動スクリプト置き場に

/etc/init.d/tomcat

として設置

実行権限をつける

chmod +x /etc/init.d/tomcat

ちなみにこのスクリプトを起動して権限の受け渡しまでの過程でroot権限が必要になる。

確認

起動

/etc/init.d/tomcat start

ブラウザから確認・・・

http://hogehogehoge.com:8080

・・・でTomcatの画面が出ればOK

/var/run

以下に起動しているプロセスIDがtomcat.pidとして存在している。これもOK

プロセスを実際調べてみる

ps aux|grep tomcat

そうするとrootとtomcatユーザーの2個ある。デーモン起動されるとrootユーザープロセスの子プロセスとしてTomcatが動くらしくこれでOKらしい。

停止

/etc/init.d/tomcat stop

OK

おまけ

複数Tomcatデーモン同時起動

インストールしたTomcatデーモンをを複数同時に起動するやりかた。

2個目の設定ファイルとディレクトリ構成のコピー

インストールしたTomcat本体ディレクトリをtomcat2としてコピー

cp -a /usr/local/tomcat /usr/local/tomcat2

これは単に同じディレクトリ構成と設定ファイルが欲しいだけで、Tomcat本体を使うわけではない。

設定の書き換え

Tomcatの起動設定の根っこはserver.xmlにあるのでここのポート設定が1個目とかぶらない用にズラす

2個目のtomcatの設定を書き換える・・・

vi /usr/local/tomcat2/conf/server.xml

わかりやすいようにポート番号の8000番台を全部9000番台に書き換える

2個目のtomcatの起動スクリプトの用意

1個目のtomcatの起動スクリプトをコピーする

cp /etc/init.d/tomcat /etc/init.d/tomcat2

スクリプトを書き換えて一部のパラメータを2個目のtomcatのものに合わせる

vi /etc/init.d/tomcat2
変数設定値
CATALINA_BASE/usr/local/tomcat2
PID_FILE/var/run/tomcat2.pid

ここでのポイントはCATALINA_HOMEは一緒でCATALINA_BASEは2個目のものになっているという点。 本体のバイナリは共通のものを使い、設定は2個目のものを使うという構成にしている。

なので

/etc/init.d/tomcat2/webapps

以下にwarを置けばそっちはそっちで展開される。

起動

/etc/init.d/tomcat start
/etc/init.d/tomcat2 start

確認

http://hogehoge.com:8080
http://hogehoge.com:9080

別々にアクセスできればOK

タグ

tomcat/install_on_linux.txt · 最終更新: 2014-12-01 16:10 by ore