NginX Log Rotation

9

Я обслуживаю несколько разных доменов через NginX на одном и том же сервере, и каждый из них регистрирует свой собственный файл. Мне нужно настроить скрипт для поворота, сжать эти файлы и добавить его в cron.

Я знаю, что должен что-то сделать, чтобы NginX открывал новый файл журнала, когда я перемещал старый. Может кто-нибудь дать мне процедуру безопасного вращения файлов журнала nginx? Я думаю, мне нужно использовать logrotate, как мне его настроить?

система:

  • Ubuntu 9.04 сервер ред.
  • Nginx / 0.7.61
Джон Ф. Миллер
источник

Ответы:

18

Среди демонов Unix стало своего рода неформальным полустандом, когда они отправляют им файлы журналов, когда вы отправляете им сигнал зависания ( SIGHUP). Nginx не следует этому соглашению в письме, но реагирует на USR1сигнал так же, как описано на веб-сайте Nginx под заголовком Log Rotation .

Итак, вы можете попробовать что-то вроде

kill -s USR1 `pidof nginx`
Йорг Миттаг
источник
1
Другой способ, "pkill -USR1 -n -x nginx"
Palani
11

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
}

источник
В каком файле я должен положить это?
Эмиль Стенстрём
при использовании Ubuntu, вы должны поместить эти строки кода в этот файл: /etc/logrotate.d/nginx. и это вступит в силу.
Сивей Шен 申思维
3

Если вы используете logrotate, добавьте следующее (с правильным расположением) в раздел nginx файла logrotate.conf:

postrotate
  kill -s USR1 `cat /location/of/nginx.pid`
endscript

Согласно manrotate (8) man page

Lamnk
источник