zoukankan      html  css  js  c++  java
  • Ubuntu下安装GeoIP

    Ubuntu下安装GeoIP | 简单.生活

    Ubuntu下安装GeoIP

    Category : 工作学习 / Tags : GeoIP, linux, php, ubuntu / Date : 2011.09.10 / 485 views /

    什么是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模块。

    1
    
    pecl 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

  • 相关阅读:
    六、order set结构及命令详解
    五、set结构及命令详解
    四、redis的link结构及命令详解
    三、redis对字符串类型的操作
    二、redis对于key的操作命令
    一、redis的特点以及安装使用
    Mysql5.7以上版本group by报错问题
    1.4 java高并发程序设计-无锁
    sysbench工具和mysql的基准测试
    sqli-labs(29-31关)
  • 原文地址:https://www.cnblogs.com/lexus/p/2567612.html
Copyright © 2011-2022 走看看