GeoIP,是一套含IP数据库的软件工具。

Geo根据来访者的IP, 定位该IP所在经纬度、国家/地区、省市、和街道等位置信息。

GeoIP有两个版本,一个免费版,一个收费版本。

收费版本的准确率高一些,更新频率也更频繁。

因为GeoIP读取的是本地的二进制IP数据库,所以效率很高,比从APNIC读取再转换高很多。

PHP支持通过扩展方式读取GeoIP数据。

本文介绍CentOS和Ubuntu系统的安装和使用方法。

1 安装GeoIP

命令方式安装:

yum install geoip geoip-devel # CentOS

apt-get install php5-geoip php5-dev libgeoip-dev # Ubuntu

或者通过源码方式安装,两者选择其一:

GeoIP安装完成后,IP库文件会安装在这个目录下:/usr/share/GeoIP。

2 安装geoip扩展

编译成动态库:

$ wget https://pecl.php.net/get/geoip-1.1.1.tgz

$ cd geoip-1.1.1

$ phpize

$ ./configure

$ make

$ sudo make install

安装完成后,在/usr/lib64/php/modules/目录下(64位系统)生成geoip.so链接库。

打开php.ini文件,在最后加上:

extension=geoip.so

重启PHP-FPM就可以用了。

3 PHP中使用

示例:

$data = geoip_record_by_name('php.net');

print_r($data);

输出:

Array

(

[continent_code] => NA

[country_code] => US

[country_code3] => USA

[country_name] => United States

[region] => CA

[city] => Milpitas

[postal_code] => 95035

[latitude] => 37.440399169922

[longitude] => -121.87049865723

[dma_code] => 807

[area_code] => 408

)

4 更新IP库

GeoIP默认使用Maxmind提供的IP库,这可以用geoip_database_info()方法看到。

例如我的显示:

GEO-106FREE 20170404 Build 1 Copyright (c) 2017 MaxMind Inc All Rights Reserved

Maxmind提供的IP库会在每个月的第一个星期二更新一次,所以我们在此时间后一天执行更新就能拿到最新的APNIC的IP库了。

首先查看是否有文件:/etc/GeoIP.conf。

如果没有,就创建一个,内容:

# The following UserId and LicenseKey are required placeholders:

UserId 999999

LicenseKey 000000000000

# Include one or more of the following ProductIds:

# * GeoLite2-City - GeoLite 2 City

# * GeoLite2-Country - GeoLite2 Country

# * GeoLite-Legacy-IPv6-City - GeoLite Legacy IPv6 City

# * GeoLite-Legacy-IPv6-Country - GeoLite Legacy IPv6 Country

# * 506 - GeoLite Legacy Country

# * 517 - GeoLite Legacy ASN

# * 533 - GeoLite Legacy City

ProductIds GeoLite2-City GeoLite2-Country GeoLite-Legacy-IPv6-City GeoLite-Legacy-IPv6-Country 506 517 533

然后在Linux下手动执行一遍更新命令:

geoipupdate -v

如果没有出错,就完成更新GeoIP库了。

4.1 crontab自动更新IP库

我们可以使用Linux crontab可以实现自动更新IP库。

使用如下命令打开当前用户的crontab文件:

crontab -e

添加一行:

30 2 * * 3#1 /usr/bin/geoipupdate

这一段的功能是,在每个月第一个星期三自动执行 geoipupdate 命令,执行时间在凌晨2点30分。

因为Maxmind是每月的第一个星期二更新IP库,所以我们选择延迟一点,避免时差引起误差。

然后重启 crond:

/sbin/service crond restart

如果有防火墙,geoipupdate需要 DNS 和HTTPS(443)端口打开。

4.2 手动更新IP库

如果用PHP更新,让PHP执行SHELL命令执行更新:

echo shell_exec('geoipupdate -v');

执行完成会打印出更新的相关信息。

如果不需要输出信息可以去掉-v参数。

有用地址:

