CentOS(6.4) に daemontools をインストールした

PSGI なアプリを運用するにあたり、落ちた時に自動起動して欲しいなと思うわけです。そこで daemontools を導入しようと考えている。runit や monit 等同様なツールもあるわけだけど、 ネットで調べる限りだと daemontools での運用実績はかなり多そうなので良さそうかと思ったのだ。

インストール手順

何はともあれインストールしないと始まらないし、さくっとインストールしてみる。
パッチを当てないとコンパイルに失敗するので、併せてダウンロードしておこう。

本体&パッチのダウンロード

% wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
% tar xpvf daemontools-0.76.tar.gz
% cd admin/daemontools-0.76
% wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch

パッチ適用&コンパイル

% patch -s -p1 <./daemontools-0.76.errno.patch
% ./package/compile

このままインストールすると /command にシンボリックリンクが張られて、そこからさらに /usr/local/bin にシンボリックが張られるのだが、気持ち悪いし直接 /usr/local/bin にインストールする。

svscanboot の設定に /command の記述があるので、/usr/local/bin に修正しておこう。他のファイルも同様に修正しておくとよい。

% cd command/
% sudo install -o root -g root -m 0755 -s envdir /usr/local/bin
% sudo install -o root -g root -m 0755 -s envuidgid /usr/local/bin
% sudo install -o root -g root -m 0755 -s fghack /usr/local/bin
% sudo install -o root -g root -m 0755 -s multilog /usr/local/bin
% sudo install -o root -g root -m 0755 -s pgrphack /usr/local/bin
% sudo install -o root -g root -m 0755 -s readproctitle /usr/local/bin
% sudo install -o root -g root -m 0755 -s setlock /usr/local/bin
% sudo install -o root -g root -m 0755 -s setuidgid /usr/local/bin
% sudo install -o root -g root -m 0755 -s softlimit /usr/local/bin
% sudo install -o root -g root -m 0755 -s supervise /usr/local/bin
% sudo install -o root -g root -m 0755 -s svc /usr/local/bin
% sudo install -o root -g root -m 0755 -s svok /usr/local/bin
% sudo install -o root -g root -m 0755 -s svscan /usr/local/bin
% sudo install -o root -g root -m 0755 -s svstat /usr/local/bin
% sudo install -o root -g root -m 0755 -s tai64n /usr/local/bin
% sudo install -o root -g root -m 0755 -s tai64nlocal /usr/local/bin
% sudo install -o root -g root -m 0755 svscanboot /usr/local/bin

/service ディレクトリを作成する。

% sudo ./package/run

Upstart の設定をする。

% sudo vim /etc/init/svscan.conf
start on runlevel [12345]
respawn
exec /usr/local/bin/svscanboot

起動する

% sudo initctl reload-configuration
% sudo initctl list
% sudo initctl start svscan

これで daemontools が使用できるようになった。
と、daemontools のインストールをしておいてなんだが、supervisor を使ってみたいと今思ってる。