server-memo.net

CentOS7 webalizerインストール(ソースから)

      2016/01/22

「CentOS 7」へのwebalizerインストール方法です。

CentOS7へのwebalizerインストールについて

CentOS7はbaseのリポジトリにwebailzerが含まれていないため、yumでwebalizerをインストールすることが出来ません。(2015.11.22現在)
ですので、今回はソースからインストールする方法をまとめていきます。

※CentOS6ならばyum install webalizerでインストールできます。

ちなみに公式ではないですが、CentOS7用のrpmは下記の場所からダウンロードで出来ます…

http://li.nux.ro/download/nux/misc/el7/x86_64/

事前準備

webalizerをインストールするにあたり、必要になるものを事前にインストールしておきます。(すでにインストールされている場合は、この作業は必要ありません。)

事前にインストールするソフト一覧

  • zlib-devel
  • libpng-devel
  • libgd-devel
  • libdb-devel
  • libbz2-devel
  • GeoDB
  • GeoIP
  • zlib-develインストール

    データの圧縮・解凍を行うためのライブラリである、「zlib-devel」を「yum」を使ってインストールします。

    # yum install zlib-devel
    

    libpng-develインストール

    PNGのエンコード・デコードを行うライブラリである「libpng-devel」を「yum」を使ってインストールします。

    # yum install libpng-devel
    

    libgd-develインストール

    画像イメージを動的に操作するためのライブラリである「gd」と「gd-devel」をインストールします。

    # yum install gd gd-devel
    

    libbz2-develインストール

    bzip2の暗号アルゴリズムライブリである「bzip2-devel」をインストールします。

    # yum install bzip2-devel
    

    libdb-develインストール

    libdbライブラリである「libdb-devel」をインストールします。

    # yum install libdb-devel
    

    GeoDBインストール

    webalizer用のGeoDBデータベースをインストールします。これは「yum」ではインストール出来ないので配布もとからダウンロードしてくる必要があります。

    これは、Webalizerのが提供するネイティブのジオロケーションサービスを使用する場合に必要となります。

    ダウンロード

    # wget ftp://ftp.mrunix.net/pub/webalizer/geodb/geodb-latest.tgz
    

    解凍・格納

    # tar xzfv geodb-latest.tgz
    

    解凍すると「GEODB.README」「GeoDB.dat」が抽出されてきますので、「GEODB.README」に記述されているように、「/usr/share/GeoDB」に「GeoDB.dat」を格納します。

    「/usr/share/GeoDB」ディレクトリは、新規に作成する必要があります。

    # mkdir /usr/share/GeoDB
    # cp -p GeoDB.dat /usr/share/GeoDB
    

    GeoIPインストール

    IPによる国情報解析に使用する「GeoIP」「GeoIP-devel」をインストールします。

    # yum install GeoIP GeoIP-devel
    

    webalizerインストール

    事前に必要なソフトのインストールが完了しましたら、いよいよ「webalizer」のインストールを行っていきます。

    webalizerのソースダウンロード

    下記のURLにアクセスし、最新のソースのURLを確認してください。

    http://www.webalizer.org/download.html

    今回は「Tar/Gzip archive」からダウンロードします。

    webalier-download

    # wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-08-src.tgz
    

    解凍

    ダウンロードしてきた「webalizer-2.23-08-src.tgz」を解凍します。

    # tar xzfv webalizer-2.23-08-src.tgz
    

    webalizerの日本語化

    webalizerの日本語データは「euc」なので、これを「UTF-8」へ変更します。

    解凍した「webalizer」のディレクトリ内に「lang」というディレクトリがありますので、そこに移動し「iconv」で文字コードを「euc-jp」から「utf-8」に変更していきます。

    # cd webalizer-2.23-08/lang
    # iconv -f euc-jp -t utf-8 webalizer_lang.japanese > webalizer_lang.utf8
    # mv webalizer_lang.japanese webalizer_lang.japanese_euc
    # mv webalizer_lang.utf8 webalizer_lang.japanese
    

    検索エンジンの検索クエリはUTF-8を使用していることが多いため、「euc」のままにしておくと、何で検索してきたかの値が文字化けしてしまうから変更が必要となります。

    2013年9月頃からgoogleは検索をSSLで行ってうように仕様を変更しました。そのため、検索クエリ(キーワード)がリファラーに含まれなくなっています。その結果、webalizerでは検索クエリが解析できず、googleからのユーザ検索クエリは表示されません。

    ちなみに、2015年11月現在「yahoo」等は検索にhttpを使用しているので、そこからのユーザ検索クエリは解析可能となっています。

    インストール

    今回の手順では「configer」のオプションとして下記の指定し、「make」「make install」を行なっていきます。

    • インストール場所を「/usr/local/webalizer」
    • 言語を日本語
    • DNSによる逆引きを使用
    • GeoIP使用
    • ログがbz2で圧縮されていても解析対応
    # cd ../
    # ./configure --prefix=/usr/local/webalizer \
    --with-language=japanese \
    --enable-dns \
    --enable-geoip \
    --enable-bz2
    # make
    # make install
    

    上記の手順では、「webalizer」の日本語化を行った際に、「lang」ディレクトリに移動していますので、ひとつ上のディレクトリに移動して「configer」を行っていきます。

    もし、別のディレクトリにいる場合は、解凍した「webalizer」のディレクトリに移動してから「configure」からの作業を行ってください。

    これで、「webalizer」が「/usr/loca/webalizer」にインストールされます。

    「webalizer」のインストールディレクトリを変更したい場合は、「--prefix」の値を変更することでインストールするディレクトリを変更できます。

    初期設定

    設定ファイル「webalizer.conf.sample 」が「configer」の際に「prefiex」オプションで指定したディレクトリ内の「etc」に作成されるので、それを元に設定を行っていきます。

    # cd /usr/local/webalizer/etc/
    # cp -p webalizer.conf.sample webalizer.conf
    # vi webalizer.conf
    

    設定ファイル名について

    今回は設定ファイル名を「webalizer.conf」としていますが、バーチャルホスト等で複数のアクセスログを解析する場合は、解析するログの分だけ設定ファイルを作成する必要があります。

    その際は、それぞれどのログを解析するための設定ファイルか一目でわかるような名前で、設定ファイルを作成しましょう。

    設定内容

    「webalizer」の設定は非常に多くの項目がありますが、動作確認のためにとりあえず動作させるだけならば「LogFile」と「OutputDir」の設定だけ行えばログの解析レポートを作成させることが出来ます。

    その他の詳しい設定は別のページでまとめます。

    LogFile 解析を行うログファイルを指定
    OutputDir webalizerが作成したログ解析レポートデータを保管するディレクトリを指定
    LogFile設定

    下記は「/var/log/httpd/access_log」を指定した例です。

    変更前

    LogFile        /var/lib/httpd/logs/access_log
    

    変更後

    LogFile        /var/log/httpd/access_log
    
    OutputDir設定

    下記は「var/www/html/usage」を指定した例となります。

    変更前

    OutputDir      /var/lib/httpd/htdocs/usage
    

    変更後

    OutputDir      /var/www/html/usage
    

    レポート保管用ディレクトリの作成

    「OutputDir」で指定したディレクトリを作成します。

    # mkdir /var/www/html/usage
    

    レポート作成

    「webalizer」は常駐型のデーモンではないので、手動で実行しアクセスを解析させる必要があります。

    書式

    # /usr/local/webalizer/bin/webalizer -c [webalizer設定ファイル]
    

    「webalizer」のパスは、configerで設定したprefixの値によって変わりますので、適宜読み替えてください。

    レポート作成例

    # /usr/local/webalizer/bin/webalizer -c /usr/local/webalizer/etc/webalizer.conf
    
    レポートの出力確認

    「webalizer」によって作成レポートは、「OutputDir」で設定したディレクトリに作成されるので確認してみます。

    # cd /var/www/html/usage/   <--OutputDirで設定されたディレクトリに移動
    # ls -la
    合計 80
    drwxr-xr-x 2 root root  4096 11月 26 03:08 .
    drwxr-xr-x 5 root root    47 11月 23 17:16 ..
    -rw-r--r-- 1 root root  2303 11月 26 03:08 ctry_usage_201511.png
    -rw-r--r-- 1 root root  2764 11月 26 03:08 daily_usage_201511.png
    -rw-r--r-- 1 root root  1786 11月 26 03:08 hourly_usage_201511.png
    -rw-r--r-- 1 root root  3663 11月 26 03:08 index.html
    -rw-r--r-- 1 root root  2205 11月 26 03:08 usage.png
    -rw-r--r-- 1 root root 49618 11月 26 03:08 usage_201511.html
    -rw-r--r-- 1 root root  2870 11月 26 03:08 webalizer.hist
    

    無事レポートが作成されていることが確認できました。

    apache設定

    「OutputDir」で設定したディレクトリを、閲覧できるように必要ならばapacheの設定を変更してください。

    動作確認

    apacheの設定が完了しましたら、実際にwebブラウザで接続しレポートが作成されていることを確認してみてください。

    下記のような画面が表示されるはずです。

    webalizer00

    webalizerをcronへ登録

    正常にレポートが作成されることが確認できましたら、今度は「cron」に登録し「webalizer」で定期的にレポートを作成させるようにしていきましょう。

    今回は、rootユーザの「crontab」に登録する方法と、「/etc/cron.d」に登録する方法の2通りを説明します。

    rootのcrontabに登録

    rootユーザのcrontabに登録する方法です。

    rootユーザで「crontab -e」コマンドを実行することで、rootユーザのcrontabの設定を行うことが出来ます。

    crontab設定

    # crontab -e
    
    設定例

    毎日0:00分にログ解析を行う場合のcron設定例です。

    00 0 * * * /usr/local/webalizer/bin/webalizer -c usr/local/webalizer/etc/webalizer.conf
    

    ちなみにcrontabの設定方法こちらのページにまとめてあります。

    /etc/cron.dに登録

    「/etc/cron.d」ディレクトリの中に、設定ファイルを作成することで登録できます。

    設定ファイル作成

    今回は、「webalizer」という名前のファイルを作成しています。

    # vi /etc/cron.d/webalizer
    

    設定例

    下記の例は、毎日0:00にwebalizerでレポートを解析させるための設定例となります。

    #
    # cron-jobs for webalizer
    #
    
    MAILTO=root
    
    WEBALIZER=/usr/local/webalizer/bin/webalizer
    CONF=/usr/local/webalizer/etc/webalizer.conf
    
    00 0 * * * root $WEBALIZER -c $CONF
    

    パーミッションの設定

    作成したファイルのパーミッションは644にし、ファイル所有者は「root」ユーザである必要があります。

    # chmod 644 webalizer
    

    これで登録作業は完了です。

     - webalizer