Skip to content

GCE + Bitnami + WordPressな環境でnginxのログ出力を整える

こんにちは。

このブログを始めてから半年が経とうとしていますが、未だに動作が不安定でまれにアクセスができなくなってしまいます。(アクセス不可になっていたらごめんなさい)

エラーの原因を解明するためにはログを読むことが重要です。本ブログでは、大概のエラーがプラグインの相性やPHPのバージョン関連です。

ログ出力に関して、nginxのデフォルト設定では1つのログファイル(error.log)に書き込まれていきます。ログファイルのファイルサイズが肥大化していき、遡るのが大変になります。ログファイルは、日付ごとに別れていたほうが可読性が高いです。

そのため、ログローテーションをしてログファイルを読みやすいように圧縮します。また、古いログファイルを自動で削除するように設定します。

ログローテーションを設定する

まずは以下のコマンドを実行して、logrotate.d フォルダにnginx の設定ファイルを作成します。名前は任意です。

sudo vim /etc/logrotate.d/nginx

続いて、以下の内容を貼り付けます。

/opt/bitnami/nginx/logs/access.log /opt/bitnami/nginx/logs/error.log {
    daily
    rotate 30
    missingok
    notifempty
    compress
    create 0640 root root
    sharedscripts
    postrotate
        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

/etc/logrotate.d ディレクトリにnginxが追加されます。

eff0ff6b スクリーンショット 2023 11 01 202502

各設定項目の説明は以下です。

  1. /opt/bitnami/nginx/logs/access.log/opt/bitnami/nginx/logs/error.logのパス
    これらの行は、ログローテーションを適用する対象のログファイルのパスを指定します。この場合、nginxのアクセスログ(access.log)とエラーログ(error.log)が対象です。
  2. daily
    毎日新しいログファイルが作成され、過去のログファイルはアーカイブされます。
  3. rotate 30
    ログファイルのバックアップを保持する数を指定します。30日分(30個)の古いログファイルを保持し、それ以降は古いログファイルが削除されます。
  4. missingok
    ログファイルが存在しない場合、エラーを表示しないようにします。
  5. notifempty
    ログファイルが空の場合、ローテーションを行わないようにします。
  6. compress
    古いログファイルを圧縮します。ログファイルの容量が減ります。
  7. create 0640 root root
    権限と所有者を指定します。0640の権限(読み取りと書き込み権限をrootユーザーとrootグループに付与)で作成されます。
  8. sharedscripts
    以降に記述した処理を1度だけ実行します。
  9. postrotate
    ログローテーションが完了した後に実行されるスクリプトを指定します。nginxに対してUSR1シグナルを送信して、新しいログファイルを開きます。これにより、nginxは新しいログファイルにデータを書き込むことができます。
  10. endscript
    postrotateセクション内のスクリプトの終了を示します。

上記の設定ファイルを作成することで、nginxのアクセスログとエラーログが毎日ローテーションされ、30個までの古いログファイルが保持されます。また、ログファイルは適切な権限と所有者で作成され、ローテーション後にnginxが再起動されます。

ログローテーションのテスト実行

ログローテーションを設定したら、実際に動くかテストしましょう。以下のコマンドを実行してください。-d はdry runで実際には動かさずファイルに影響を与えません。

sudo logrotate -d /etc/logrotate.d/nginx
a355235e スクリーンショット 2023 11 01 203726

上記のように問題なく動作したら、以下のコマンドで実際にログローテーションを実行してください。-f はforceで強制実行です。

sudo logrotate -f /etc/logrotate.d/nginx

今回のログローテーションに関する設定では、nginxのログファイルの書き込み場所は変更されません。もし変更する場合には、以下のコンフィグファイルを変更してください。

/opt/bitnami/nginx/conf/nginx.conf
カテゴリWordPress

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントは日本語で入力してください。(スパム対策)

CAPTCHA