以下Ubuntuの場合。
CentOSの場合は、こちら。
インストール
$ sudo apt-get install daemontools daemontools-run svtools
$ sudo reboot # svscanを起動するため再起動
設定
/service以下にプロジェクトと同じ名前のディレクトリを作成。
(logをとる場合、一旦 .pj名のようにドットを入れておいて、daemontoolsに認識されないようにしておいてlog/runも準備してから、renameする。このタイミングでしかsuperviseを作ってくれないみたい。)
しかしubuntuは/etc/service/だった。
/etc/service/サービス名/runを作成。このrunはプロジェクトの中に書いておいて、それのシンボリックリンクにする。
log設定
以下を作成。
/etc/service/サービス名/log/run
/etc/service/サービス名/log/main/
runの中身は、
#!/bin/sh
exec setuidgid logadmin multilog t s1000000 n100 ./main
ユーザも作成しておく。
sudo /usr/sbin/useradd -s /sbin/nologin -d /dev/null logadmin
あとは各ディレクトリの権限をlogadminが書き込めるようにしておく。
以下でログ監視。
tail -f /etc/service/PJ_name/log/main/current | tai64nlocal
動作確認
ps auxf で見てみる。
readproctitle service errors: ...ile does not exist?supervise: fatal
エラーでてるけど、正常に動く、、、はて。
killしてみて、異なるPIDで復活してたので、OK。
追記
http://tech.dclog.jp/2010/12/daemontools.htmlによると、
readproctitleは一度エラーメッセージを出すと、ずっと残るようだ。
メッセージクリア用のコマンドを用意して、消したいときに消せるようにする。
/service/clearmsg/run
#! /bin/bash
yes '' | head -4000 | tr '\n' .
touch /service/clearmsg/down #普段は実行させない
svc -o /service/clearmsg #一度だけ実行
0 件のコメント:
コメントを投稿