Rotasi Log NginX

9

Saya melayani beberapa domain berbeda melalui NginX di server yang sama dan mereka masing-masing login ke file mereka sendiri. Saya perlu mengatur skrip untuk memutar, dan kompres file-file ini dan menambahkannya ke cron.

Saya tahu saya harus melakukan sesuatu untuk membuat NginX membuka file log baru setelah saya memindahkan yang lama. Dapatkah seseorang memberi saya prosedur untuk memutar file log nginx dengan aman? Saya kira saya perlu menggunakan logrotate, bagaimana cara mengkonfigurasinya?

Sistem:

  • Ubuntu 9,04 server ed.
  • nginx / 0.7.61
John F. Miller
sumber

Jawaban:

18

Ini telah menjadi semacam semi-standar informal di antara daemon Unix yang mereka flush dan / atau putar file log mereka, ketika Anda mengirim mereka sinyal hangup ( SIGHUP). Nginx tidak mengikuti konvensi ini untuk surat itu, tetapi menanggapi USR1sinyal dengan cara yang sama, seperti yang didokumentasikan di situs web Nginx dengan judul Rotasi Log .

Jadi, Anda bisa mencoba sesuatu seperti

kill -s USR1 `pidof nginx`
Jörg W Mittag
sumber
1
cara lain, "pkill -USR1 -n -x nginx"
Palani
11

logrotating log 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
}

log produksi log relasi:

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

sumber
Di file mana saya harus meletakkan ini?
Emil Stenström
jika menggunakan ubuntu, Anda harus meletakkan baris kode ke dalam file ini: /etc/logrotate.d/nginx. dan itu akan berlaku.
Siwei Shen 申思维
3

Jika Anda menggunakan logrotate, tambahkan berikut ini (dengan lokasi yang benar) ke bagian nginx di logrotate.conf:

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

Menurut logrotate (8) halaman manual

Lamnk
sumber