Xoay vòng NginX


9

Tôi đang phục vụ một vài tên miền khác nhau thông qua NginX trên cùng một máy chủ và mỗi tên miền đều đăng nhập vào tệp riêng của chúng. Tôi cần thiết lập một tập lệnh để xoay và nén các tệp này và thêm nó vào cron.

Tôi biết tôi phải làm gì đó để khiến NginX mở tệp nhật ký mới sau khi tôi chuyển tệp cũ. Ai đó có thể cho tôi thủ tục để xoay các tệp nhật ký nginx an toàn không? Tôi đoán tôi cần sử dụng logrotate, làm cách nào để định cấu hình nó?

Hệ thống:

  • Máy chủ Ubuntu 9.04 ed.
  • nginx / 0,7,61

Câu trả lời:


18

Nó đã trở thành một loại bán chuẩn không chính thức trong số các daemon Unix mà chúng tuôn ra và / hoặc xoay các tệp nhật ký của chúng, khi bạn gửi cho chúng một tín hiệu gác máy ( SIGHUP). Nginx không tuân theo quy ước này đối với bức thư, nhưng nó phản hồi USR1tín hiệu theo cách tương tự, như được ghi lại trên trang web của Nginx dưới tiêu đề Xoay vòng nhật ký .

Vì vậy, bạn có thể thử một cái gì đó như

kill -s USR1 `pidof nginx`

1
một cách khác, "pkill -USR1 -n -x nginx"
Palani

11

logrotating nginx log:

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

logrotating đường ray sản xuất log:

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

Trong tập tin nào tôi nên đặt cái này?
Emil Stenström

Nếu sử dụng Ubuntu, bạn nên đặt các dòng mã này vào tệp này : /etc/logrotate.d/nginx. và nó sẽ có hiệu lực.
Siwei Shen

3

Nếu bạn sử dụng logrotate, hãy thêm phần sau (với vị trí chính xác) vào phần logrotate.conf của nginx:

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

Theo trang man logrotate (8)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.