|
|
||
nginxの挙動は通常のデーモンと違うのでexpect daemon/forkは使えない。なので、foregroundに残すオプションで走らせて、プロセス管理はupstartに任せるしかない。
参照 http://serverfault.com/a/143650
description "nginx" start on filesystem respawn pre-start script test -x /usr/local/nginx/sbin/nginx || { stop; exit 0; } end script # nginxの挙動は通常のデーモンと違うのでexpect daemon/forkは使えない。 # なので、foregroundに残すオプションで走らせて、プロセス管理はupstartに任せるしかない。 # 参照 http://serverfault.com/a/143650 exec /usr/local/nginx/sbin/nginx -g "daemon off;"
$ sudo status nginx nginx start/running, process 13171 $ sudo stop nginx nginx stop/waiting $ sudo status nginx nginx stop/waiting $ sudo start nginx nginx start/running, process 13338 $ sudo status nginx nginx start/running, process 13338
$ sudo kill 13338 $ sudo status nginx nginx start/running, process 13347
Debianを含む多くのLinuxディストロは/etc/init.d/にスクリプトを入れてデーモンを管理するSysV風のサービス管理系を使ってきた。SysVスクリプトは一般的にpidファイルによりプロセスを管理する。往々にプロセスが死んでこのファイルが残り、削除してから起動するような面倒なことになる。つまりPIDファイルによるプロセス管理は信頼性に欠ける。
Debianはinitプロセスが直接デーモンをフォークし、プロセスの親子関係でモニタリングする(んだと思う)upstart(init)というシステムを提供するようになった。PIDファイルではなく、カーネル内で管理されるプロセス系統で監視するからデーモンの安否が確実に把握できる。
DebianはSysVからupstartに移行する途中なのだろうか? 著者のmaverick(Ubuntu 10.10)は両方にスクリプトが入っている。
$ ls /etc/init |wc -l 68 $ ls /etc/init.d/ |wc -l 88
その辺が気になるが、PIDファイルが居座るなどのトラブルがなく、コケても確実に再サタートしてくれるので、debianパッケージが管理していない独自のサービスはupstartで管理するようにしている。