SSブログ

Apache::ClickPath で Cookie を使わずにユーザーを Tracking の続き [Linux]

やりました。
ついにできました。

苦労したかいがあった!

ちなみに、どんな風になるかというと、
apach の access_log に session 情報が記述されます。

具体的に見てみると、

192.168.1.1 - - [06/Jan/2005:16:28:14 +0900] 304 - "" -> "GET / HTTP/1.1" "Don't hack me ...." "9XtNsN:dq,1wtNNYNjUltNNNNNM"

※Logformat は以下のようにしてる場合です。
"%h %l %u %t %>s %b \"%{Referer}i\" -> \"%r\" \"%{User-Agent}i\" \"%{SESSION}e\""

httpd.conf の CustomLog に %{SESSION}e と書けばいいんです。

最後の 「9XtNsN:dq,1wtNNYNjUltNNNNNM」 が session 情報というわけです。
これで NAT された環境から複数の人が access にきても、
誰がどこをみたのか分かるんですよ。ええ。

まぁそれだけなんですけどね。

さて、やり方ですけど、、、、、、
かなり Gentoo の掟破りをしていると思いますので、あんまり参考になるかわかりませんが
一応備忘録として書いておきます。
導入しておかしくなっても知りません。(無責任)


自作 mod_perl-2.0.0.ebuild

まずやるべきことは PORTDIR_OVERLAY を指定することです。
/etc/make.conf の PORTDIR_OVERLAY=/usr/local/portage の記述がコメントアウトされていたら#を外してください。

その次に

mkdir -p /usr/local/portage/dev-perl/mod_perl

mod_perl の 2.0.0 じゃないと駄目なので自分で ebuild を作らないといけません。
(まだ portage に入ってないみたい)

というわけで既存の ebuild をコピーしてきましょう。

cd /usr/local/portage/dev-perl/mod_perl
cp -p /usr/portage/dev-perl/mod_perl/mod_perl-1.99.17-r1.ebuild ./mod_perl-2.0.0.ebuild

mod_perl-1.99.17-r1.ebuild を雛型にして新しい 2.0.0 を作ります。
cp したやつを3箇所ほどいじります。

vi mod_perl-2.0.0.ebuild

・back=\_${PV##*\.} を back=\.${PV##*\.} に変更
・MY_P=${PN}-${MY_PV} を MY_P=${PN}-${MY_PV}-RC3 に変更
・epatch ${FILESDIR}/${PN}-1.99.16-sneak-tmpdir.patch をコメントアウト

※ MY_P の部分は http://perl.apache.org/dist/ を確認してから決めてください。自分がやったときは mod_perl-2.0.0-RC3.tar.gz があったのでそれを使いました。

さて、これだけでは emerge できません。digest を作ります。
(FEATURES="digest" が無い人)

ebuild mod_perl-2.0.0.ebuild digest

これで compile の準備が整いました。
その前に、mod_perl の 1.2.X とか入ってると compile でエラーになるのでunmerge しといてください。

emerge unmerge dev-perl/mod_perl


もともと入ってない人は飛ばして構いません。

では emergeしましょう。

ACCEPT_KEYWORDS="~x86" emerge -vp ">=dev-perl/mod_perl-2.0.0"


で確認して、OKだったら -vp を -v にして emerge してください。


Apache::ClickPath

ebuild 作ったんだけど上手く動かなかった・・・
原因は configure のところで perl の library の PATH が足りないことだって
わかってるんですけど・・・
ebuild でどういう風に修正したらわからず。
結局 ebuild ではなく手動でインストール
Apache-ClickPath-1.0.tar.gzを落として解凍してください。

perl -I/usr/lib/perl5/vendor_perl/5.8.5/i686-linux-thread-multi/Apache2  Makefile.PL
make
make install ※Include は各自の環境に変えてくださいね

でOK!!


Apacheの設定

Gentoo の Apache は結構管理が変わってて(自分にとっては)理解するのに
時間がかかります・・・

さて、まずは /etc/conf.d/apache2 を編集します。

APACHE2_OPTS="-D PERL"

上記のようにします。自分の場合は PHP も入ってるので実際には
APACHE2_OPTS="-D PHP4 -D PERL" になってます。

Gentoo は -D PERL とすることで mod_perl が Apache に
読み込まれるような httpd.conf になってるようです。

その次に /etc/apache2/conf/modules.d/75_mod_perl.conf を変更します。

vi /etc/apache2/conf/modules.d/75_mod_perl.conf

<IfModule mod_perl.c> 内の
PerlRequire "/etc/apache2/conf/modules.d/apache2-mod_perl-startup.pl"
をコメントアウトしてください。

そしたら続いて <IfModule mod_perl.c> の中に
  PerlModule Apache2
  PerlLoadModule Apache::ClickPath
 <ClickPathUAExceptions>
   Google     Googlebot
   MSN        msnbot
   Mirago     HeinrichderMiragoRobot
   Yahoo      Yahoo-MMCrawler
   YahooSlurp http://help\.yahoo\.com/help/us/ysearch/slurp
   Livedoor   livedoorCheckers
   Globalspec Ocelli
   Naver      NaverBot
   IBM        http://www\.almaden\.ibm\.com/cs/crawler/
 </ClickPathUAExceptions>
 ClickPathSessionPrefix "-S:"
 ClickPathMaxSessionAge 18000
 PerlTransHandler Apache::ClickPath
 PerlOutputFilterHandler Apache::ClickPath::OutputFilter
と書いてください

次に /etc/apache2/conf/commonapache2.conf を編集します。

LogFormat の部分で表示させたい場所に 「%{SESSION}e」を追記してください。

ちなみに自分は以下のようになってます。combined で log に書いてます。
LogFormat "%h %l %u %t %>s %b \"%{Referer}i\" -> \"%r\" \"%{User-Agent}i\" \"%{SESSION}e\"" combined

これで Apache を再起動すればOKです。

この ClickPathUAExceptions で指定すれば、特定のものからの access 時に
SESSION の値を決められるようです。
Googlebot が来れば Google に、msnbot が来れば MSN になるようです。
User-Agent で判断してるっぽい。


さて、これで本家の mod_perl-2.0.0 が出るまでは凌げそうです。
まぁ本家のが出てきたらさっさと入れ替えます。
それまでのつなぎということでお願いします。


nice!(1)  コメント(0)  トラックバック(1) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 1

we can goClickPathの利点と弱点 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。