geoip是什么 linux_GeoIP安装使用相关推荐

  1. geoip是什么 linux_GeoIP最快捷安装

    下载GeoIP数据包 mkdir /GeoIP cd /GeoIP wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCou ...

  2. RHEL 5.4 下安装和使用 ntop 全纪录(ntop:Linux下可通过Web访问的网络流量监控工具)...

    RHEL 5.4 下安装和使用 ntop 全纪录 1. ntop介绍 Ntop是一种监控网络流量工具,用ntop显示网络的使用情况比其他一些网络管理软件更加直观.详细.Ntop甚至可以列出每个节点计算 ...

  3. CYGwin/Centos7下安装Goaccess

    cd .. cd root/opt $ wgethttp://tar.goaccess.io/goaccess-1.1.1.tar.gz $ tar -xzvf goaccess-1.1.1.tar. ...

  4. nginx 访问日志分析工具 goacess

    2019独角兽企业重金招聘Python工程师标准>>> 20150702 nginx 访问日志分析 goacess 1.安装GoAccess需要一些系统支持库 yum install ...

  5. CentOS 6.5 Nginx 配置

    1.安装所有 http功能: ./configure --user=www-data --group=www-data --with-http_ssl_module --with-http_reali ...

  6. c语言中有关随机数的程序,C语言中随机数相关问题

    用C语言产生随机数重要用到rand函数.srand函数.及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明. int rand(void);//生成一个随机数 voidsrand ...

  7. nginx做地域限制

    转:https://blog.csdn.net/linux_newbie_rookie/article/details/78663721 对网页访问nginx做地域限制: 对国家地区或者是城市的限制通 ...

  8. 如何通过命令行查找一个IP的地理位置信息

    转载地址:http://www.geekfan.net/7863/ 如果你想查找一个IP地址在地球上的实际地理位置,现在已经有好多在线的GeoIp查找服务你可以利用(例如geoiptool.com). ...

  9. 局域网网络流量监控_Linux网络安全运维:网络流量监控与分析工具Ntop和Ntopng

    一次性付费进群,长期免费索取教程,没有付费教程. 进微信群回复公众号:微信群:QQ群:460500587  教程列表 见微信公众号底部菜单 |  本文底部有推荐书籍  微信公众号:计算机与网络安全 I ...

最新文章

  1. python数据处理与机器学习
  2. VMware vSAN紧盯虚拟化应用
  3. 职业生涯发展技巧20则
  4. 通过Spring将继承树加载到List中
  5. JavaScript:Browser 对象
  6. JQuery中使用Ajax赋值给全局变量失败异常的解决方法,jqueryajax
  7. Nginx服务器之负载均衡策略(6种)
  8. 第二次打开不是最大_第二次约会男生该干嘛,才能让关系更进一步?
  9. Java-Hashmap
  10. 小程序入门学习07--动态设置标题、转发
  11. java 删除列 csv,Java- CSV / Delete column in csv file
  12. 笔记3:数字和数学计算
  13. MySQL查询数据库日志的查询
  14. 【人脸关键点】——PFLD人脸关键点检测解读
  15. 【Opencv】图像分割——区域生长
  16. 一阶电路误差分析_自动控制原理 | 时域分析法
  17. 【宽创热点】为什么博物馆要展示古代糕点和比基督更古老的牛肉
  18. spring tx:advice(转)
  19. 离心泵水力设计——叶轮设计——2 前后盖板型线
  20. html网页页尾,终于认识网页页尾设计注意技巧

热门文章

  1. windows7内存诊断工具有用吗_开机windows内存诊断工具怎么打开_win7开机出现内存诊断工具如何使用...
  2. Oracle从11g导出后导入10g
  3. linux 查看目录挂载的ip,基于IP-SAN的存储Linux挂载
  4. 全国农村固定观察点调查数据
  5. 技巧分享:我的VM黑群晖安装及独特网络访问方案
  6. [心静不下来系列]bugku web继续 (带了标题)
  7. 2021年3月蓝桥杯STEMA考试正在报名
  8. IIS配置禁用匿名访问
  9. 【20211106】在技术上是如何实现分布式事务_V3(TCC)
  10. 湖师大2022考研复试准备