#contents
*daemontoolsを使うメリット [#tcc85d56]
-syslogと異なりログが確実に取れる 
-ログの容量を監視してくれる。ログのローテーションは日付ではなく、ある一定容量に達したかどうかによって行われる 
-サービスの追加・削除が簡単にできる。システム起動時に自動的に開始するか否かも簡単に指定できる 
-サービスを監視するためのロックファイルを作らなくて済む 
-デーモンのPIDを直接調べなくてもシグナルが送れる。daemontoolsを使って走らせた各デーモンはPIDではなく名前で指定でき、複数のデーモンにシグナルを送ることも可能 
-起動するデーモンごとにlimitがかけられる。これにより、メモリ使用量やユーザー権限を制限できる

参考 http://www.unixuser.org/%7Eeuske/doc/daemontools/myfaq/faq-1.html#3

*インストール [#febfdfad]
http://cr.yp.to/daemontools/install.html から daemontools-0.76.tar.gz をゲット

 # mkdir -p /package
 # chmod 755 /package
 # chmod +t /package
 # cd /package
 # tar xvpfz /usr/local/src/daemontools-0.76.tar.gz
 # cd admin/daemontools-0.76
 # ./package/install 
RedHat9でエラーが出る場合はパッチをあててみよう
http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/ これで以下のものができる
RedHat9でエラーが出る場合はパッチをあててみよう~
http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/~
これで以下のものができる

-新たに作成されるディレクトリ
-新たに作成されるディレクトリ~
/service~
/command

-作成されるファイルおよびそのシンボリックリンク
-作成されるファイルおよびそのシンボリックリンク~
/package/admin/daemontools/command/下に実行ファイル~
/command/下にそのシンボリックリンク~
/usr/local/bin/下にさらにシンボリックリンク

また、/etc/inittabファイルの末尾に次の1行が追加される

 SV:123456:respawn:/command/svscanboot 

*インストールの確認 [#b82a62e6]
 # ps ax | grep svscan
以下のように表示されればOK

 24886 ? S 0:00 /bin/sh /command/svscanboot
 24888 ? S 0:00 svscan /service
 24957 pts/2 S 0:00 grep svscan
日付処理の確認~
下のように左と右で同じならばOK

 # date | tai64n | tai64nlocal
 2002-07-05 11:44:24.382558500 2002年 7月 5日 金曜日 11:44:24 JST

 # date | sh -c 'multilog t e 2>&1' | tai64nlocal
 2002-07-05 11:44:37.138256500 2002年 7月 5日 金曜日 11:44:37 JST

*rcスクリプトの置き換え [#oc62af40]
新規にsuperviseでプロセスを起動したい場合、/serviceディレクトリにサブディレクトリを作りスティッキービットを立てる作業を瞬時に行なう必要があるので、まず/var/qmail/serviceで作業し、後から/serviceにシンボリックリンクを張ることにする

 # mkdir -p /var/qmail/services/qmail/log
 # chmod +t /var/qmail/services/qmail
runスクリプトを作成

 # vi /var/qmail/services/qmail/run

 #!/bin/sh
 PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
 exec /var/qmail/rc

 # vi /var/qmail/services/qmail/log/run

 #!/bin/sh
 exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
 exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s8000000 n50 /var/log/qmail
multilogのtオプションはTAI64N形式のタイムスタンプを付けるということデフォルトでは、ファイルサイズが99999bytesになるとファイルのローテーションを行い、最大ファイル数10以上になった場合は、古いものから削除される最大ファイルサイズ、最大ファイル保持数を変更するには次のように記述する

 exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t sサイズ nファイル数 /var/log/qmail
 (ファイルサイズは4096〜16777215の間で指定)

 # chmod +x /var/qmail/services/qmail/run
 # chmod +x /var/qmail/services/qmail/log/run
/var/qmail/rcの編集

 #!/bin/sh
 
 # Using splogger to send the log through syslog.
 # Using qmail-local to deliver messages to ~/Mailbox by default.
 
 exec env - PATH="/var/qmail/bin:$PATH" \
 qmail-start ./Maildir/ splogger qmail
&color(red){splogger qmail の部分を削除};

ログ出力先の作成

 # mkdir /var/log/qmail
 # chown qmaill:nofiles /var/log/qmail
 # chown qmaill.nofiles /var/log/qmail
 # chmod 700 /var/log/qmail

シンボリックリンクを張ってqmailの起動

 # /etc/rc.d/init.d/qmaild stop
 # ln -s /var/qmail/services/qmail /service/qmail

起動確認

 # svstat /service/qmail
 /service/qmail: up (pid 27228) 287 seconds
 # svstat /service/qmail/log
 /service/qmail/log: up (pid 25310) 769 seconds
uptimeが0や1を繰り返している場合は起動に失敗しているのでこれまでのことを見直して反省した後、修正する

*qmail-smtpdの置き換え [#v4e1b4d8]
 # mkdir -p /var/qmail/services/smtpd/log
 # chmod +t /var/qmail/services/smtpd
runスクリプトを作成

 # vi /var/qmail/services/smtpd/run

 #!/bin/sh
 PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
 tcpserver -H -R -v -u [qmaildのUID] -g [nofilesのGID] -x /etc/tcp.smtp.cdb \
0 smtp /var/qmail/bin/qmail-smtpd 2>&1
tcpserverのオプション参考サイト~http://www.emaillab.org/djb/tcpserver/options.html
 tcpserver -H -R -v -u qmaild -g nofiles -x /etc/tcp.smtp.cdb \
 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
tcpserverのオプション参考サイト~
http://www.emaillab.org/djb/tcpserver/options.html

 # vi /var/qmail/services/smtpd/log/run

 #!/bin/sh
 exec /usr/local/bin/setuidgid qmails /usr/local/bin/multilog t /var/log/smtpd
 exec /usr/local/bin/setuidgid qmails /usr/local/bin/multilog t s5000000 n20 /var/log/smtpd

 # chmod +x /var/qmail/services/smtpd/run
 # chmod +x /var/qmail/services/smtpd/log/run

ログ出力先の作成

 # mkdir /var/log/smtpd
 # chown qmails:nofiles /var/log/smtpd
 # chown qmails.nofiles /var/log/smtpd
 # chmod 700 /var/log/smtpd

シンボリック作成と起動確認

 # ln -s /var/qmail/services/smtpd /service/smtpd
 # svstat /service/smtpd/
 /service/smtpd/: up (pid 27345) 4 seconds
 # svstat /service/smtpd/log
 /service/smtpd/log: up (pid 27346) 8 seconds

*qmail-pop3dの置き換え [#ybfa68cd]
 # mkdir -p /var/qmail/services/pop3d/log
 # chmod +t /var/qmail/services/pop3d
runスクリプトを作成

 # vi /var/qmail/services/pop3d/run
qmail単体で使っている場合
 #!/bin/sh
 PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
 exec tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup [サーバのFQDN] \
/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1
 /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1

vpopmailを使っている場合
 #!/bin/sh
 PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
 exec tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup [サーバのFQDN] \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 
 /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 

 # vi /var/qmail/services/pop3d/log/run

 #!/bin/sh
 exec /usr/local/bin/setuidgid qmailp /usr/local/bin/multilog t /var/log/pop3d
 exec /usr/local/bin/setuidgid qmailp /usr/local/bin/multilog t s2000000 n20 /var/log/pop3d

 # chmod +x /var/qmail/services/pop3d/run
 # chmod +x /var/qmail/services/pop3d/log/run

ログ出力先の作成

 # mkdir /var/log/pop3d
 # chown qmailp:nofiles /var/log/pop3d
 # chown qmailp.nofiles /var/log/pop3d
 # chmod 700 /var/log/pop3d

シンボリック作成と起動確認

 # ln -s /var/qmail/services/pop3d /service/pop3d
 # svstat /service/pop3d
 /service/pop3d: up (pid 27404) 5 seconds
 # svstat /service/pop3d/log
 /service/pop3d/log: up (pid 27405) 10 seconds

*プロセスの停止と起動 [#u12ec1f0]
qmail-pop3dを停止する場合

 # svc -d /service/pop3d
 # svstat /service/pop3d
 /service/pop3d: down 2 seconds, normally up

qmail-pop3dを起動する場合

 # svc -u /service/pop3d
停止していてもサーバーを再起動させるとまた動いてしまうので、停止させておきたい場合はdownファイルを作成する

 # touch /service/pop3d/down
すでにプロセスが立ち上がっている場合はsvcコマンドで停止する必要がある

*プロセスの削除 [#vbd8ba02]
サブディレクトリを削除して再起動すればOKだが、そりゃできん!という場合は以下のようにする

サービスの停止

 # svc -d /service/pop3d/log
 # svc -d /service/pop3d
サービスのサブディレクトリの名前変更

 # mv /service/pop3d /service/.pop3d
superviseを終了させる

 # svc -x /service/.pop3d/log
 # svc -x /service/.pop3d
確認して以下のようなメッセージが出ればOK

 # svstat /service/.pop3d
 /service/.pop3d/log: supervise not running

*記録されたログの時間を読めるようにする [#a0c67f1a]
TAI64N形式で記録されているのでこれを変換する

 # tai64nlocal < TAI64N形式で記録されたログファイル
#exlink


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS