http://quox.org/tips/server/daemontools.html が分かりやすい
-
yum repoにdamontools-toasterでRPMを置いてるので、それを入れる
-
以下のURLにinitスクリプトがあるので、これを利用する
-
http://www.emaillab.org/djb/daemontools/daemontools-howto.html#chap2sec2
wget http://www.emaillab.org/djb/daemontools/svscan
chmod +x svscan
sudo mv svscan /etc/init.d
sudo /sbin/chkconfig --add svscan
sudo /etc/init.d/svscan start
- 安定して稼働するのを確認したらchkconfigをonに
sudo /sbin/chkconfig svscan on
- serviceの制御コマンド
再起動(TERM)
sudo svc -t /service/{service}
HUP
sudo svc -h /service/{service}
止める
sudo svc -d /service/{service}
上げる
sudo svc -u /service/{service}
- サービスの状態を確認するコマンド
sudo svstat /service/{service}
run
#!/bin/sh
exec 2>&1
source /var/sites/lism.in/python/bin/activate
exec envdir /service/hello/env \
setuidgid ryo \
/var/sites/lism.in/python/bin/uwsgi -M --log-master -H /var/sites/lism.in/python --socket :3000 --file /var/sites/lism.in/hello.py --callable app --processes 4 --stats :1717
log/run
#!/bin/sh
exec /usr/bin/setuidgid ryo /usr/bin/multilog t s16777215 n100 ./main
ディレクトリ構成は以下のとおり。
- /service/foo/'''run''' : 起動スクリプト
- /service/foo/env : 環境変数ファイル用ディレクトリ
- /service/foo/log : multilog用ディレクトリ
- /service/foo/log/'''run''' : multilog起動スクリプト
- /service/foo/log/main : ログディレクトリ
1.監視対象外のディレクトリで作業 ※最初に隠しディレクトリとして作成すると監視対象からはずれる。
sudo mkdir -p /service/.foo/env
sudo mkdir -p /service/.foo/log/main
sudo touch /service/.foo/run
sudo touch /service/.foo/log/run
sudo chmod +x /service/.foo/run
sudo chmod +x /service/.foo/log/run
2.runスクリプトの編集
runとlog/runをそれぞれ編集。 内容は上記の「[wiki:tech/daemontools#daemontoolsuWSGI daemontools + uWSGI]」を参照。
3.監視対象下におく
sudo mv /service/.foo /service/foo
4.監視状態を以下で確認
sudo svstat /service/foo
uwsgiはTERMを送ってもまた立ち上がってくるため、 down → INT → exit → 隠しディレクトリ化 という手順を踏まなくてはいけない。
cd /service/foo
svc -d ./foo && svc -i ./foo && svc -x ./foo && mv ./foo .foo