Supervisorでnginxを管理してみる
daemontoolsを使っていますが、設定や導入の分かりやすさやからSupervisorを使いはじめています
インストールや細かい設定は省きますが、/etc/supervisord.confに外部設定ファイルを参照するようにしてデーモンを管理するのがいいようです。
[include] files = /etc/supervisord.d/*.conf
nginxを追加してみる
/etc/supervisord.d/nginx.confを新たに作成してSupervisor配下にいれます。
[program:nginx] command=//usr/sbin/nginx -c /etc/nginx/conf/nginx.conf process_name=%(program_name)s numprocs=1 stopsignal=QUIT
起動に成功するとsupervisorctlで確認することができます
$ supervisorctl status nginx RUNNING pid 11667, uptime 14:46:21
再起動もsupervisorctlで行います
$ supervisorctl restart nginx nginx: stopped nginx: started
nginxにHUPシグナルを送りたい
nginxはHUPを受信すると、設定ファイルを読み込んで、エラーがなければ 新しい設定ファイルを適用してくれる仕組みがあります。
新しい設定が適用されると新しいworker processが立ち上がり、古いworker processは緩やかにshutdown差し替わってくれるので、実際はこちらを使いたい場合が多いでしょう。
supervisorctlには特定配下のデーモンにHUPを送る仕組みはないようなので、直接HUPを送ることにします
$ supervisorctl status nginx | sed "s/.*[pid ]\([0-9]\+\)\,.*/\1/" | xargs kill -HUP
これで新しい設定を適用することができました
参考: http://webos-goodies.jp/archives/deploying_tornado_with_supervisord.html
久々の投稿、、、