2013年2月10日日曜日

Scala + Sbtでデーモンを作る方法



サーバーで動作を行うデーモンを、Scalaで書きます。

なお、環境はRHEL系のLinuxで動作を確認しました。それ以外のOSの方は
適宜読み替えてください。

また、ビルドなどはsbtを利用するので、「始めるsbt」などを読んでおくと
いいと思います。

1.Scalaのコードを書く


1.1 参照の追加


sbtを使ってアプリを構成します。今回、ApacheCommonDaemonを利用するので、
build.sbtに次のように参照を追加します。



1.2 Scalaのコードを書く


Daemonインターフェースを継承したクラスを書きます。
今回は次のようにしました。

一応、例外を明示的に投げるように書いておいています。

1.3 実行可能ファイルを作る


sbt-assembkyを使って実行可能なjarファイルを用意しました。
sbt-assemblyについては、こちらの記事を参照してもらえると嬉しいです。

2. jsvcのセットアップ


2.1 ソースコードをダウンロードする

http://commons.apache.org/daemon/download_daemon.cgi

上記のURLから''native-src''をダウンロードします。

ビルド対象のコードはにあります。

2.2 ビルドに必要なライブラリ、ツール群をインストールする。


ApacheCommonDaemonのページによると次のツールが必要とのことです。
  • GNU AutoConf (at least version 2.53)
  • An ANSI-C compliant compiler (GCC is good)
  • GNU Make
  • A Java Platform 2 compliant SDK

yumなどを利用してインストールしましょう。

2.3 ビルド、インストールする



jsvc -help ができることを確認。

3. 起動する


起動スクリプトと終了のスクリプトを記述しました。
デーモンらしく,/etc/rc..d/init.d/以下に保存をすると
いいと思います。

4. 参考にしたWEBページなど

以下のページを参考にしました。
Play framework 2.0でデーモン化する方法
始めるSBT
SBTで実行可能なjarファイルを作る
Apche Commons Daemon