Я обслуживаю пару разных доменов через NginX на одном сервере, и каждый из них ведет журнал в своем собственном файле. Мне нужно настроить сценарий для поворота, сжатия этих файлов и добавления его в cron.
Я знаю, что мне нужно что-то сделать, чтобы NginX открывал новый файл журнала после перемещения старого. Может ли кто-нибудь дать мне процедуру безопасного ротации файлов журнала nginx? Я предполагаю, что мне нужно использовать logrotate, как мне его настроить?
Система:
Среди демонов Unix стало своего рода неформальным полустандартом, когда они сбрасывают и / или меняют свои файлы журналов, когда вы отправляете им сигнал зависания (SIGHUP
). Nginx не следует этому соглашению до буквы, но он отвечает на USR1
сигнал таким же образом, как описано на веб-сайте Nginx под заголовком Вращение журнала.
Итак, вы можете попробовать что-то вроде
kill -s USR1 `pidof nginx`
logrotating логи nginx:
# nginx SIGUSR1: Re-opens the log files.
/opt/nginx/logs/access.log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
endscript
}
/opt/nginx/logs/error.log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
endscript
}
журнал производства рельсов поворотного типа:
/home/app_user/apps/railsapp/log/production.log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
endscript
}
Если вы используете logrotate, добавьте следующее (с правильным расположением) в раздел nginx файла logrotate.conf:
postrotate
kill -s USR1 `cat /location/of/nginx.pid`
endscript
В соответствии с страница руководства logrotate (8)