Linuxサーバ操作管理編/(4)Webalizerの導入

Last-modified: 2008-06-30 (月) 16:04:03 (5799d)

  • サーバ管理はlog解析が基本らしいのですが、実は、ファイルがどこにあるのかもよく分からないところから始まります。やっと探して、logを開いてみても膨大な記録がずらずら並んでいるだけで、どう読んでよいのかまた悩むという有様です。
  • 何かのトラブルの原因を調べるときには、logファイルの検索作業が必要になるでしょうが、日常的な状態管理という意味では、管理ツールのお世話になるのが一番です。
  • WWWサーバには「Webalizer」という管理ツールがあり、実は、インストール時点で勝手に動作しています。主な機能としては、毎日のアクセス記録を分析集計し、どのページは読まれているか、どこからアクセスしてきているかなどを、分かりやすい図表で見れるようにしてくれるものです。
  • 2年ほど前に一応動かしてみたのですが、もともとメンバーが少ないことや、コンテンツも知れた量だから、何を管理する必要もなくほったらかしになっていました。昨年、オープンなブログを始めたこともあって、きちんと使える環境にしておこうということで設定記録をまとめました。 (2007/1/21記)

Webalizerとは

  top

  • これは、Webalizerのトップ画面です。アクセス記録の集計結果が、グラフと表で概要表示されています。この画面は月別ですが、詳細画面では、各月の日別集計結果を見ることができます。
  • このツールは、サーバOS:Whiteboxをインストールする際に標準的に組み込まれています。ただ、いわゆるサーバソフト(デーモン)ではなくて、ログファイルを集計してブラウザで視覚的に表示するアプリケーションソフトです。1日1回(午前4時頃)実行するように自動的に設定されているので、管理者が何も設定しなくても、毎日せっせとアクセス記録を蓄積し、レポートを更新しています。
  • したがって、ブラウザでページを指定するだけで、先ほどのような集計結果を見ることができます。
    http://kurarinet.com/usage/

Webalizerの設定ポイント

  • このままでも使えないわけではないのですが、一応以下の2点が、今回の調整内容となります。
  1. アクセス制限の調整
  2. 表示の日本語化

Webalizerのアクセス権限

  • Webalizerのレポートは、このディレクトリー内に保存されています。
    /var/www/usage
    通常、ホームページのコンテンツは
    /var/www/html
    配下ですから、この範囲外にあるファイルには、通常はアクセスできません。
  • Webalizerの設定ファイルは、ここにあります。
    /etc/httpd/conf.d/webalizer.conf
  • この設定内容は、デフォルトで次のようになっています。
    #
    # This configuration file maps the webalizer log analysis
    # results (generated daily) into the URL space.  By default
    # these results are only accessible from the local host.
    #
    Alias /usage /var/www/usage
    
    <Location /usage>
        Order deny,allow
        Deny from all
        Allow from localhost
        # Allow from .example.com
    </Location>
  • エイリアス設定があり、"/usage"という別名で、ドキュメントルート上に存在するとみなされるので、アクセスできるわけです。
  • ただし、"Allow"ディレクティブ で、アクセス制限が行われています。デフォルトでは、localhostだけです。つまり、サーバ自体からしかアクセスできません。もし、サーバにXwindow環境が設定されていない場合は、レポートを表示する方法がないということになります。
  • 管理情報なので外部には公開しませんが、LAN内の端末からは自由に検索できるようにします。したがって、設定を以下のように変更します。
    【webalizer.confの変更箇所】
    
    Allow from localhost  ⇒ Allow from 192.168.1.0/24
  • 最初の画面は、実は、設定変更した後のものなのです。

