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のソースが含まれている。
アーカイブを解凍して出来たディレクトリにはいり、
configureとmakeを実行すれば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でも問題なく動くことを確認していきたい。