linux - 如何配置php5-fpm.log的logrotate?

标签 linux ubuntu logging logrotate

我在运行 ubuntu 12.04 的 /etc/php5/fpm/php-fpm.conf 下启用了 error_log =/var/log/php5-fpm.log nginx 和 php5-fpm。

但是我注意到 php5-fpm.log 没有 logrotate。我试图了解我从 Internet 上找到的一些配置,但我不愿意在我的生产服务器上对其进行测试。

以下是我找到的一些配置:

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

这是 link配置的。据我了解,我只需要在 /etc/logrotate.d/ 下创建一个名为 php5-fpm 的文件,所以它看起来像 /etc/logrotate.d/php5-fpm 和上面的代码。

我还从这个 link 中找到了另一个样本使用以下代码:

    /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 创建一个文件并将代码放在那里是否正确?

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

最佳答案

只是为了向通过 Google 访问的其他人澄清:

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”,后者只用于重新加载配置。

关于linux - 如何配置php5-fpm.log的logrotate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25310132/

相关文章:

linux - localsocket服务器未收到readyread信号

linux - 在 Ubuntu 上从 matlab 调用外部脚本失败

python - 在菜单中显示 gtk.Calendar?

linux - 通过 omprog(syslog 模块)将命令行参数传递给 shell 脚本

java - Spring boot - 记录每个 4xx 和 5xx,包括请求

linux - 当 read = 0 时停止读数

linux - 可以在 Linux 上编译 Windows 代码吗?

java - 在 tomcat 上部署时,logback-spring.xml 不起作用

linux - Gnome,显示身份验证对话框

mysql - 开发环境Windows/Ubuntu切换