Akira Tsumuraです。普段はのんびりKUSANAGIサーバのトラシュをしています。
KUSANAGIアドベントカレンダー 8日目を担当します。
今回は、KUSANAGI上のLAMP/LEMPアプリケーション上で、アクセス元の国判別をする方法を記述してみたいと思います。
■GeoIP2とは?
MAXMIND社による、IPアドレス及び地理情報のデータベース、およびそれを利用するライブラリを指します。
https://www.maxmind.com/ja/geoip-demo
オープンソースデータの場合、国情報および都道府県情報(但し精度は荒い)がリリースされています。
有償のデータの場合、より高精度なデータが提供されます。
■GeoIP2ライブラリのインストール
kusanagiユーザ上の任意のディレクトリで、以下のコマンドを実行します。
$ curl -sS https://getcomposer.org/installer | php7 $ php7 composer.phar require geoip2/geoip2:~2.0
併せて、オープンソース版のライブラリをダウンロードして展開します。 $ wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz $ gzip -d GeoLite2-City.mmdb.gz
以下のサイトにあるサンプルコードを実行しましょう。
https://github.com/maxmind/GeoIP2-php
以下のように、IPアドレスを元に国名・市町村名・緯度経度といった情報を調べることができます。 $ php7 demo.php US United States 美国 Minnesota MN Minneapolis 55414 44.9759 -93.2166
このライブラリはComposerによるライブラリですので、PHP5.6・HHVMでも同様に実行可能です。
$ php demo.php
$ hhvm demo.php
■KUSANAGI上での注意点
KUSANAGI上ではfcache(FastCGI Cache)が有効となっている場合があり、PHPの出力結果がキャッシュされてしまいます。
よって、fcacheは無効にする事を推奨します。
■おわりに
Q:クリスマスの予定は?
A:原稿デス・・・。TωT
明日は、僕の後ろの席のはせべー、よろしく☆