Last Updated 2006.02.14
- access cgi - 解説
- access cgi - 設置手順
- access cgi - 追加設置
- access cgi - 記録設定
- access cgi - 表示設定
- access cgi - 照合設定
- access cgi - 動作解説
- access cgi - 更新履歴
- access cgi - FAQ
access cgi - 追加設置
- 01 : 設置作業 : Perl 5.6 での利用
- 02 : 設置作業 : 複数取得ページの個別記録
- 03 : 設置作業 : 閲覧専用モード
- 04 : 設置作業 : カウンター表示
- 05 : 設置作業 : 外部ログ利用
1:設置作業:Perl 5.6 での利用
Perl 5.6 では、Google 等の検索サービスからの UTF-8 による日本語の検索キーワードが文字化けします。access cgi で使用している Shift-JIS へと変換して記録する為には、外部ライブラリの導入が必要となります。
1-1:Jcode.pm + jcode.pl
UTF-8 からの変換には Jcode.pm を、それ以外からは jcode.pl を利用します。
既にサーバに Jcode.pm がインストールされてる場合は、access cgi を設置するだけで利用できます。以下は、インストールされていないサーバで利用可能にする手順です。
1:制限
- jcode.pl を併用しない場合は、Shift-JIS の半角カタカナが文字化けする確率が高くなります。
2:追加ファイル
UNIX サーバの場合は、下記サイトより Jcode-0.88.tar.gz をダウンロードしてください。
- http://ftp.cpan.jp/authors/id/D/DA/DANKOGAI/ [ http://ftp.cpan.jp/authors/id/D/DA/DANKOGAI/ ]
Windows サーバの場合は、下記サイトで配布されている jcwin-0.88.zip をダウンロードしてください。
- jcwin-0.88.zip [ http://homepage2.nifty.com/hobbit/html/lint.html#jcode ]
3:転送及びパーミッションの設定
Jcode.pm と関連ファイルをサーバに転送します。ファイルのパーミッションは、全て 604 です。
cgi-bin / | +- access_cgi / | +- extlib / jcode.pl …… テキストモード(アスキーモード):604 | Jcode.pm …… テキストモード(アスキーモード):604 | +- Jcode / Constants.pm …… テキストモード(アスキーモード):604 | | H2Z.pm …… テキストモード(アスキーモード):604 | | Tr.pm …… テキストモード(アスキーモード):604 | | | +- Unicode / Constants.pm …… テキストモード(アスキーモード):604 | NoXS.pm …… テキストモード(アスキーモード):604 | +- auto / (jcwin-0.88.zip を使用する場合は、このディレクトリ内のファイルも追加)
4:動作確認
report.cgi の最後に ?check を追加し、report.cgi?check として呼び出して、library 欄に「 Jcode.pm + jcode.pl 」と表示される事を確認してください。表示されない場合は、設置作業を見直してみてください。
UTF-8 で利用されている検索サイト等からのリンクを記録して、文字化けしないことを確認できたならば、設置作業は終了です。
1-2:jcode.pl + simaguni.pl
Jcode.pm が導入できない場合は、jcode.pl と simaguni.pl を利用可能です。UTF-8 からの変換には simaguni.pl を、それ以外からは jcode.pl を利用します。
1:制限
- UTF-8 の simaguni.pl コードブックの変換テーブルで対応していない文字は、変換されません。
- UTF-8 の半角カタカナも処理したい場合は、simaguni.pl 本体及び simaguni.pl 用コードブックの改造が必要となります。
- 検索元の検索条件が UTF-8 の日本語だった場合、検索元への URIエスケープリンクは正常に処理されません。
- Perl 5.8 での Encode.pm 利用時と比較して、変換の処理が遅いです。
2:追加ファイル
simaguni.pl (Version 3.5b 以降)が別途必要となります。下記サイトからダウンロードしてください。
- Unicode(UTF-16,UTF-8)デコーダ「simaguni.pl」 [ http://hp.vector.co.jp/authors/VA014700/simaguni.html ]
UTF-8 の半角カタカナも扱いたい場合は、下記サイトで配布している jipang_hk.lzh を利用してください。
- at works : http://atworks-online.net/
半角カタカナに対応させる改造手順は、jipang_hk.lzh 内の readme_2.txt を参照してください。
3:転送及びパーミッションの設定
simaguni.pl と関連ファイルをサーバに転送します。ファイルのパーミッションは、全て 604 です。
cgi-bin / | +- access_cgi / | +- extlib / jcode.pl …… テキストモード(アスキーモード):604 simaguni.pl …… テキストモード(アスキーモード):604 jipang8.txt …… テキストモード(アスキーモード):604 jipang16.txt …… テキストモード(アスキーモード):604
4:動作確認
report.cgi の最後に ?check を追加し、report.cgi?check として呼び出して、library 欄に「 jcode.pl + simaguni.pl 」と表示される事を確認してください。表示されない場合は、設置作業を見直してみてください。
UTF-8 で利用されている検索サイト等からのリンクを記録して、文字化けしないことを確認できたならば、設置作業は終了です。
2:設置作業:複数取得ページの個別記録
複数の解析対象ページを持っている場合、追加で個別ログファルディレクトリを作成して、ログデータを対象ページ毎に別のログファイルへと記録することも可能です。
2-1:追加ファイル
個別ログファルディレクトリに最低限必要なファイルは、以下の1ファイルです。
- accesslog.cgi …… 現行ログファイル
以下の設定ファイルは、必要に応じてデータディレクトリに追加してください。
- *.ini …… 個別ログファルディレクトリと同じ名前の個別設定ファイル
2-2:個別設定ファイル
access cgi は、共通ディレクトリの設定ファイルを読み込んだ後に、データディレクトリに個別ディレクトリと同名のファイルがあればそちらも読み込んで、設定を変更して実行します。
個別設定ファイル *.ini に記述できる設定は、report.ini , replist.ini と同じです。個別設定ファイル内の記述は、変更したい内容だけでも構いません。
$cookie_name = 'at_works';
$get_request_uri = 1;
$get_request_title = 1;
$counter_mode = 1;
$counter_image_each = './images/at_works/';
$log_req = 1;
1; # return ←削除不可
個別設定ファイル *.ini には、アクセスチェックリスト checklist.cgi の設定も記述できます。
@ex_referer = ();
@referer_blank = ();
1; # return ←削除不可
個別設定ファイル *.ini 内の設定は、常に元の設定に上書きして完全に置き換わるという仕様に注意して記述してください。
my @referer_blank_add = (
'http://atworks-online.net/cgi_script/access_cgi/',
);
push (@referer_blank, @referer_blank_add);
my @root_uri_add = (
'http://atworks-online.net/',
);
push (@root_uri, @root_uri_add);
1; # return ←削除不可
Perl を扱えるのであれば、上記の様な追加設定も容易です。
2-3:個別ログファルディレクトリの作成とファイルの設置
データディレクトリ直下に個別ログファルディレクトリを作成する必要があります。下記は、at_works という個別ログファルディレクトリを追加した場合の例です。
cgi-bin / | +- access_cgi / | +- data / at_works.ini …… テキストモード(アスキーモード):604 | default.ini | +- at_works / …… :707 | accesslog.cgi …… テキストモード(アスキーモード):606 | +- default / accesslog.cgi
追加した個別ログファルディレクトリ(上記例では at_works)と各ファイルのパーミッションは、一組の access cgi を設置した時と同じです。
2-4:common.ini の設定
common.ini の @logs_dir = ();
内に、追加した個別ログファルディレクトリを '選択肢名<>ディレクトリ名',
で記述してください。区切りとして <>
が必要です。選択肢名は個別ログファルディレクトリ名と異なっていてもかまいません。
@logs_dir = (
'index<>default',
'at_works<>at_works',
);
解析リストにて一番最初に表示したい解析対象ページの個別ログファルディレクトリを指定しておいてください。
$default_dir = 'index';
…… 選択肢名を指定します。
2-5:cookie の設定
cookie を利用しての連続アクセスチェックを行う設定にしている場合は、必要に応じて個別設定ファイル *.ini 内に cookie 名称設定を追加してください。
$cookie_name = 'at_works';
…… 訪問者用の cookie 名称を設定します。
cookie 名称が初期設定のままでは、訪問者が複数の解析対象ページ間を移動した時に連続アクセスと判断されログファイルに記録されません。逆に、解析対象ページ間を移動した時に記録したくないのであれば、全て同じ cookie 名称にしておくと良いでしょう。また、cookie 名称に半角スペースを含むことはできません。_ (アンダーバー)以外の半角記号や全角文字の使用も避けてください。
2-6:対象ページでの作業
対象ページにデータ取得用の記述を行います。
1:JavaScript の設定
JavaScript の 'dir='
の部分を、追加した選択肢名の指定に修正してください。
var dir = 'dir=at_works';
日本語や全角文字の選択肢名での使用は想定していません。また、'dir=at works'
という様に半角スペースが選択肢名に入っていると、JavaScript では Netscape Communicator 4.x 系のデータを期待通りに取得できない可能性があります。
JavaScript を外部ファイルの report.js にしている場合で、同じディレクトリ内に他の report.js がある時は、*.js を任意のファイル名に変更してください。*.js を読み込む指定も変更したファイル名に修正してください。
2:SSI の設定
SSI の場合は下記の様に指定します。
<!--#include virtual="/cgi-bin/access_cgi/report.cgi?at_works+ssi"-->
2-7:解析リストでの表示選択
解析リストでの対象ページの表示変更は、選択肢名をプルダウンメニューから選択し、[表示変更] ボタンをクリックすることで実行できます。
3:設置作業:閲覧専用モード
別ディレクトリの replist.cgi から、削除/書換/登録の禁止処理、ホスト情報及び IPアドレスの一部マスク表示(i00-00-00-000.s00.a000.ap.plala.or.jp → *.plala.or.jp)処理を行った、閲覧専用の解析リストを表示させることができます。
3-1:追加ファイル
追加ディレクトリに必要なファイルは、以下の2ファイルです。
- replist.cgi
- common.ini
3-2:replist.cgi の設定
replist.cgi の設定を変更してください。
$pass = 'sample';
…… 閲覧するために必要なパスワードを設定してください。$sample_mode = 1;
…… 管理モードの設定です。1 に修正してください。
3-3:別ディレクトリの作成とファイルの設置
下記は、sample という別ディレクトリの replist.cgi から表示させる場合の設置例です。
cgi-bin / | +- access_cgi / | | | +- data / | | | | | +- default / | | | +- extlib / | | | +- lib / | | | +- plugins / | | | +- template / | | | +- lock / | +- sample / replist.cgi …… テキストモード(アスキーモード):705 common.ini …… テキストモード(アスキーモード):604
追加した各ファイルのパーミッションは、一組の access cgi を設置した時と同じです。
3-4:common.ini の設定
common.ini の共通ディレクトリの設定を変更する必要があります。
$common_dir = '../access_cgi/';
$lib_dir = '../access_cgi/lib/';
$plugins_dir = '../access_cgi/plugins/';
$template_dir = '../access_cgi/template/';
$css_dir = '../access_cgi/template/';
$image_dir = '../access_cgi/template/';
$extlib_dir = '../access_cgi/extlib/';
$lock_dir = '../access_cgi/lock/';
$data_dir = '../access_cgi/data/';
3-5:その他
個別ログファイルディレクトリを複数設置している場合は、common.ini の @logs_dir = ();
設定の変更も必要です。
“ファイルロック設定”、“日別ログファイル設定”、“月別集計ファイル設定”等も同様に変更してください。
4:設置作業:カウンター表示
外部ライブラリ等を利用する事により、アクセスカウンターを表示させることができます。
4-1:カウンター種別
JavaScript と SSI で出力形式が異なります。
JavaScript
- GIFカウンター …… GIF画像連結ライブラリ(gifcat.pl)を利用して、カウンターを出力します。
- PNGカウンター …… PNG連結ライブラリ(pngren.pl)を利用して、カウンターを出力します。
SSI
- SSIテキストカウンター …… テキストでカウンターを表示します。
4-2:report.ini の設定
report.ini の設定を行います。
$counter_mode = 0;
…… カウンター表示機能の設定です。$counter_mode = 1;
…… GIF画像カウンターを表示。(JavaScript 時)
$counter_mode = 2;
…… PNG画像カウンターを表示。(JavaScript 時)
$counter_mode = 1;
…… 1 以上で、SSIテキストカウンターを表示。(SSI 時)
$counter_digit = 4;
…… カウンター表示桁数の設定です。任意の数字を設定してください。$counter_digit = 3;
…… 001 - 3桁未満であれば3桁の表示になります。
$counter_digit = 4;
…… 0001 - 4桁未満であれば4桁の表示になります。
$counter_digit = 6;
…… 000001 - 6桁未満であれば6桁の表示になります。
$counter_digit = 8;
…… 00000001 - 8桁未満であれば8桁の表示になります。
$counter_digit = 10;
…… 0000000001 - 10桁未満であれば10桁の表示になります。
$counter_image_dir = './images/';
…… カウンター画像ファイル用ディレクトリの設定です。
個別ログファイルディレクトリを複数設置している場合は、データディレクトリに個別設定ファイル *.ini を追加して設置することにより、カウンターの種類と表示桁数及び数字画像ファイルを使い分けることが可能です。
4-3:JavaScript での設置
JavaScript でのカウンター出力には、画像連結ライブラリを利用します。
1:JavaScript:GIFカウンター
GIF画像連結ライブラリと数字画像ファイルが別途必要となりますので、下記サイト他より入手してください。
- GIF画像連結ライブラリ [ http://www.tohoho-web.com/wwwsoft.htm ]
ダウンロードした gifcat.pl は extlib ディレクトリに、数字画像ファイルは images ディレクトリを作成して、転送してください。下記は、cgi-bin ディレクトリの下に置いた場合の設置例です。
cgi-bin / | +- access_cgi / | +- data / | +- extlib / gifcat.pl …… テキストモード(アスキーモード):604 | +- images / 0.gif …… バイナリモード:604 1.gif …… バイナリモード:604 2.gif …… バイナリモード:604 3.gif …… バイナリモード:604 4.gif …… バイナリモード:604 5.gif …… バイナリモード:604 6.gif …… バイナリモード:604 7.gif …… バイナリモード:604 8.gif …… バイナリモード:604 9.gif …… バイナリモード:604
2:JavaScript:PNGカウンター
PNG連結ライブラリと数字画像ファイルが別途必要となりますので、下記サイト他より入手してください。
- PNG連結ライブラリ [ http://tsuki.jpn.org/png/pngren/ ]
ダウンロードした pngren.pl と pngrenhz.pl は extlib ディレクトリに、数字画像ファイルは images ディレクトリを作成して、転送してください。下記は、cgi-bin ディレクトリの下に置いた場合の設置例です。
cgi-bin / | +- access_cgi / | +- data / | +- extlib / pngren.pl …… テキストモード(アスキーモード):604 | pngrenhz.pl …… テキストモード(アスキーモード):604 | +- images / 0.png …… バイナリモード:604 1.png …… バイナリモード:604 2.png …… バイナリモード:604 3.png …… バイナリモード:604 4.png …… バイナリモード:604 5.png …… バイナリモード:604 6.png …… バイナリモード:604 7.png …… バイナリモード:604 8.png …… バイナリモード:604 9.png …… バイナリモード:604
3:個別の数字画像ファイルの利用
個別設定ファイル *.ini を利用して個別ログファイルディレクトリを設置している場合は、共通の数字画像ファイルではなく、個別の数字画像ファイルで表示させることも可能です。
$counter_image_dir = '';
…… カウンター画像ファイル用ディレクトリの設定です。$counter_image_dir = './images/';
…… 共通ディレクトリの数字画像ファイルを利用する場合。
$counter_image_dir = './images/at_works/';
…… 個別ディレクトリの数字画像ファイルを利用する場合。
4:JavaScript:解析対象ページでの修正
解析対象ページに記述した JavaScript を、数字画像ファイルに合わせて修正します。
下記の例では、1桁 7x9 pixel の数字画像ファイルを10桁分足した横幅と、高さを記述しています。実際に設置する場合は、数字画像ファイルとカウンター表示桁数の設定に合わせて数値を変更してください。
document.write('<img src="' + cgi + dat + '" width="70" height="9" alt="" />');
横幅と高さの「 width="1" height="1"
」部分を削ってしまっても構いません。
document.write('<img src="' + cgi + dat + '" alt="" />');
5:表示確認
解析対象ページを表示させてみて正常にアクセスカウンターが表示されていたならば、作業はこれで終了です。
4-4:SSI での設置
SSI でのカウンター出力には、画像連結ライブラリは利用できません。
1:SSI:テキストカウンター
SSIテキストカウンターの出力は、$counter_mode
と $counter_digit
の設定変更だけで可能です。
2:表示確認
アクセス解析の対象ページを表示させてみて正常にアクセスカウンターが表示されていたならば、作業はこれで終了です。
5:設置作業:外部ログ利用
access cgi 形式ではないログファイルを解析することも可能です。
- Encode.pm 又は Jcode.pm 利用時のみ動作します。
- 外部ログの利用は、サーバ負荷が極端に高い為、ローカルサーバでの利用を想定しています。
- 共用サーバでの利用は、サーバ負荷の観点から推奨しません。(アカウント停止もありえます)
- リクエスト/リンク元/検索語/ブラウザ等の変換後の文字列検索には対応していません。
- ログデータの削除及び書換処理は行えません。
5-1:対応ログ形式
標準では Apache の NCSA 形式に対応しています。
- プラグインディレクトリ内の ApacheLog.pl を改造する事により、標準外のログファイルにも対応することが可能です。
対象ログファイルは、yyyymmdd 形式でファイル名に年月日の日付が含まれていれば、全て対象ログファイルとして扱います。拡張子も必要ありません。
5-2:動作
日別ログファイルモードで動作します。(外部ログ利用時には、日別/月別/時間帯メニューも日別ログファイルを扱える様になります)
- 月別集計ファイルモードでは動作しません。
- ログデータの削除/書換は行えません。
5-3:個別設定ファイルの利用
複数設置時と同じく個別ログファイルディレクトリを作成して、追加の個別設定ファイル *.ini を利用することをお薦めします。
外部ログファイル利用時には、個別設定ファイルに記述した checklist.cgi の設定(@ex_call
, @title_replace
を除く)も読み込んでログデータ取得時に処理します。checklist.cgi 本体は読み込まれません。
ログデータ取得時に予め必要としないデータを切り捨てることによって、処理の負担を軽くすることが可能です。(統計メニューを除く)
5-4:設定ファイル
replist.ini の以下の設定を変更又は個別設定ファイル *.ini に追加してください。
$extlog_mode = 1;
…… ログファイル形式の設定です。1 に修正してください。
日本語の文字列が Shift-JIS に変換されていない場合には、以下の設定も変更してください。
$extlog_ua_code = 0;
…… UserAgnet の文字コード処理設定です。$extlog_ref_code = 0;
…… リンク元の文字コード処理設定です。$extlog_req_code = 0;
…… リクエストの文字コード処理設定です。$extlog_h2z_trans = 0;
…… 半角カナ→全角カナ変換設定です。
リクエストのデータ形式に Method と Status Code を追加する場合は、以下の設定を変更してください。
$extlog_req_mode = 0;
…… リクエストのデータ形式設定です。
個別に改造したプラグインを利用する場合は、以下の設定を変更してください。
$extlog_format ='';
…… 外部ログフォーマット取得プラグイン設定です。$extlog_format ='';
…… ApacheLog.pl を利用する場合。(初期設定)
$extlog_format ='ApacheLog_2.pl';
…… ApacheLog_2.pl を利用する場合。
外部ログフォーマット取得プラグインは、plugins ディレクトリ内に置いてください。
5-5:ログファイルの設置
対象ログファイルを、個別ログファイルディレクトリに設置してください。
cgi-bin / | +- access_cgi / | +- data / extlogs.ini | +- extlogs / access_20060101.log access_20060101.log access_20060102.log access_20060103.log access_20060104.log access_20060105.log access_20060106.log access_20060107.log access_20060108.log access_20060109.log access_20060110.log
5-6:common.ini の設定
common.ini の @logs_dir = ();
内に、追加した個別ログファイルディレクトリを '選択肢名<>ディレクトリ名',
で記述してください。区切りとして <>
が必要です。選択肢名は個別ログファイルディレクトリ名と異なっていてもかまいません。
@logs_dir = (
'server_logs<>extlogs',
);
5-7:解析リストでの表示選択
解析リストでの対象ページの表示変更は、選択肢名をプルダウンメニューから選択し、[表示変更] ボタンをクリックすることで実行できます。
個別設定ファイルで利用するプラグインを指定することにより、異なるログ形式の複数のログファイルを一つの replist.cgi で閲覧する事も可能となります。