Webalizerの日本語化とは

  • WhiteboxのCDにあらかじめ含まれているパッケージは
    webalizer-2.01_10-15.ent.i386.rpm
    です。Webalizer自身はもともと日本語対応しているのですが、ソースから英語版として作られているらしいのです。
  • したがって、日本語表示するためには、ソースプログラムから日本語版を作り直さなくてはいけないことになります。ところが、Linuxの場合、一つのソフトが別のソフトがインストールされていることを前提(依存関係)にしていることが多く、あるソフトのソースを見つけてきてコンパイルしても、依存関係のチェック等ではねられるケースが多く、次々と追加ソフトの入手に迫られることがあります。
  • rpmファイルというのは、Red hat Package Manager の名のとおり、Redhat社が開発したパッケージ管理システムのことです。アプリケーションソフトなどに必要なプログラムファイルやリソースファイル、設定ファイルなどを一式パッケージ化してまとめて配布しています。パッケージ化されたrpmファイルの場合は、ユーザ側は余分な心配は不要で、ただダウンロードしてインストールすれば、容易に使うことができます。
  • 今回の日本語表示化というのは、rpmに依らずにソースからコンパイルし直すという作業を行うわけで、様々な困難性が予想もされましたが、案の定、ハマリました。機能的にはなんら変わりませんので、無理に日本語にこだわらなければ、敢えて面倒なことはしなくてもよいのですが、何事も経験ということで試してみました。
  • Webalizerの設定という主題を少し離れますが、その経過を記録することになります。

Webalizer日本語表示の作業手順

  • 主な作業の流れは、以下のとおりですが、3つ目のところでハマることになります(^^;)順を追って、記録しました。
    1. ソースファイルを入手 (webalizer-2.01_10-15.ent.src.rpm)
    2. パッケージ作成時の初期設定ファイルを変更 (webalizer.spec)
    3. 日本語版rpmパッケージの作成 (rpmbuild)
    4. 日本語版rpmパッケージのインストールと再設定

ソースファイルをダウンロード

  • 通常のディストリビューション配布サイトならどこにでもありますが、ソース関係はディレクトリが異なるので要注意です。
    ftp://ftp.riken.go.jp/Linux/whitebox/3.0/en/os/i386/SRPMS/
  • wgetコマンドで、直接、自宅サーバにダウンロードします。
    # wget ftp://ftp.riken.go.jp/Linux/whitebox/3.0/en/os/i386/SRPMS/webalizer-2.01_10-15.ent.src.rpm
    --16:58:55--  ftp://ftp.riken.go.jp/Linux/whitebox/3.0/en/os/i386/SRPMS/webalizer-2.01_10-15.ent.src.rpm
              => `webalizer-2.01_10-15.ent.src.rpm'
    ftp.riken.go.jp をDNSに問いあわせています... 134.160.38.1
    ftp.riken.go.jp[134.160.38.1]:21 に接続しています... 接続しました。
    anonymous としてログインしています... ログインしました!
    ==> SYST ... 完了しました。    ==> PWD ... 完了しました。
    ==> TYPE I ... 完了しました。  ==> CWD /Linux/whitebox/3.0/en/os/i386/SRPMS ... 完了しました。
    ==> PASV ... 完了しました。    ==> RETR webalizer-2.01_10-15.ent.src.rpm ... 完了しました。
    長さ: 273,220 (確証はありません)
    
    100%[====================================>] 273,220       --.--K/s
    
    16:58:55 (1.91 MB/s) - `webalizer-2.01_10-15.ent.src.rpm' saved [273,220]

パッケージ作成時の初期設定ファイル変更

  • ソースファイル自体も、rpmパッケージになっています。インストールのときと同じようなrpmコマンドを実行します。
    # rpm -ivh webalizer-2.01_10-15.ent.src.rpm
    警告: webalizer-2.01_10-15.ent.src.rpm: V3 DSA signature: NOKEY, key ID db42a60e
       1:webalizer    ########################################### [100%]
  • 実行すると、/usr/src/redhat 配下の適当なディレクトリに解凍(展開)されます。インストールするわけではありません。
  • 変更が必要なのは、次のファイルです。
    /usr/src/redhat/SPECS/webalizer.spec
  • ディレクトリを移動して、このファイルを開いて編集します。
    # vi webalizer.spec
    configureパラメータ探して、以下のように、日本語化のためのオプションを追記します。
    configure --enable-dns --with-dblib=/lib 
           ↓ (変更)
    configure --enable-dns --with-dblib=/lib --with-language=japanese

