CentOS に Kestrel をインストールして試す 2

環境:CentOS5.5 64bit
kestrel:2.3.2-SNAPSHOT


前回はバイナリをダウンロードしてインストールしたが今回は sbt を使ってソースからビルドする。
java 6 と sbt 0.11.2 が必須。

また、kestrel のプロセスをデーモン化する。


robey/kestrel - GitHub
https://github.com/robey/kestrel

前準備

Java をインストールしておく。

# パスと JAVA_HOME の設定
export PATH=$PATH:/usr/local/java/bin
export JAVA_HOME=/usr/local/java

・git をインストールしておく。

sbt のインストール

sbt-launch.jar とそれを実行するスクリプトを用意する。


harrah/xsbt - GitHub
https://github.com/harrah/xsbt
simple build tool
http://www.scala-sbt.org/
SBTのセットアップ.md — Gist
https://gist.github.com/1139288


1. sbt-launch.jar をダウンロードして ~/bin に置く。
(kestrel のドキュメントで指定してある 0.11.2 をダウンロードすること。
上記 のサイトからのダウンロードは現在 0.11.3-2 にリンクが貼られているがこれを使ったら build に失敗した)

$ mkdir ~/bin
$ cd bin
$ wget http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-launch/0.11.2/sbt-launch.jar

2. jar を実行するコマンドを、sbt という名前のファイルに書いて ~/bin に置く。

$ vi ~/bin/sbt

java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@"

3. スクリプトを実行ファイルにする

$ chmod u+x ~/bin/sbt

4. sbt を実行してREPLを起動する

$ sbt

初回なのでいろいろ必要な jar のダウンロードが行われる。

kestrel のインストール

$ cd ~
$ git clone https://github.com/robey/kestrel.git
$ cd kestrel
$ sbt clean update package-dist

ビルドが終わると dist/kestrel にいろいろファイルができている。

$ ls -l dist/kestrel

config
kestrel_2.9.1-2.3.2-SNAPSHOT.jar
kestrel_2.9.1-2.3.2-SNAPSHOT-javadoc.jar
kestrel_2.9.1-2.3.2-SNAPSHOT-sources.jar
kestrel_2.9.1-2.3.2-SNAPSHOT-test.jar
libs
scripts

起動は dist/kestrel/scripts にある kestrel.sh から行うのだが
このファイルの中身を見ていると

APP_NAME="kestrel"
APP_HOME="/usr/local/$APP_NAME/current"

となっているのでこれに合わせて /usr/local/kestrel/current を作成してここにコピーする。

# mkdir -p /usr/local/kestrel/current
# cp -a ~/kestrel/dist/kestrel/* /usr/local/kestrel/current

pid ファイルの出力先ディレクトリを作成しておく。

# mkdir /var/run/kestrel

daemon のインストール

daemon
http://libslack.org/daemon/

# cd /usr/local/src
# wget http://libslack.org/daemon/download/daemon-0.6.4.tar.gz
# tar xvf daemon-0.6.4.tar.gz
# cd daemon-0.6.4
# ./configure && make && make install

/usr/local/bin/daemon が作成される。

kestrel の起動 / 停止

production モードの場合は kestrel.sh を使用。

kestrel の起動

# /usr/local/kestrel/current/scripts/kestrel.sh start
Starting kestrel... done.

kestrel の停止

# /usr/local/kestrel/current/scripts/kestrel.sh stop
Stopping kestrel... done.


development モードの場合は devel.sh を使用。

kestrel の起動

# /usr/local/kestrel/current/scripts/devel.sh
Starting kestrel in development mode...

development モードの起動スクリプト devel.sh ではデーモン化せず、jar を実行してるだけ。


追記:
snapshotではないkestrel 2.3.2以降のkestrel.shでは
daemonコマンドを使用するのではなくdisownコマンドを使ってデーモン化するにように変更された。