日曜研究室 〜技術的な日常〜

技術的な観点から日常を綴ります

awstatsの自動アップデートには気をつけた方がいい


   7 月 07

awstatsの自動アップデートには気をつけた方がいい

CentOS5.3で動かしてるアクセス解析ソフトのawstatsが急に動作しなくなるという問題が。
ブラウザで見ても404が返ってくるばかりで、かなり頭の中がパニックになりましたが、まずリバースプロキシとして使ってるDeleGateを疑うことに。
(その前にローカルプロキシのdolipoを疑うというステップがありましたが省略)
色々調べてみましたがDeleGateには問題はありませんでした。

awstatsが動いてたサーバーの/etc/httpd/conf.dあたりを見ると、awstats.conf.rpmnewというファイルが。
yumで自動アップデートする設定にしてるのでそれでアップデートされたんだろうなぁと思い、/var/log/yum.logを見ると案の定今朝更新されてました。

元のawstats.confではバーチャルドメイン対応の設定をしてたのと、awstats.conf.rpmnewにはデフォルトの設定が書かれてただけなので、rpmnewの方を消してapacheを再起動してみましたが、状況は全く変わらず。

ちょっと悶絶するくらい「何で〜?」ってなりましたが、よく調べてみると、どうもawstats本体のディレクトリが/usr/local/awstatsから/var/www/awstatsに変わってるようで、しかも元の/usr/local/awstatsの中身の主要なファイルが消えてました。
もちろんawstats.plも消えてるので404が出るのは当たり前です。
まぁ、yumでアップデートされたんなら古いプログラムファイルが削除されるのは分かるんですけど、なんで/usr/localなんだ?
yumでアップデートされるということは、yumかrpmで入れたはず。

でまぁ、ちょっとした謎を抱えたまま、パスが変わってるのは分かったので各種設定ファイルをそれに合わせて書き換えました。
これで、定時のcronでの更新も動作するようになったんですけど、やっぱりブラウザからは閲覧できません。
正確には404ではなくawstats.plは表示されるようになったんですが、集計データが全て0のままで使い物にならない状態でした。

awstatsのバージョンが上がったからデータファイルの互換性がなくなったのかと思いましたがそうでもないみたいで。
現にコンソールからはoutputオプションをつければデータは見れました。

パーミッション等でCGI経由ではデータファイルが読み込めない問題が起きてるのかなと思い、apacheのエラーログを見ましたが全くエラーが記録されておらず。
perlに-wをつけてwarningも記録するようにしてみたら、awstats.plの9533行目で未初期化変数使用のwarningが出ましたが、今回の問題とは関係なさそうでした。
というか関係ないと思いたい。あんなソース読みたくない。

\(^o^)/
こんな感じでゴロゴロして現実逃避してたら、ふと一つの可能性に気づきました。

SELinuxじゃね?

開発コミュニティの理念がアレだとか、めんどくさいとかで評判の悪いSELinuxですが、僕は以前から意地でもSELinuxオンで行く事を決めてたので、今回のサーバーでもオンになっています。
/etc/log/audit/audit.logを見るとビンゴ!わんさかとawstats.plがらみのdeniedが記録されてました。

audit2allowとかで許可してあげると、ちゃんとブラウザでも表示されるようになりました。

しかし、awstatsのディレクトリが変わるってどういうことよ?
まぁ元々ソースから入れた訳でもないはずなのに/usr/localに入ってた事がおかしいんですけどね。
perlもファイルが読めないならちゃんとエラー吐いてくれよと。
まぁ、perl/CGIからだとSELinuxのせいでファイルがある事さえ認識できなかったのかもしれないですけど。

これで4時間くらい食ってしまいましたよorz

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply









Spam protection by WP Captcha-Free