NginXログローテーション


9

同じサーバー上のNginXを介していくつかの異なるドメインにサービスを提供しており、それぞれが独自のファイルにログを記録します。回転するスクリプトを設定し、これらのファイルを圧縮してcronに追加する必要があります。

古いログファイルを移動したら、NginXで新しいログファイルを開くために何かをする必要があることはわかっています。誰かがnginxログファイルを安全にローテーションする手順を教えてもらえますか?logrotateを使用する必要があると思いますが、どのように構成しますか?

システム:

  • Ubuntu 9.04サーバー版
  • nginx / 0.7.61

回答:


18

Unixデーモンの間では、ハングアップシグナル(SIGHUP)を送信すると、ログファイルをフラッシュしたりローテーションしたりする、一種の非公式な準標準になっています。Nginxはこの規則に準拠していないがUSR1、NginxのWebサイトに「ログのローテーション」というタイトルで文書化されているように、信号に同じように応答します。

だから、あなたは次のようなことを試すことができます

kill -s USR1 `pidof nginx`

1
別の方法、「pkill -USR1 -n -x nginx」
Palani

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
}

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

これをどのファイルに入れればよいですか?
EmilStenström12年

ubuntuを使用する場合は、次のコード行をこのファイルに追加する必要があります/etc/logrotate.d/nginx。それが有効になります。
Siwei Shen申思维

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.