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
John F. Miller
la source

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`
Jörg W Mittag
la source
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
}

la source
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)

Lamnk
la source