menu
書いてる野郎
orebike@gmail.com
Tomcatを駆動するためのJREをインストールする。JREのOpen版の実装が入っている場合は入れる前にアンインストールしておく。 今回インストールするのはSun版(Java7 以降ならばOracle版はOpen版を元に作られているので互換性で問題になることは少ない)
ここから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が必要になるのでインストール。
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
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実行専用ユーザーを作る
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/default | JREを設置しているパス |
CATALINA_HOME | /usr/local/tomcat | Tomcatの本体が置いてある場所 |
DAEMON_HOME | /usr/local/tomcat/bin | jsvcが置いてあるディレクトリ さっきコピーしたからね |
TOMCAT_USER | tomcat | 実行するユーザー名 作ったやつ |
CATALINA_BASE | /usr/local/tomcat | 起動に必要なconf(server.xmlとか)とwebappが配置されているディレクトリ。今は本体位置と設定位置が一致しているのでCATALINA_HOMEと同じ値になっている |
PID_FILE | /var/run/tomcat.pid | 起動時にプロセスIDを記録しておくファイル |
CATALINA_OPTS | なし | 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本体ディレクトリを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番台に書き換える
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