centos 7下需要为openresty/nginx配置logrotate。
我已经准备好配置,但是不正确。00:00,当前本地 access.log 日志被重置为零,但不会生成前一天的新日志文件。
openresty/nginx 在nobody 下运行
问题是如何解决前一天日志形成的问题。
/usr/local/openresty/nginx/logs/*log {
create 0644 nobody nobody
daily
rotate 365
missingok
notifempty
sharedscripts
postrotate
dateext
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}
权利
ls -l
total 40
drwx------. 2 nobody nobody 4096 Feb 20 14:32 client_body_temp
drwxr-xr-x. 2 root root 4096 Mar 4 10:16 conf
drwx------. 2 nobody nobody 4096 Feb 20 14:32 fastcgi_temp
drwxr-xr-x. 2 root root 4096 Feb 20 14:15 html
drwxr-xr-x. 2 nobody nobody 4096 Mar 4 10:28 logs
drwx------. 2 nobody nobody 4096 Feb 20 14:32 proxy_temp
drwxr-xr-x. 2 root root 4096 Feb 20 14:15 sbin
drwx------. 2 nobody nobody 4096 Feb 20 14:32 scgi_temp
drwxr-xr-x. 2 root root 4096 Feb 20 14:15 tapset
drwx------. 2 nobody nobody 4096 Feb 20 14:32 uwsgi_temp
ls -l
total 94928
-rw-r--r--. 1 nobody nobody 67091841 Mar 4 10:35 access.log
-rw-r--r--. 1 nobody nobody 30100415 Mar 4 10:34 error.log
-rw-r--r--. 1 root root 6 Mar 4 10:28 nginx.pid
-rw-r--r--. 1 nobody nobody 0 Feb 25 14:44 test_access.log
流程
root 30438 0.0 0.0 37348 1608 ? Ss 10:28 0:00 nginx: master process /usr/local/openresty/nginx/sbin/nginx
nobody 30439 0.0 0.0 39908 3288 ? S 10:28 0:00 nginx: worker process
root 30591 0.0 0.0 112712 960 pts/1 S+ 10:36 0:00 grep --color=auto nginx
PS 问题已解决。考虑到 Danil 的评论更新了配置,还修复了路径中 logrotate.d/nginx 文件中的错字 - /log/ /usr/local/openresty/nginx/logs/*log 中缺少字母 s
最有可能的是,NGINX 继续写入已重命名的文件,因为它没有收到需要重新打开日志的正确信号。
对此负责
postrotate。从标准 NGINX 配置:尝试通过更改 PID 文件的路径来替换它。
如果轮换甚至没有创建空文件,则该指令
create无效并且不允许该用户在目录中创建文件。检查nobody您是否可以在以下位置创建文件/usr/local/openresty/nginx/log/: