はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/05/30
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> Webサーバ >> apache アクセスログ(オリジナル)の作成
動作確認 [ Fedora7 / Fedora8 / Fedora9 / Fedora10 / Fedora11 / Fedora12 / Fedora13 / Fedora14 / Fedora15 / Fedora16 / Fedora17 / CentOS5 / CentOS6 ]
  1. 精度の高いアクセスログの収集
  2. apache設定ファイルへカスタムログ出力の組み込み
  3. カスタム集計スクリプトの設置
    カスタム集計スクリプトのダウンロードと展開
    アクセスログ表示スクリプトの設置
    集計スクリプトの設置
    カスタム集計スクリプトのオーナ・グループ、パーミッション
    補足
  4. アクセスログの表示

■ 精度の高いアクセスログの収集

通常のアクセスログの収集は各ページにSSI(CGI)を組み込んで「総参照数」や「ページ表示数」などを集計しています。
この方法だと新規ページを作成する毎に、そのロジックを組み込まなければなりません。また、カウント用のSSI(CGI)を変更した場合はその全てのページに組み込んだ部分を変更する必要があります。

この点を補う為に、「apache」プロセスがページ要求を受けた時に「apache」自身が出力するログの部分で一括管理(以下、イメージ図参照)をしてしまえば、アクセスログ収集の組み込み軽減化を図れます。

■ apache設定ファイルへカスタムログ出力の組み込み

apache設定ファイルの変更
# vi /etc/httpd/conf/httpd.conf

#
# For a single logfile with access, agent, and referer information
# (Combined Logfile Format), use the following directive:
#
#CustomLog logs/access_log combined

SetEnvIf Request_URI "default\.ida" no_log
SetEnvIf Request_URI "cmd\.exe" no_log
SetEnvIf Request_URI "root\.exe" no_log
SetEnvIf Request_URI "Admin\.dll" no_log
SetEnvIf Request_URI "NULL\.IDA" no_log
SetEnvIf Request_URI "NULL\.printer" no_log
SetEnvIf Request_URI "_vti_bin" no_log
SetEnvIf Request_URI "_vti_pvt" no_log
SetEnvIf Request_URI "MSOffice" no_log
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(ico)|(css)|(js)$" no_log
SetEnvIf Remote_Addr 192.168. no_log
CustomLog logs/access_log combined env=!no_log

カスタムログを集計するスクリプトを組み込む
# Custom log (Start)
LogFormat "%{%Y/%m/%d %H:%M:%S}t %h %>s %m %U" custom_log
CustomLog "| /etc/httpd/conf/custom_log.pl >> /var/log/httpd/custom_log" custom_log env=!no_log
# Custom log (End)

なお、「%h %m %U」などの詳しい説明は、Apache HTTP Server Projectの『カスタムログ書式』を参照してください。

■ カスタム集計スクリプトの設置

■ カスタム集計スクリプトのダウンロードと展開

カスタム集計スクリプトの『ダウンロード』を行い、解凍せずにサーバへアップロードします。
(「/root/accesslog.tar」にアップロードしたとして、説明していきます。)

■ アクセスログ表示スクリプトの設置

カレントをapacheのドキュメントルート「/var/www/html/」へ移動
# cd /var/www/html/

アップロードしたカスタム集計スクリプトを展開
# tar xvf /root/accesslog.tar
./accesslog/
./accesslog/accesslog.cgi
./accesslog/custom_log.pl
./accesslog/init.pl
./accesslog/history/

■ 集計スクリプトの設置

アクセスログ表示スクリプトの設置』で展開した「custom_log.pl」を規定位置へ移動します。

「custom_log.pl」を規定位置へ移動
# mv /var/www/html/accesslog/custom_log.pl /etc/httpd/conf/

■ カスタム集計スクリプトのオーナ・グループ、パーミッション

/etc/httpd/conf/
            `-- custom_log.pl       (root:root[700])

/var/www/html/
            `-- accesslog           (apache:apache[750])
                |-- accesslog.cgi   (apache:apache[750])
                |-- history         (apache:apache[750])
                `-- init.pl         (apache:apache[640])

■ 補足

アクセスログ表示スクリプトの配置ディレクトリはログ表示する為、CGIの実行許可が必要です。「cgi-bin」のみ許可等している場合はご注意ください。
また、配置先やディレクトリ名の変更も可能です。「init.pl」の設定値を変更してください。
(*:変更先のディレクトリやファイルのパーミッション等は『カスタム集計スクリプトのオーナ・グループ、パーミッション』をご参照ください。)

集計スクリプト「custom_log.pl」をはじめて配置または変更(「init.pl」含む)した場合は、apacheサービスの再起動が必要です。
これは、「custom_log.pl」がapacheプロセスのビルトインみたいなものである為、再起動しないと変更内容等が反映されない為です。

ログファイルはアクセスログ表示スクリプトを配置した場所に自動的に作成されます。(以下参照)
・access_log.dat
 本日までの総アクセス数や本日・前日のページ表示数やIPアドレス数と本日のアクセス元IPアドレスとその回数
・access_page.dat
 本日までの各ページに対する総アクセス数や本日・前日のアクセス数
・access_unknow.dat
 エラーコードとして弾かれたアクセスデータ(集計は「200」「301」「302」「403」のコードを対象にしています。これ以外は当ファイルにロギングします。)
・historyディレクトリ以下に「YYYYMMDD.log」(YYYY:西暦、MM:月、DD:日)
 日付毎のアクセスログ(日付が変わると「access_log.dat」ファイルがこのディレクトリ内に「日付.log」として履歴されます。)

自動生成されるログのオーナ・グループは「root」となっていますが、無視して構いません。これは、apacheの親プロセスが「root」で起動されている為でありここで作成されるオーナ等も継承される為です。

■ アクセスログの表示

クライアントより[http://サーバのアドレス/accesslog/accesslog.cgi]でアクセスして下記の様な画面が表示されれば動作しています。

■ コンテンツ関連

■ その他

ページ先頭へ

Copyright(©)2004-2018 First home server construction. All Right Reserved.