debianにtomcat8をセットアップ

debian(wheezy)tomcat8をインストールしたときのメモ

必要なアーカイブをダウンロード

JDK1.8

ORACLEのページに行ってJDKをダウンロードしてくる。
今回落としてきたのは、"jdk-8u31-linux-x64.gz“、任意のディレクトリで解凍する。
なお、拡張子は"gz"だが、gunzipで解凍してもうまく行かないのでtarを使う。

$ tar zxf jdk-8u31-linux-x64.gz

Tomcat8

tomcat公式ページからtomcat8のアーカイブをダウンロードしてくる。
落としてきたアーカイブは任意のディレクトリで解凍する

$ tar zxf apache-tomcat-8.0.18.tar.gz

環境構築

以上で必要なものは揃ったので環境を作る。
自分は以下のようにtomcatとjavaのシンボリックリンクを作成して、
リンクを変えるだけでバージョンを変更できるようにしている

/usr/local/
jdk1.8.0_31
java -> jdk1.8.0_31
apache-tomcat-8.0.18
tomcat -> apache-tomcat-8.0.18

配置が完了したらJAVAへのパスを通す。
とりあえずログインユーザーの.bashrcの最後に以下を追記すればOK

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

編集後には忘れずにsourceを実行して設定の反映

$ source ~/.bashrc

tomcatのデーモン化

tomcatをデーモンで動かすためにjsvcを自分でビルドする必要がある。
jsvcのソースコードは落としてきたアーカイブに含まれている。
なお、ビルドにはgccが必要なので事前にインストールしておく。

# cd /usr/local/tomcat/bin
# tar zxf commons-daemon-native.tar.gz
# cd commons-daemon-1.0.15-native-src/unix
# ./configure
〜〜〜
# make
# mv jsvc /usr/local/tomcat/bin/jsvc

bin/commons-daemon-native.tar.gzにjsvcのソースが含まれている。
アーカイブを解凍して出来たディレクトリにはいり、
configuremakeを実行すればjsvcがビルドされる。
最後にjsvcをパスの通ってるディレクトリ(/usr/local/tomcat/bin)に設置する。

次にjsvcを動かす際の設定を行なう。
設定は/usr/local/tomcat/bin/にsetenv.shを保存して、
必要な変数に値を入力するとデーモン起動時に読込まれる。
なお、setenv.shはただのシェルスクリプトなので実行権限を忘れずに付けること。

#!/bin/sh

export TOMCAT_USER=www-data
export JAVA_HOME=/usr/local/java
export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"
export CATALINA_OPTS="-Xms256m -Xmx512m -XX:PermSize=256M -XX:MaxPermSize=512m $_JAVA_OPTIONS"

以上の設定では、tomcatデーモンをwww-dataユーザーで動かすようにしている。
この場合/usr/local/tomcat以下のオーナーを全てwww-dataに変更しておくなどして、
www-dataユーザーにアクセス権を与えておかないとtomcatは正常に稼働しない。

また最後の行のCATALINA_OPTSはtomcatで使用されるメモリの設定になる。
実行環境に合わせて適切な値に変更すること。

デーモン起動

以上の設定が完了したらbin/daemon.shをstartオプションで実行する

# cd /usr/local/tomcat/bin
# ./daemon.sh start
# ps axu | grep jsvc
root 2726 0.0 0.0 16756 408 ? Ss 10:58 0:00 jsvc.exec (長いので省略)org.apache.catalina.startup.Bootstrap
www-data 2727 49.6 16.8 2059804 173040 ? Sl 10:58 0:12 jsvc.exec (長いので省略)org.apache.catalina.startup.Bootstrap

以上でtomcatがデーモンとして稼働する。
psコマンドで実行ユーザーもwww-dataになっていることが確認できる。
デーモンの停止は"daemon.sh stop“。

なお、debianユーザーならdaemon.shを/etc/init.dの下において運用したいと思う。
その際は環境変数"CATALINA_HOME“にtomcatの場所を指定しておく必要がある。
daemon.shの最初の箇所に入力しておくのが無難だろう

#!/bin/sh
CATALINA_HOME=/usr/local/tomcat
〜〜〜

まとめ

debianではaptコマンドでパッケージ管理が行なえるのだが、
それだと意図したバージョンが手に入らなかったり、
ついaptコマンドでupdateをかました結果、
意図しないバージョンアップがされてしまう可能性がある。
それらを避けるために、
java関係に関しては上記のような明示的なバージョン管理をする運用をしていたりする。

実は、恥ずかしながら業務でtomcat8をまだ使ったことがなかった。
しかしインストール&稼働は今までの知識で問題なく行なえた。
(ちなみに実運用ではtomcat6で凌いできていた)
今後はSAstrutsで作ったアプリをtomcat8でも問題なく動くことを確認していきたい。