awstats 使用 GeoIP 查詢出主機所在位置

星期五, 4th 九月 2009

awstats安裝完後有時候會需要更詳細的資料, 想知道該IP是從那個國家來的, 可以使用免費版的GeoIP, 準確率60%, 付費版的聽說是75%

Geo:IP 除了perl元件外需要C library支援

自動安裝library

  1. C library可以用yum 安裝
    yum install GeoIP
  2. Perl library  可以用CPAN
    cpan
    install Geo::IP (可能有相依性的問題)

手動安裝library方式如下

  1. perl的Geo::IP需要有C library支援
    wget http://www.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz
    tar zxvf GeoIP-1.4.6.tar.gz
    cd GeoIP-1.4.6
    ./configure
    make
    make check
    make install
    echo '/usr/local/lib' >> /etc/ld.so.conf
    /sbin/ldconfig /etc/ld.so.conf
    cd ..
  2. perl的Geo::IP
    wget http://www.maxmind.com/download/geoip/api/perl/Geo-IP-1.38.tar.gz
    tar zxvf Geo-IP-1.38.tar.gz
    cd Geo-IP-1.38
    perl Makefile.PL
    make
    make test
    make install
    cd ..

下載所需的資料檔

wget http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
gunzip GeoIP.dat.gz
mv GeoIP.dat /var/lib/GeoIP/GeoIP.dat (如果資料夾不存在手動建立)

修改awstats.domainname.conf

vi awstats.domainname.conf
拿掉註解並修正
LoadPlugin="geoip GEOIP_STANDARD /var/lib/GeoIP/GeoIP.dat"

重新跑一次awstats應該就ok了, 再來我們要每個月自動更新IP的檔案

建立自動更新的程式
vi /usr/connexone/bin/update_GeoIP.sh
#!/bin/bash
# Name: update_GeoIP.sh
# Version: 0.1
# Last Modified: 2009-09-04
wget http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
gunzip GeoIP.dat.gz
mv GeoIP.dat /var/lib/GeoIP/GeoIP.dat

加入每月更新 
crontab -e
15 7 5 * * /usr/connexone/bin/update_GeoIP.sh >/dev/null