monoの開発ブログ

daemontoolsでNginx/MySQL/Squidなどを監視

Debian系のOSでaptを利用してNginx/MySQL/Squidなどをインストールした場合、通常はinit.dで起動するように設定されます。しかし、ここでは死活監視を行ってくれる便利なdaemontoolsで起動するように設定してみます。

設定のポイント

daemontoolsでプロセスを監視するときのポイントは、プロセスをフォアグラウンドで動作させることです。デーモンとして動作させてしまうと、対象のプロセスが監視を行っているsvscanから切り離されてしまい、正しく動作しなくなってしまいます。

今回設定を行ったソフトウェアにあるように、大抵のソフトウェアにはデーモン化せずに起動するオプションや設定が用意されているので、それを利用すればOKです。

自作プログラムの場合は、特に深く考えず無限ループになるようなコードを書けばフォアグラウンドで動作していることになります。

Nginxの設定

sudo /etc/init.d/nginx stopsudo update-rc.d -f nginx removecd /etc/servicesudo mkdir nginxcd nginxsudo vi runsudo chmod +x run

/etc/service/nginx/run

daemonディレクティブでoffを指定することで、Squidをフォアグラウンドで動作させています。

#!/bin/shexec 2>&1exec /usr/sbin/nginx -c /etc/nginx/nginx.conf -g 'daemon off;'

MySQLの設定

MySQLはデフォルトでmysqld_safeが監視を行っているため、特にdaemontoolsで監視する必要はないそうです。

sudo /etc/init.d/mysql stopsudo update-rc.d -f mysql removecd /etc/servicesudo mkdir mysqlcd mysqlsudo vi runsudo chmod +x run

/etc/service/mysql/run

#!/bin/shexec 2>&1exec /usr/sbin/mysqld --skip-locking --user=mysql

Squidの設定

sudo /etc/init.d/squid stopsudo update-rc.d -f squid removecd /etc/servicesudo mkdir squidcd squidsudo vi runsudo chmod +x run

/etc/service/squid/run

-Nオプションを指定することで、Nginxをフォアグラウンドで動作させています。

#!/bin/shexec 2>&1exec /usr/sbin/squid -DYN -f /etc/squid/squid.conf

参考

追記

2010/07/23
mysqld_safeについて追記