6

nginxとphp5-fpmを実行しているubuntu 12.04error_log = /var/log/php5-fpm.logでアンダーを有効にしました。/etc/php5/fpm/php-fpm.conf

しかし、php5-fpm.log が logrotate していないことに気付きました。インターネットから見つけた構成の一部を理解しようとしましたが、実稼働サーバーでテストするのは気が進まない.

ここに私が見つけた設定のいくつかがあります:

/var/log/php5-fpm.log {
    rotate 12
    weekly
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        invoke-rc.d php5-fpm reopen-logs > /dev/null
    endscript
}

これは構成のリンクです。私が理解しているように、必要なのはphp5-fpmunderというファイルを作成する/etc/logrotate.d/ことだけなので/etc/logrotate.d/php5-fpm、上記のコードのようになります。

このリンクから、次のコードを含む別のサンプルも見つけました。

    /var/log/php5-fpm.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
            [ ! -f /var/run/php5-fpm.pid ] || kill -USR1 `cat /var/run/php5-fpm.pid`
        endscript
    }

私は logrotate 構成に慣れていないので、これから行うことが正しいことを確認したいと思います。

では、2 つの構成のうちどちらが正しいのでしょうか。一枚目か二枚目?/etc/logrotate.d/php5-fpmでのみファイルを作成し、そこにコードを配置するのは正しいですか?

これが初心者の質問である場合は申し訳ありませんが、これを行う方法に関する完全な説明が見つかりません。

4

1 に答える 1

6

Google経由で来る他の人のために明確にするために:

1)

invoke-rc.d php5-fpm reopen-logs > /dev/null

これは、ディストリビューションでサポートされなければならないものです。オプション「reopen-logs」には、PHP ソース パッケージで提供されるデフォルトの init スクリプトは付属していません。したがって、これを使用できない可能性があります。

2)

[ ! -f /var/run/php5-fpm.pid ] || kill -USR1 `cat /var/run/php5-fpm.pid`

これは正しいオプションであり、PHP-FPM でも公式にサポートされてい ます。https ://github.com/php/php-src/blob/b7a7b1a624c97945c0aaa49d46ae996fc0bdb6bc/sapi/fpm/fpm/fpm_events.c#L94 を参照してください。

ソースコードから、この「シグナル」はログローテーション用に特別に作成されたものであり、構成の再ロードにのみ使用される「USR2」よりも優先されるべきであることがわかります。

于 2015-02-08T06:38:17.733 に答える