在RHEL / CentOS 6.3 / 5.8中为Apache安装Mod_GeoIP

本操作指南说明如何使用带有YUM软件包管理器实用程序的EPEL存储库在RHEL / CentOS 6.3 / 5.8中为Apache设置和安装Mod_GeoIP模块。

Mod_GeoIP模块用于获取访问者的IP地址的地理位置到Apache Web服务器。 这个模块允许您确定访问者的国家组织位置 这是地缘广告投放目标内容反垃圾邮件Cheat检测重定向/阻断基于自己的国家,游客更特别有用。

Install Mod_GeoIP for Apache

为Apache安装Mod_GeoIP

Mod_GeoIP有两个不同的版本,一个是免费的 ,另一种是付费和使用的MaxMind 的GeoIP / GeoCity数据库。

  1. 免费版本 :在自由版本的地理城市国家数据库 availble的99.5%的准确性。
  2. 付费版 :在付费版本,你将获得99.8%的准确率两个数据库有关IP地址一些细节advanaced。

如果你想看看betweetn 免费付费版本更多的差异,请访问Maxmind.com。

该如何引导解释了如何设置和使用EPEL资源库和YUM包管理工具在RHEL 6.3 / 6.2 / 6.1 / 6.0 / 5.8 的CentOS 6.3 / 6.2 / 6.1 / 6.0 / 5.8安装Mod_GeoIP模块的Apache。

我们假设您已经运行RHEL 6.3CentOS 6.3系统工作LAMP(Linux操作系统 ,Apache,MySQLPHP)的设置。 如果没有,那么请阅读我们的论文中,我们已经证明与LAMP两种操作系统的安装。

安装RHEL / CentOS 6.3
  1. 红帽企业Linux(RHEL)6安装指南与截图
  2. CentOS 6.3分步安装指南与截图
RHEL / CentOS 6.3上的LAMP设置
  1. RHEL / CentOS 6.3上的LAMP(Linux,Apache,MySQL,PHP)设置

在RHEL / CentOS 6/5中启用EPEL存储库

默认情况下mod_Geoip是不是在RHEL / CentOS的官方库中的即时拍摄的,所以我们需要安装并启用第三方EPEL软件库。

RHEL / CentOS 6
# wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
# rpm -Uvh epel-release-6-7.noarch.rpm
Preparing...                ########################################### [100%]
1:epel-release           ########################################### [100%]
RHEL / CentOS 5
# wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm -Uvh epel-release-5-4.noarch.rpm
Preparing...                ########################################### [100%]
1:epel-release           ########################################### [100%]

在RHEL / CentOS 6/5中安装Mod_GeoIP

一旦你的系统上启用EPEL软件库,你可以通过它们的相关性程序包运行以下命令,简单的安装。

# yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel

下载最新的地理城市和国家数据库

这是下载最新的地理城市国家数据库 ,以便及时不错的主意。

# cd /usr/share/GeoIP/
# mv GeoIP.dat GeoIP.dat_org
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoIP.dat.gz

在Apache中启用Mod_GeoIP

为了使mod_geoip模块,您需要打开/etc/httpd/conf/httpd.conf配置文件。

# vi /etc/httpd/conf/httpd.conf

并在底部添加以下代码行。

<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
</IfModule>

重新启动Apache服务以反映更改。

# /etc/init.d/httpd restart
OR
# service httpd restart

测试Mod_GeoIP模块

要测试mod_geoip模块与Apache正常工作,我们需要创造( 如在/ var / www / html等 )Apache的根目录下名为testgeoip.phpPHP文件。

# vi /var/www/html/testgeoip.php

插入以下一段php代码。

<html>
<head>
<title>What is my IP address and Country</title>
</head>
<body>
<?
if (getenv(HTTP_X_FORWARDED_FOR)) {
$pipaddress = getenv(HTTP_X_FORWARDED_FOR);
$ipaddress = getenv(REMOTE_ADDR);
echo "Your Proxy IP address is : ".$pipaddress. " (via $ipaddress) " ;
} else {
$ipaddress = getenv(REMOTE_ADDR);
echo "My IP address is : $ipaddress";
}
$country = getenv(GEOIP_COUNTRY_NAME);
echo "<br />My Country : $country";
?>
</body>
</html>

现在,尝试调用该文件使用Web浏览器( 例如http://localhost/testgeoip.php)。 你会得到你的IP地址国家的详细信息。

更新GeoIP数据库

GeoIP数据库每月开始更新。 因此,它是非常重要的保持GeoIP数据库的最新。 要下载最新版本的数据库,请使用以下命令。

# cd /usr/share/GeoIP/
# mv GeoIP.dat GeoIP.dat_org
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoIP.dat.gz

自动GeoIP数据库更新

我们编写了一个smaill shell脚本,每月会自动下载最新版本的GeoIP数据库。 只要将以下任何脚本下/etc/cron.monthly中

脚本1
# Automatic GeoIP Database Update from www.howtoing.com
#!/bin/sh
cd /usr/share/GeoIP
mv GeoIP.dat GeoIP.dat_org
wget -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gzip -d -f GeoIP.dat.gz
脚本2
#!/bin/sh
GEOIP_MIRROR="http://geolite.maxmind.com/download/geoip/database"
GEOIPDIR=/usr/share/GeoIP
TMPDIR=
DATABASES="GeoLiteCity GeoLiteCountry/GeoIP asnum/GeoIPASNum GeoIPv6"
if [ -d "${GEOIPDIR}" ]; then
cd $GEOIPDIR
if [ -n "${DATABASES}" ]; then
TMPDIR=$(mktemp -d geoipupdate.XXXXXXXXXX)
echo "Updating GeoIP databases..."
for db in $DATABASES; do
fname=$(basename $db)
wget --no-verbose -t 3 -T 60 "${GEOIP_MIRROR}/${db}.dat.gz" -O "${TMPDIR}/${fname}.dat.gz"
gunzip -fdc "${TMPDIR}/${fname}.dat.gz" > "${TMPDIR}/${fname}.dat"
mv "${TMPDIR}/${fname}.dat" "${GEOIPDIR}/${fname}.dat"
chmod 0644 "${GEOIPDIR}/${fname}.dat"
done
[ -d "${TMPDIR}" ] && rm -rf $TMPDIR
fi
fi

根据国家/地区重定向用户

下面的示例代码将重定向基于我们设置为AS( 亚洲 )国家代码的用户。 这样,您可以根据他们的县代码重定向任何用户。

GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
# Redirect one country
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AS$
RewriteRule ^(.*)$ http://www.howtoing.com$1 [R,L]

根据国家/地区阻止用户

此示例将根据GeoIP设置的国家/地区代码阻止用户。 下面的例子将阻止来自AS( 亚洲 )和美国美国 )国家的用户。

GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE AS BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry
# ... place more countries here
Deny from env=BlockCountry

根据国家/地区允许用户

以下示例将只允许来自下面提到的国家的用户。

GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE AS AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
# ... place more countries here
Deny from all
Allow from env=AllowCountry

有关mod_geoip及其用法的详细信息可以在这里找到http://www.maxmind.com/app/mod_geoip 如果你在设置mod_geoip模块有任何麻烦,请通过评论让我们知道,请不要忘记与你的朋友分享。