什么是GeoIP ?
所谓GeoIP,就是通过来访者的IP, 定位他的经纬度,国家/地区,省市,甚至街道等位置信息的一个数据库。GeoIP有两个版本,一个免费版,一个收费版本。收费版本的准确率和数据更好一些。
GeoIP如何使用?
GeoIP支持多种语言调用,这里我们以PHP为例。
方法一
通过APT安装PHP对GeoIP的支持模块
1 apt-get install php5-geoip libgeoip1下载GeoIP数据库
1 2 wget -N -q http: // geolite.maxmind.com / download / geoip / database / GeoLiteCity.dat.gz wget -N -q http: // geolite.maxmind.com / download / geoip / database / GeoLiteCountry / GeoIP.dat.gz解压数据库
1 gzip -d GeoLiteCity.dat.gz复制GeoIP数据库到数据目录
1 cp GeoLiteCity.dat / usr / share / GeoIP / GeoIPCity.dat注:这里的路径和编译GeoIP C API所使用的–with-dbdir参数有关。
测试GeoIP
重启Apaceh
1 / etc / init.d / apache2 restart在Web目录下新建一个测试的PHP文件,这里以geoip.php为例:
1 2 3 4 5 6 vi / var / www / geoip.php < ?php $country = geoip_record_by_name ( '61.128.128.68' ) ; if ( $country ) { echo 'This host is located in: ' ; print_r ( $country ) ; } print geoip_db_filename ( GEOIP_COUNTRY_EDITION ) ; ? >访问这个文件,如出现下面类似信息,则表示成功了。
1 2 This host is located in : Array ( [ continent_code ] = > AS [ country_code ] = > CN [ country_code3 ] = > CHN [ country_name ] = > China [ region ] = > 33 [ city ] = > Chongqing [ postal_code ] = > [ latitude ] = > 29.562799453735 [ longitude ] = > 106.55280303955 [ dma_code ] = > 0 [ area_code ] = > 0 )方法二
通过源码方式安装
安装GeoIP C API
1 2 3 4 5 6 wget http: // geolite.maxmind.com / download / geoip / api / c / GeoIP.tar.gz tar xvzf GeoIP.tar.gz cd GeoIP-1.4.8 . / configure make make install通过pecl安装geoip模块。
1pecl install geoip
启用GeoIP PHP模块
1 2 vi / etc / php5 / conf.d / geoip.ini extension =geoip.so复制GeoIP数据库到数据目录
1 cp GeoLiteCity.dat / usr / local / share / GeoIP / GeoIPCity.dat注:这里的路径和编译GeoIP C API所使用的–with-dbdir参数有关。
测试GeoIP
重启Apaceh
1 / etc / init.d / apache2 restart在Web目录下新建一个测试的PHP文件,这里以geoip.php为例:
1 2 3 4 5 6 vi / var / www / geoip.php < ?php $country = geoip_record_by_name ( '61.128.128.68' ) ; if ( $country ) { echo 'This host is located in: ' ; print_r ( $country ) ; } print geoip_db_filename ( GEOIP_COUNTRY_EDITION ) ; ? >访问这个文件,如出现下面类似信息,则表示成功了。
1 2 This host is located in : Array ( [ continent_code ] = > AS [ country_code ] = > CN [ country_code3 ] = > CHN [ country_name ] = > China [ region ] = > 33 [ city ] = > Chongqing [ postal_code ] = > [ latitude ] = > 29.562799453735 [ longitude ] = > 106.55280303955 [ dma_code ] = > 0 [ area_code ] = > 0 )一些编译中常见的错误
如果你的系统中的libtool中的版本低于2.2.6b,可能会出现以下错误提示:
1 2 3 libtool: Version mismatch error. This is libtool 2.2.6 Debian-2.2.6a- 4 , but the libtool: definition of this LT_INIT comes from libtool 2.2.6b. libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6 Debian-2.2.6a- 4解决方法:先执行以下语句后,再重新编译。
1 2 3 4 autoreconf --force . / configure make make install参考文档
http://www.google.com
http://blog.chinaunix.net/space.php?uid=642374&do=blog&cuid=1944521
http://stackoverflow.com/questions/3096989/libtool-version-mismatch-error