如何设置和使用GeoIP Lite

时间:2013-02-23 19:03:46

标签: php database phpmyadmin

我需要能够使用MaxMind GeoLite版本来查找用户国家/地区,城市和Longitude/Latitude。除了经度/纬度所需的数据库之外,数据库对于我需要的数据库来说是显而易见的。

需要数据库;

  • GeoLite Country
  • GeoLite City
  • 我还需要什么,或者可以通过上述数据库找到longitude/latitude

您可以下载多个版本。以下是您可以下载的列表;

  • Binary / gzip
  • Binary / xz
  • CSV / gzip
  • CSV / zip
  • CSV / xz

我不明白这些意思是什么,并希望有一些帮助来确定我需要下载哪一个。

虽然我能够使用我的1and1商业帐户,但我还没有与数据库做任何事情。任何人都可以告诉我如何设置数据库并将这些文件上传到它?

最后,我在哪里可以找到有关使用我的新数据库的帮助,从中读取,回显用户位置以及页面的内容?

感谢您的时间和任何先进的帮助。

最诚挚的问候, 添

2 个答案:

答案 0 :(得分:1)

如果您可以直接访问服务器/命令行,则可以使用二进制格式。这提供了更好的性能,但您需要更改PHP配置以安装GeoIP扩展或Pecl包。然后,您可以访问一些方便的PHP函数:http://www.php.net/manual/en/ref.geoip.php

此处的完整文档:http://www.php.net/manual/en/book.geoip.php

如果您无权访问服务器配置,则可以下载CSV版本并将其导入MySQL数据库。然后,您可以直接访问数据,并可以编写相关查询以生成应用程序所需的结果。如果您使用的是PHP MyAdmin MySQL面板,则可以直接下载CSV gz或zip并上传/导入。您需要先创建表。请记住在相关列上创建索引。

GeoLite City包含两个表,IP区块/城市和城市位置(lat / lng)。 GeoLite国家/地区仅包含IP块和国家/地区名称。

如果您不需要IP数据,世界城市数据库可能更合适:http://www.maxmind.com/en/worldcities

- 编辑

如果您只关心geoIP城市数据的第二个文件,则以下SQL将创建一个包含必要列的表:

DROP TABLE IF EXISTS location;
CREATE TABLE location(
    locId int(10) unsigned NOT NULL,
    country char(2) NOT NULL,
    region char(2) NOT NULL,
    city varchar(50),
    postalCode char(5) NOT NULL,
    latitude float,
    longitude float,
    dmaCode integer,
    areaCode integer,
    PRIMARY KEY (locId)
);

Google是您的朋友:http://odkq.com/geolitecity

答案 1 :(得分:0)

许多使用GeoIP的方法

使用GeoIP至少有三种方法:

  • 将GeoIP安装为PHP PECL扩展(适用于Apache或NginX),并通过PHP访问它(还有其他语言,这只是一种比较常见的。需要root和访问命令行。
  • 使用使用GeoIP(如上所述安装)的分析包,例如开源Piwik
  • 如果你使用像Wordpress这样的东西,至少有一个不需要root的插件(GeoIP Detect)。

一般情况下,地理数据数据库不是您可以直接访问的数据库,而是使用某种应用程序进行查找(针对IP地址)。

以下是安装GeoIP Lite数据库并将其提供给PHP的一些说明。这假设是CentOS / RHEL和Apache

在CentOS / RHEL和Apache上安装GeoIP Lite

sudo mkdir /usr/share/GeoIP 
sudo cd /usr/share/GeoIP
sudo wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
sudo wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
sudo gunzip GeoIP.dat.gz
sudo gunzip GeoLiteCity.dat.gz
sudo yum update -y
sudo yum install -y geoip geoip-devel
sudo pecl channel-update pecl.php.net
sudo pecl install geoip
sudo nano /etc/php.d/geoip.ini

将以下内容添加到geoip.ini文件

extension=geoip.so
geoip.custom_directory = /usr/share/GeoIP/

重新启动网络服务器

GeoIP for PHP

下可用的地理变量

以下变量可通过GeoIP PHP functions获得:

  • 国家
  • 地区(省,州)
  • 邮政编码
  • 纬度
  • 经度
  • DMA(US / CA)
  • 电话区号(仅限PSTN / NA)
  • 时区