6

我在运行 nginx 和 php5-fpm 的 ubuntu 12.04 上启用了error_log = /var/log/php5-fpm.logunder 。/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 配置的新手,我想确保我将做的事情是正确的。

那么,这两种配置中哪一种是正确的呢?第一个还是第二个?我将只创建一个文件/etc/logrotate.d/php5-fpm并将代码放在那里是否正确?

抱歉,如果这是一个新手问题,我只是找不到有关如何执行此操作的完整解释。

4

1 回答 1

6

只是为了澄清通过谷歌来的其他人:

1)

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

这是您的发行版必须支持的东西。PHP 源包提供的默认初始化脚本不附带“reopen-logs”选项。所以你可能无法使用它。

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 回答