ここでは、qmailの作者であるD. J. Bernstein氏作のサービスの起動を行うツールのサービス起動方法について説明します。既にdaemontoolsのインストールが完了しているものとして説明しています。
ここでは、qmailの作者であるD. J. Bernstein氏作のサービスの起動を行うツールのサービス起動方法について説明します。既にdaemontoolsのインストールが完了しているものとして説明しています。
daemontoolsはすべてのデーモンが管理できるということではありません。
フォアグランドで動作するもののみで、apacheなど起動するとバックグラウンドに移行するデーモンについては管理する事ができません。
qmail,tcpserverといったD. J. Bernstein氏作したデーモンはフォアグランドで動作しますので、ここでは qmail(qmailで apop の実装) を例にとって説明します。
daemontoolsを常駐させるために/etc/inittabに以下の行を追加します。
SV:12345:respawn:/usr/local/bin/svscanboot
とします。
上記の意味はランレベル1,2,3,4,5でプロセスが終了した場合は常に再起動するという意味になります。本来、ランレベル6の記述も必要なようですが私の環境では再起動(init 6)をすると上記の規制に引っかかり正常に再起動できませんでしたのでランレベル6は外しました。
解決方法知っている方教えてください。(^^;
また、inittabを有効にするため以下のコマンドを実行します。
# kill -HUP 1
これは、inittabがプロセスIDが必ず1になっているのでそれを再起動という意味です。
大まかに手順としては以下の手順になります。
(1) /var/supervise/以下に動作させるサービスを管理するディレクトリを作成する
(2) /var/supervise/サービス名/以下に起動スクリプトをrunという名前で作成する
(3) /var/service/以下に作成した サービスを管理するディレクトリのシンボリックリンクを張る
それでは、実際にqmail(qmailで apop の実装)を例にとって説明します。
(1) qmailの設定
qmailのサービスを管理するディレクトリを作成を行います。
# mkdir /var/supervise/qmail
起動スクリプトをサービスディレクトリ以下に移動します。
# cp -p /var/qmail/rc /var/supervise/qmail/run
サービスディレクトリに対して、シンボリックリンクを作成します。
# ln -s /var/supervise/qmail /var/service/qmail
これで問題なければ、自動的にrunスクリプト実行され、qmailが起動します。svstatコマンドでサービスの起動状況を確認してください。
# svstat /var/service/qmail
/var/service/qmail: up (pid 6540) 24 seconds
と表示されれば問題ないでしょう。up時間が0や1秒でプロセスIDが変わる場合はスクリプトに誤りがある場合があります。再度runスクリプトの確認をしてください。
(2) smtpサーバの設定
smtpのサービスを管理するディレクトリを作成を行います。
# mkdir /var/supervise/smtp
起動スクリプト/var/supervise/smtp/runを以下の用に作成します。
daemontoolsで起動する際は&(バックグラウンド)の記述は外し、また|(パイプ)の処理も外す必要があります。
そのため、sploggerが利用できなくなるためログが取れなくなってしまいますがdaemontoolsにはログ機能もあります。
この機能については daemontoolsでログ管理(multilog) を参照下さい。
#!/bin/sh exec env - PATH="/var/qmail/bin:/usr/local/bin:/bin:/usr/bin" \ envdir /etc/relay-ctrl relay-ctrl-chdir \ tcpserver -v -x /etc/tcp.smtp.cdb -R -H \ -u `/usr/bin/id -u qmaild` -g `/usr/bin/id -g qmaild` \ 0 smtp relay-ctrl-check qmail-smtpd 2>&1
スクリプトに実行権を与えておきましょう。
# chmod 755 /var/supervise/smtp/run
サービスディレクトリに対して、シンボリックリンクを作成します。
# ln -s /var/supervise/smtp /var/service/smtp
これで問題なければ、自動的にrunスクリプト実行され、qmailが起動します。svstatコマンドでサービスの起動状況を確認してください。
# svstat /var/service/smtp
/var/service/smtp: up (pid 5534) 24 seconds
と表示されれば問題ないでしょう。up時間が0や1秒でプロセスIDが変わる場合はスクリプトに誤りがある場合があります。再度runスクリプトの確認をしてください。
(3) popサーバの設定
smtpのサービスを管理するディレクトリを作成を行います。
# mkdir /var/supervise/pop
起動スクリプト/var/supervise/pop/runを以下の用に作成します。
同じく&(バックグラウンド)の記述は外し、また|(パイプ)の処理も外す必要があります。
#!/bin/sh exec env - PATH="/var/qmail/bin:/usr/local/bin:/bin:/usr/bin" \ envdir /etc/relay-ctrl relay-ctrl-chdir \ tcpserver -v -R -H 0 pop3 qmail-popup \ `/bin/cat /var/qmail/control/me` /bin/selectcheckpw \ relay-ctrl-allow qmail-pop3d Maildir 2>&1
スクリプトに実行権を与えておきましょう。
# chmod 755 /var/supervise/pop/run
サービスディレクトリに対して、シンボリックリンクを作成します。
# ln -s /var/supervise/pop /var/service/pop
これで問題なければ、自動的にrunスクリプト実行され、qmailが起動します。svstatコマンドでサービスの起動状況を確認してください。
# svstat /var/service/pop
/var/service/pop: up (pid 7512) 28 seconds
と表示されれば問題ないでしょう。up時間が0や1秒でプロセスIDが変わる場合はスクリプトに誤りがある場合があります。再度runスクリプトの確認をしてください。
サービスの停止/起動はsvcコマンドを利用します。
(1) 停止方法
svc -d /var/service/停止したいサービスディレクトリ
# svc -d /var/service/qmail
(2) 起動方法
svc -u /var/service/起動したいサービスディレクトリ
# svc -u /var/service/qmail
指定するディレクトリ名にはワイルドカードなども指定できます。
また、再起動後は/var/service/以下にあるサービスについては起動しますのでdownというファイルを作成したり、シンボリックリンクを外すことで起動しなくも出来ます。
# touch /var/service/qmail/down
その他svcのオプションには以下のものがあります。参考までに
-u | サービスが動作していなければ起動し、サービスが終了したら再起動を実施 |
---|---|
-o | サービスが動作していなければサービス起動し、サービスが終了しても再起動はしない |
-x | サービスが終了したら、superviseも終了する |
-t | TERMシグナルでサービスを再起動する |
登録しているサービスの状況を調べるには前項目でも説明しましたがsvstatコマンドを利用します。
書式)
svstat サービスディレクトリ名
# svstat /var/service/pop
/var/service/pop: up (pid 7512) 28 seconds
サービスディレクトリにはワイルドカードも利用できます。
# svstat /var/service/*
/var/service/pop: up (pid 7512) 28 seconds
/var/service/qmail: up (pid 7553) 28 seconds
/var/service/smtp: up (pid 7124) 28 seconds
これでdaemontoolsでの起動方法の説明は終了です。
multilogを利用したログ採集方法は daemontoolsでログ管理(multilog) を参考下さい。
Q-Mail Oreilly & Associates Inc / John R. Levine, Russell Nelson ¥ 3,965 |
|
The Qmail Handbook Apress / Dave Sill ¥ 5,021 |
|
Running Qmail (Sams White Book Series) Sams / Richard Blum |