Word Pressアクセスログの管理

Word PressでWebページを公開した際に, アクセスログを全て一つのファイルで管理していると, ファイルのサイズが膨大になってしまいます.
アクセスログを日ごとに分割し, 管理しやすくしましょう.
この記事ではウェブサーバーとしてApacheを使っているものとして話を進めていきます.

アクセスログの場所の確認

Webサイトへのアクセスログがどこに収納されているのかを確認しましょう.
Word Pressのアクセスログは, 利用しているウェブサーバー (この記事の場合はApache) のログとして書き出されます.
/etc/httpd/conf/httpd.confを開くことで確かめることができます.


(略) CustomLog "logs/access_log" combined (略)

要約すると, 「Apacheのアクセスログは, [Server Root]/logs/access_log に書き込まれますよー」ということになります.
Server Rootも同様に/etc/httpd/conf/httpd.confから確認できます. 自分の環境では /etc/httpd でした.


(略) ServerRoot "/etc/httpd" (略)

余談ですが, 「combined」はアクセスログが書き込まれる際のフォーマットを指定しています.
具体的にどんなフォーマットなのか? ということも /etc/httpd/conf/httpd.conf 内で指定されています.

アクセスログを日ごとに管理

以下のシェルスクリプトを作成します.

#! /usr/bin/sh

cd /etc/http/logs/
mv access_log access_log.`date '+%y%m%d-%H%M'`
kill -USR1 `cat /usr/local/apache/logs/httpd.pid`

上記のスクリプトは, Apacheによって生成されたaccesslogというファイルの名前をその日の名前で書き換えます.
例えば, 2019年2月20日に上記のスクリプトaccess_log.shを実行すると, accesslogの名前はaccesslog.190220-0000へと書き換えられます.
あとはaccesslog.shが毎日決まった時間に実行されれば, 日毎のアクセスログを生成することができます.

決まった時間にaccesslog.shを実行

Linuxにはcronというプログラムが導入されいて, これによって毎日決まった時間にある動作を実行することができます.
以下のコマンドでcronを起動してください.

$ sudo crontab -e

次に実行したい命令, および実行したいタイミングを指定します.
cronでは, 「分 時 日 月 曜日 コマンド」の書式で命令を指定します (このフォーマットを間違えるとエラーを吐くので, 特に全角半角スペースなどには注意しましょう).
指定がない場合には「*」と書き込みます.
それでは, 実際にcronに命令を書き込んでみましょう.

0 0 * * * sh /root/access_log.sh

これは, 「毎日0時00分に (先ほど作成した) accesslog.shというシェルスクリプトを実行してくれ, ただし日, 月, 曜日に指定はない」とOSに指示したことになります.
これで, アクセスログを一つのファイルに書き連ねずに, 日にちごとに分割することができます.