如何部署GeoIP的自动更新数据库服务(二进制)?

CDN技术

1 Geoip

1.1 Geoip的简介

– 所谓GeoIP,即是Geolocation IP的缩写,即基于IP定位地理位置。
– Geoip通过提供精准的数据库服务满足我们定位来访者客户端IP, 定位客户端经纬度、国家/地区、省市、甚至街道等位置信息。
– Geoip服务由Maxmind提供,官方网址,https://www.maxmind.com

1.2 Geoip的数据库分类

– CSV数据库(可编辑)
– 二进制数据库(查询速度快)

1.3 geoipupdate

即Geoip的二进制更新服务,该程序提供自动更新Geoip的二进制数据库的功能。

2 安装geoip更新服务

2.1 环境准备

2.1.1 环境信息

IP Address=10.168.0.51
HostName=geoip.cmdschool.org
OS=CentOS 7.3

2.1.2 卸载系统默认的rpm包

rpm -e --nodeps GeoIP-1.5.0-11.el7.x86_64

2.1.3 配置编译环境

yum -y install gcc gcc-c++ make expat-devel

2.1.4 下载安装包并解压

wget https://github.com/maxmind/geoipupdate/releases/download/v2.5.0/geoipupdate-2.5.0.tar.gz
tar -xf geoipupdate-2.5.0.tar.gz

2.2 编译安装

2.2.1 预先编译检查

cd geoipupdate-2.5.0
./configure --bindir=/usr/sbin/ \
            --sbindir=/usr/sbin/ \
            --sysconfdir=/etc/ \
            --libdir=/usr/lib64/  \
            --mandir=/usr/share/man/ \
            --includedir=/usr/include

根据提示解决依赖关系,

yum install -y zlib-devel libcurl-devel

2.2.2 编译程序

make

2.2.3 安装程序

make install

2.2.4 检查安装

whereis geoipupdate

显示如下:

geoipupdate: /usr/bin/geoipupdate /usr/sbin/geoipupdate /usr/share/man/man1/geoipupdate.1.gz /usr/share/man/man1/geoipupdate.1

2.3 配置Geoipupdate

2.3.1 修改配置文件

cp /etc/GeoIP.conf /etc/GeoIP.conf.save
egrep -v "^#|^$" /etc/GeoIP.conf

默认配置如下:

LicenseKey 000000000000
UserId 999999
ProductIds 506 533

注:如果你没有使用商业授权,使用免费的库即可。

2.3.2 创建数据库存储目录

mkdir -p /data/geoip

2.3.3 测试配置运行

geoipupdate -d /data/geoip -f /etc/GeoIP.conf

注:
-d 指定数据库存放的目录
-f 指定配置文件的位置

2.3.4 检查运行

ls -l /data/geoip

可见以下库文件:

total 18472
-rw-r--r-- 1 root root 17687934 Dec 19 16:15 GeoLiteCity.dat
-rw-r--r-- 1 root root  1195666 Dec 19 16:15 GeoLiteCountry.dat

2.3.5 配置自动更新

crontab -e

加入如下配置:

# top of crontab
    MAILTO=will@cmdschool.org
    41 6 * * 4 /usr/bin/geoipupdate -d /data/geoip -f /etc/GeoIP.conf
# end of crontab

参阅文档:
===============================
Geoip库
—————-
Geoip库(已经过期):
http://dev.maxmind.com/geoip/legacy/downloadable/
Geoip2库:
https://dev.maxmind.com/geoip/geoip2/downloadable/
手动下载的库:
http://dev.maxmind.com/geoip/geoip2/geolite2/

Geoip的自动更新
—————-
https://dev.maxmind.com/geoip/geoipupdate/

国家名称或地区参考
—————-
https://developers.google.com/adwords/api/docs/appendix/geotargeting#dma

没有评论

发表评论

CDN技术
如何实现任播(AnyCast)?

1 基础知识 1.1 AnyCast的概念 – AnyCast的本质是一种网络技术,他借 …

CDN技术
如何部署反向代理服务器Nginx?

1 理论部分 1.1 Reverse Proxy概念 是指以代理服务器来接受internet上的请求 …

CDN技术
如何部署具有CDN功能的Nginx模块?

1 Nginx的geoip模块 1.1 模块名称 ngx_http_geoip_module 1.2 …