Обертання журналу NginX


9

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

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

Система:

  • Сервер Ubuntu 9.04 під ред.
  • nginx / 0.7.61

Відповіді:


18

Це стало своєрідним неофіційним напівстандартним для демонів Unix, коли вони надсилають та / або обертають свої файли журналів, коли ви надсилаєте їм сигнал завіси ( SIGHUP). Nginx не дотримується цієї конвенції до листа, але відповідає на USR1сигнал так само, як це зафіксовано на веб-сайті Nginx під заголовком Ротація журналу .

Отже, ви можете спробувати щось подібне

kill -s USR1 `pidof nginx`

1
інший спосіб, "pkill -USR1 -n -x nginx"
Палані

11

журнали журналів 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. і воно набере чинності.
Siwei Shen 申思维

3

Якщо ви використовуєте logrotate, додайте наступне (з правильним розташуванням) у розділ nginx logrotate.conf:

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

За даними сторінки logrotate (8)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.