パッケージの作成

  • いよいよrpmパッケージを作り直す山場です。rebuildというコマンドを使います。
  • オプションの "-ba" を指定すると、 "/usr/src/redhat/RPMS" 以下の該当する アーキテクチャ 名のディレクトリの下にRPMが作成されると同時に "/usr/src/redhat/SRPMS" 以下に ソース 形式のRPMが作成されます。
    # rpmbuild -ba webalizer.spec
    エラー: Failed build dependencies:
            gd-devel is needed by webalizer-2.01_10-15.ent
            libpng-devel is needed by webalizer-2.01_10-15.ent
  • 残念ながら、早速エラーメッセージがでましたです(^^;)
  • めげずに、エラー内容を読めば、パッケージが2つ足りないみたいです。gd-devel と libpng-devel のようです。 実際に確認してみると、インストールされてないと出ます。
    rpm -q rpm-build gd-devel libpng-devel
    rpm-build-4.2.3-21_nonptl.WB1
    パッケージ gd-devel はインストールされていません
    パッケージ libpng-devel はインストールされていません
  • じゃぁ、その2つをインストールするしかないわけですが、ここでは "yum install" コマンドを使います。
    # yum install gd-devel libpng-devel
    Gathering header information file(s) from server(s) 
    Server: White Box Enterprise Linux 3.0 - i386 - Base 
    Server: White Box Enterprise Linux 3.0 - i386 - Released Updates 
    Finding updated packages 
    Downloading needed headers 
        (中略)
    Resolving dependencies 
    Dependencies resolved 
    I will do the following: 
    [install: libpng-devel 2:1.2.2-25.i386]
    [install: gd-devel 1.8.4-12.3.1.i386]
    Is this ok [y/N]: y
    Downloading Packages
    Getting libpng-devel-1.2.2-25.i386.rpm
    libpng-devel-1.2.2-25.i38 100% |=========================| 163 kB    00:00
    Getting gd-devel-1.8.4-12.3.1.i386.rpm
    gd-devel-1.8.4-12.3.1.i38 100% |=========================|  49 kB    00:00
    Running test transaction:
    Test transaction complete, Success!
    gd-devel 100 % done 1/2
    libpng-devel 100 % done 2/2
    Installed:  libpng-devel 2:1.2.2-25.i386 gd-devel 1.8.4-12.3.1.i386
    Transaction(s) Complete
  • 最初にハマッたと書きましたが、このパッケージ追加作業に失敗しました。
    • 一つは、"yum update" としてしまったことです。単なるコマンドの使い方の勘違いですが、もともとインストールされていないわけなので、updateもくそもありません。堂々巡りをしていました。このログは何の役にも立ちませんが、失敗の記録です。
      # yum update libpng-devel
      Gathering header information file(s) from server(s)
      Server: White Box Enterprise Linux 3.0 - i386 - Base
      Server: White Box Enterprise Linux 3.0 - i386 - Released Updates
      Finding updated packages
      Downloading needed headers
      Cannot find any package matching libpng-devel available to be updated.
      No actions to take
    • しからばと、それぞれのパッケージファイルを個別に入手して、サーバ上でインストールを試みたのですが、エラーの嵐で、どうしてよいのか分からず頓挫してしまいました。同じく失敗ログ。既にインストール済みだ!とか、依存性が未解決だ!とか、どうしようもなく怒られています。
      # rpm -ivh gd-devel-1.8.4-12.3.1.i386.rpm
      警告: gd-devel-1.8.4-12.3.1.i386.rpm: V3 DSA signature: NOKEY, key ID a7048f8d
      Preparing...       ########################################### [100%]
         1:gd-devel      ########################################### [100%]
      
      # rpm -ivh libpng-devel-1.0.14-0.7x.4.i386.rpm
      rpmdb: Program version 4.2 doesn't match environment version
      エラー: db4 error(22) from dbenv->open: 無効な引数です
      エラー: cannot open Packages index using db3 - 無効な引数です (22)
      警告: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/whitebox
      エラー: Failed dependencies:
              libpng = 1.0.14 is needed by libpng-devel-1.0.14-0.7x.4
      
      # rpm -ivh libpng-1.0.14-0.7x.4.i386.rpm
      Preparing...       ########################################### [100%]
              package libpng-1.2.2-25 (which is newer than libpng-1.0.14-0.7x.4) is already installed
              file /usr/share/man/man5/png.5.gz from install of libpng-1.0.14-0.7x.4 conflicts with file from package libpng-1.2.2-25
  • 蛇足の失敗ログは読み飛ばして、yum install の後は、再度 rpmコマンドです。オプションの "-bb" では、"-ba"と違って、ソースファイルのパッケージは作成しません。
    # rpmbuild -bb webalizer.spec
    Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.25120 
    + umask 022 
    + cd /usr/src/redhat/BUILD  
        (中略) 
    Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/webalizer-root
    書き込み中: /usr/src/redhat/RPMS/i386/webalizer-2.01_10-15.ent.i386.rpm
    書き込み中: /usr/src/redhat/RPMS/i386/webalizer-debuginfo-2.01_10-15.ent.i386.rpm

