2013年1月28日月曜日

CentOSにおけるjettyのdaemon化

以前のエントリ(CentOSにjettyを導入する)
の続き.

参考にしたサイトは
nobukatsu.jp#jettyのデーモン化
VINELINUX#chkconfigコマンドによる自動起動の設定
UNIX LINUX コマンド・シェルスクリプト リファレンス#if文とtestコマンド

では,早速

 /etc/init.d/以下にjettyファイルを作成する
$ sudo vim /etc/init.d/jetty
作成するファイルは以下の通り
↑のファイルの/usr/local/jettyの部分は自分の環境に合わせる.

 /etc/init.d/jettyに実行権限追加
$ sudo chmod 755 /etc/init.d/jetty
$ ls -l /etc/init.d/jetty
-rwxr-xr-x XXX XXXX XXXX 日付とか /etc/init.d/jetty
nobukatsu.jp#jettyのデーモン化 で紹介されているのと違う点は,bashコマンドが使えない環境でも,daemonが動く,という点.

作成したjettyファイル内の
if [ -z `/usr/bin/pgrep -f "java -jar start.jar"` ];
の部分だが,このバッククォート「`」でくくられている部分を,
if [ -z $(/usr/bin/pgrep -f "java -jar start.jar") ];
のように書くと,bashコマンドがデフォルトで使えないようなSolarisでは動かないという指摘を先輩エンジニアから受けました.
 bashコマンドがないような環境を使用しない人にとってはあまり関係のない話です.今回は古の技術を尊重してやってみました.

 ちなみに,Centでshとbashの関係を調べてみると,
$ ls -alF /bin/sh
/bin/sh -> bash*
という風になっていて,shにはbashのシンボリックが貼られていることがわかる.
ついでにMacOS Xでは
$ ls -alF /bin/sh
/bin/sh*
$ ls -alF /bin/bash
/bin/bash*
てな感じです.微妙に違う…
で,ちょっと脱線しましたが最後にデーモンを動かしてみる.

 daemonを動かす
$ sudo service jetty start

CentOSにjettyを導入する


前提

・CentOSにjdkが入っている
・sudoコマンドが使える

install jetty

 eclipse.orgからjettyをインストール
$ cd ~
$ mkdir workspace
$ cd workspace
$ wget http://download.eclipse.org/jetty/stable-8/dist/jetty-distribution-8.1.8.v20121106.tar.gz
--日付--  http://download.eclipse.org/jetty/stable-8/dist/jetty-distribution-8.1.8.v20121106.tar.gz

いろいろメッセージが表示される

`jetty-distribution-8.1.8.v20121106.tar.gz' に保存中

100%[======================================>] 9,064,609    615K/s 時間 18s     

日付 (494 KB/s) - `jetty-distribution-8.1.8.v20121106.tar.gz' へ保存完了 [9064609/9064609]
 tar展開
$ tar xvzf ./jetty-distribution-8.1.8.v20121106.tar.gz
 jettyを/usr/local/に移動
$ sudo mv ./jetty-distribution-8.1.8.v20121106 /usr/local/jetty-distribution-8.1.8.v20121106

$ cd /usr/local/
$ ls -a
.
..
jetty-distribution-8.1.8.v20121106
 シンボリック作成
$ sudo ln -s /usr/local/jetty-distribution-8.1.8.v20121106/ /usr/local/jetty8
$ ls -a
.
..
jetty8
jetty-distribution-8.1.8.v20121106
 8080port開放
$ sudo vim /etc/sysconfig/iptables
以下を追加
# added begin
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
# added end
 jetty起動
$ cd /usr/local/jetty8/
$ java -jar start.jar
 起動確認
http://ホストネーム:8080
にアクセスして,jettyのページが表示されればおk.

 強制停止
$ sudo kill -9 `pgrep -f "java -jar start.jar"`

あとはApacheの連携とか,daemon化とか…