カテゴリー
everyday life

本家のお世話-#21。(rotatelogsを使う)

投稿アップデート情報  追記(12/17)  …  追記3(12/28)  追記4(2012/4/11)  追記5(2013/1/9)

 本家のお世話-#3。でrotatelogs.exeについての不安を書いたのだが,今回Apache2.2/CHANGES.txtを読んでいたら何となく大丈夫かなと思えたので,rotatelogsを参考にログを記録してみることにした。

 httpd.confの中はこんな感じ。
   CustomLog “|bin/rotatelogs -l -f logs/access.%Y.%m.%d 86400” combined
   ErrorLog “|bin/rotatelogs -l -f logs/error.%Y-%m-%d 86400”
combined を使うのは,AWStats を使うから。

 ということで,AWStatsも再導入する。導入方法については,AWStats7.0へのアップグレード。を参照してほしい。
 AWStatsのデータ更新のために,中に下の3行を記入したbatファイルを作り,タスクスケジューラで毎日0時に前日のアクセスログについて実行してやる。
   @echo off
   perl [絶対パス]awstats.pl -config=o6asan.com -update

追記(12/17):
 「AWStats7.0へのアップグレード。を参照してほしい。」と書いたんだけれども,かのページの「5. ドキュメントルートにawstatsフォルダを作り,その中にcss,icon,classes,jsの4フォルダを移動する。」については,ちょっと注意を要する。
 今回の場合,ドキュメントルートにはWordPress3.3があってしかもマルチサイトとして使われているので,Rewriteが有効になっている。で,Rewriteを使うとなれば,Rewrite有効のディレクトリでは,httpd.confの Options のところには FollowSymLinks かなんかがいるわけだけれど,AWStatsのhttpd_confではOptions Noneになっているから,当然エラーが出る。awstatsフォルダの直下に.htaccessを入れて Options FollowSymLinks にしてやるのも一つの手だけど,どうせ httpd-awstats.conf を作って Alias を切ってやらないといけないから,この際,awstatsフォルダそのものをドキュメントルートの外にしてやることにした。

 それから,「タスクスケジューラで毎日0時」と書いたが,いざまわしてみたらrotatelogs.exeの動きとぶつかってなんか変なので,batは0:05に流してやることにした。結局,あんまり意味がなさそうなので,元に戻した。( <--- 追記2 12/20)  書き忘れたが,logs/access.%Y.%m.%d でログを取っているので,awstats.model.conf のLogFileのところは[絶対パス]logs/access.%YYYY-24.%MM-24.%DD-24 にしてある。前日のアクセスログに対してbatを実行するということ。  久しぶりにStatisticsを見たわけだが,なんと    1. OSの参照がすべて不明になる    2. 検索文字列が一切捕捉されない という不思議なことが起こっていた。しばらくああでもないこうでもないと,confを弄っていたのだが,どうにも埒が明かない。ググってみたがピタリのが見当たらない。しかし,AWStats + Windoes Server 2008 R2 + IIS 7.5というところの現象がよく似ている。環境が違うので何をしたらいいだろうと思ったが,エイヤッということで,ActivePerl-5.14.2.1402-MSWin32-x86-295342.msiからActivePerl-5.12.4.1205-MSWin32-x86-294981.msiにもどしてみた。すると,ビンゴ。
 しかし,何が原因なんだろう。Perlについて全くの素人なので,リリースノートを見てもどこが変わっているのかよくわからん。

追記3(12/28):
 上記の件なんだが,やはり,AWStatsのフォーラムにでも報告しておくべきなのかなとSourceForge.netをうろうろしていたら,http://sourceforge.net/projects/awstats/develop/ にAwstats 7.0 awstats.pl fixes という項目があった。これ,ほんとたまたまというか,お引き合わせとしか思えん。というのが,このページは時系列で最新のが10個だけ載ってるところで,この表題の件は下から2番目だったのだ。この時に気づかなかったら,見つけるのは大変だったと思う。

 ページに行ってみたら,voutersさんという方のパッチがあって,Perlのバージョンは 5.14.2 になっているしということで,なんとなくこのパッチで解決するのではとピンときた。早速, http://vouters.dyndns.org/public/awstats-7.0.pl.diff.tar.gz を落として展開して,中の awstats.pl.diff をゲット。

 patch utility を使うといいみたいに書いてあったので,http://gnuwin32.sourceforge.net/packages/patch.htm に行って patch-2.5.9-7-bin.zip を落としてきた。展開して中の patch.exe で patch –binary -pnum <patchfile をやってみたが,hunk FAILEDがでてうまく当たらない。patch.exe の使い方はよくわからないし,困ったなぁと思ったが,awstats.pl.diffを開いてみたら大した量じゃなかったので,手作業でawstats.pl にあててやった。

 ActivePerl-5.14.2.1402-MSWin32-x86-295342.msi を再インストールしてやって,使ってみたら,「1. OSの参照がすべて不明になる」も「2. 検索文字列が一切捕捉されない」も解消されていた。\(^O^)/

 ところで,rotatelogs.exeはまともに動いてくれてはいるけれど,カスタムログひとつにつき,プロセスが4つできる。rotatelogs.exe2つと,cmd.exe2つ。これがうざいといえばうざいカナ。もっとも,Win版のApacheはhttpd.exeからして2つだから,そんなものなんかなと思っている。動きは別におかしくないし。まっ,メモリがギリギリの場合,このプロセスによる占有は痛いかもしれない。

追記4(2012/4/11):
 Apache導入についての新しい記事を,本家のお世話-#28。本家のお世話-#29。に書いた。

追記5(2013/1/9):
 AWStats7.1へのアップデートを書いた。上で失敗している patch.exe の使い方も書いてあるので,ナンだったらご覧ください。

コメントを残す

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