日本語版のインストール

  • ここまでくれば、もうシメタもの。
  • まず、現在のWebalizerをuninstallします。
    # rpm -e webalizer-2.01_10-15.ent
    警告: /etc/httpd/conf.d/webalizer.conf saved as /etc/httpd/conf.d/webalizer.conf.rpmsave
  • 警告が出ますが、Webalizerのconfに修正等を加えた場合は、削除の際に、別名で保存しておいてくれますので、再インストール時には、それをまた使えるというわけです。
  • いよいよ再インストールです。
    # rpm -ivh /usr/src/redhat/RPMS/i386/webalizer-2.01_10-15.ent.i386.rpm
    Preparing...        ########################################### [100%]
       1:webalizer      ########################################### [100%]
  • これで完了! 最後の作業ですが、
    1. 設定ファイルを書き戻します。
      # cd /etc/httpd/conf.d
      # cat webalizer.conf.rpmsave > webalizer.conf
    2. 念のため、httpdを再起動します
      # /etc/rc.d/init.d/httpd restart
      httpdを停止中:                                             [  OK  ]
      httpdを起動中:                                             [  OK  ]
    3. webalizerの実行が必要です。アプリケーションソフトですから、インストールは終わっても実行しないとレポートを作成してくれません。(ほうっておいても、明日の朝までには動いているのですが ^^;)
      # webalizer
  • あらためてアクセスし直すと、日本語表示になりました。   jtop
  • ほとんど代わり映えはしないのですが、まぁ、ご苦労様でした。

yum設定ファイルの修正を!

  • せっかく苦労して日本語化したのに、このままでは怖いことがあります。 今後、yum update を実行すると元の英語版に戻ってしまうかもしれないのです。yumの標準パッケージのwebalizerが更新された場合に、起こりうることです。
  • このため、yum の設定ファイルで、webalizerを更新対象から除外しておかなければなりません。
    # vi /etc/yum.conf
  • 設定ファイルを開いて、[main]セクション以下に "exclude=webalizer*" と記述します。
    [main] 
    cachedir=/var/cache/yum 
    debuglevel=2 
    logfile=/var/log/yum.log 
    pkgpolicy=newest 
    distroverpkg=whitebox-release 
       ( 中略 )
    exclude=webalizer* 
  • これで安心。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   リンク元