Rotation du journal NginX


9

Je sers quelques domaines différents via NginX sur le même serveur et ils se connectent chacun à leur propre fichier. J'ai besoin de configurer un script pour faire pivoter, compresser ces fichiers et l'ajouter à cron.

Je sais que je dois faire quelque chose pour que NginX ouvre un nouveau fichier journal une fois que j'ai déplacé l'ancien. Quelqu'un peut-il me donner la procédure de rotation sécurisée des fichiers journaux nginx? Je suppose que je dois utiliser logrotate, comment le configurer?

Système:

  • Serveur Ubuntu 9.04 éd.
  • nginx / 0.7.61

Réponses:


18

C'est devenu une sorte de semi-standard informel parmi les démons Unix qu'ils nettoient et / ou font pivoter leurs fichiers journaux, lorsque vous leur envoyez un signal de raccrochage ( SIGHUP). Nginx ne suit pas cette convention à la lettre, mais il répond au USR1signal de la même manière, comme cela est documenté sur le site Web de Nginx sous le titre Log Rotation .

Donc, vous pouvez essayer quelque chose comme

kill -s USR1 `pidof nginx`

1
d'une autre manière, "pkill -USR1 -n -x nginx"
Palani

11

journaux nginx logrotatifs:

# 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
}

journal de production des rails

/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
}

Dans quel dossier dois-je le mettre?
Emil Stenström

si vous utilisez ubuntu, vous devez mettre ces lignes de code dans ce fichier: /etc/logrotate.d/nginx. et cela prendra effet.
Siwei Shen

3

Si vous utilisez logrotate, ajoutez les éléments suivants (avec l'emplacement correct) dans la section nginx de logrotate.conf:

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

Selon la page de manuel logrotate (8)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.