ある会員制サイトでどの国からのアクセスによってコンテンツをダイナミックに変更したいというニーズあり。IPアドレスで振り分けるしかないのだけど、プロキシが利いていれば正確ではないこともありえる。その点理解してもらったうえでIPアドレスから国への変換を行うために、GeoIPをサーバーにインストール。以下インストールの覚え書き。
GeoIPとは
GeoIPはMaxMindが提供するIPアドレスの位置情報データベース。データベースとウェブサービスがそれぞれ有料で提供されている。無料のGEOロケーションデータも配布されているので、これを自前のウェブサーバーで使うことも可能。でも、IPアドレス割り当ては日々変化しているだろうから、正確な判定が必要ならば有料データを定期的に更新しながら使うべきだろうな。
MaxMind – IP Geolocation and Online Fraud Prevention
http://www.maxmind.com/en/home
mod_geoip2 Apache module « Maxmind Developer Site
http://dev.maxmind.com/geoip/legacy/mod_geoip2/
インストール手順
やってみるとインストールは結構簡単。
|
# cd /usr/local/src # wget http://www.maxmind.com/download/geoip/api/c/GeoIP.tar.gz # tar xzvf GeoIP.tar.gz # cd GeoIP-1.4.8 # ./configure # make # make install # |
geoipのツールは/usr/local/binに、データベースは/usr/local/share/GeoIPにインストールされる。ちゃんと動くかどうか、コマンドラインでテスト。
|
# cd /usr/local/bin/ # geoiplookup whitehouse.gov GeoIP Country Edition: US, United States # geoiplookup google.com GeoIP Country Edition: US, United States # geoiplookup rakuten.co.jp GeoIP Country Edition: JP, Japan # |
ちゃんと動いたので、Apacheで使えるようにモジュールをインストール。
|
# cd /usr/local/src/ # wget http://www.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2-latest.tar.gz # tar zxvf mod_geoip2-latest.tar.gz # cd mod_geoip2 # apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c # |
以下フォルダを確認してモジュールが存在するかチェック。
|
/etc/apache2/mods-available/geoip.load /etc/apache2/mods-enabled/geoip.load -> ../mods-available/geoip.load |
問題なさそうなので、.htaccessで有効化しておく。
|
/var/www/.htaccess GeoIPEnable On |
Apacheを再起動する必要あるか?念のため。
|
/etc/init.d/apache2 restart |
参考サイト
GeoIPのインストール | Read it later.
http://readit.l8r.in/2013-02-22/geoip%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/
雑記: GeoIPでアクセス制御 – ng-circuit.net
http://www.ng-circuit.net/tbox/6-2013-05-03-geoip