nginx,fastcgiをmonitで落ちないサーバにする



nginxはhttpサーバ本体でありCGIを動かすのはすべてfastcgiです。fastcgiのエンジンをデーモンで構えているとそれぞれのfastcgiサーバが落ちた時にwebサーバが生きていてもサービス提供不能となります。死活問題です。そのためにmonitで落ちないfastcgiサーバを構築します。環境はdebian5です。debian6でも大して変わらないはずです。

nginx x fastcgiサーバの構築方法は下記を参照ください。
http://d.hatena.ne.jp/Kmusiclife/20111107/1320678141
http://d.hatena.ne.jp/Kmusiclife/20111105/1320467309

1.monitインストール

# apt-get update
# apt-get upgrade
# apt-get install monit

2./etc/monit/monitrc, /etc/default/monitの編集

/etc/monit/monitrc excerpt(最低限の一行):

include /etc/monit/conf.d/*

/etc/default/monitの内容 startup=0からstartup=1にします

/etc/default/monit excerpt:

startup=1

3./etc/monit/conf.d の中に設定ファイルを作成

/etc/monit/conf.dが存在しない場合は作成してください。

# mkdir /etc/monit/conf.d
設定ファイル monitのnginx.confの作成:
# vim /etc/monit/conf.d/nginx.conf

/etc/monit/conf.d/nginx.conf excerpt:

check process nginx with pidfile /var/run/nginx.pid
start program = "/etc/init.d/nginx start"
stop  program = "/etc/init.d/nginx stop"
設定ファイルmonitのphp5-cgi.confの作成:
# vim /etc/monit/conf.d/php5-cgi.conf

/etc/monit/conf.d/php5-cgi.conf excerpt:

check process php5-cgi with pidfile /var/run/php5-cgi.pid
start program = "/etc/init.d/php-fastcgi start"
stop  program = "/etc/init.d/php-fastcgi stop
設定ファイルmonitのfcgiwrap.confの作成:

debian6などでfcgiwrapを利用している場合はfcgiwrapで設定

# vim /etc/monit/conf.d/fcgiwrap.conf

/etc/monit/conf.d/fcgiwrap.conf excerpt:

check process fcgiwrap with pidfile /var/run/fcgiwrap.pids
start program = "/etc/init.d/fcgiwrap start"
stop  program = "/etc/init.d/fcgiwrap stop"
設定ファイルmonitのfastcgi-wrapper.confの作成:

debian5などでfastcgi-wrapperを利用している場合はfastcgi-wrapperで設定

# vim /etc/monit/conf.d/fastcgi-wrapper.conf

/etc/monit/conf.d/fastcgi-wrapper.conf excerpt:

check process fcgiwrap with pidfile /var/run/fastcgi-wrapper.pid
start program = "/etc/init.d/fastcgi-wrapper start"
stop  program = "/etc/init.d/fastcgi-wrapper stop"
設定ファイルmonitのmysqld.confの作成:

mysqlもついでに

# vim /etc/monit/conf.d/mysqld.conf

/etc/monit/conf.d/mysqld.conf excerpt:

check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/init.d/mysql start"
stop  program = "/etc/init.d/mysql stop"


最後にmonitを起動します

# /etc/init.d/monit start