GeoIP для Apache 1.х и 2.x

Неплохой модуль для apache1.х и 2.х версий — по IP посетителя определяется его страна, регион и город. Может пригодиться, чтобы зарубить левых посетителей к примеру по странам…
Скачиваем нужные файлы:
cd /tmp
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

Для Apache 1.x:
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip/mod_geoip_1.3.4.tar.gz
Или смотрите какой есть последний http://geolite.maxmind.com/download/geoip/api/mod_geoip/

Для Apache 2.x:
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
Или смотрите какой есть последний http://geolite.maxmind.com/download/geoip/api/mod_geoip2/

Ставлю на Apache 2.x и пример дальше идет под 2.х:

Распаковываем файлы:
cd /tmp
tar xzf GeoIP.tar.gz
tar xzf mod_geoip2_1.2.5.tar.gz
gunzip GeoLiteCity.dat.gz
gunzip GeoIP.dat.gz

Приступаем к установке главного пакета для GeoIP и копируем ему новые базы:
cd /tmp/GeoIP-1.4.6
./configure
make install clean
cd /tmp
cp *.dat /usr/local/share/GeoIP/

Теперь компилируем модуль для Apache 2.x (в моем случае стоит directadmin на сервере и в нем используется файл apxs, у Вас может быть apxs2):
cd /tmp/mod_geoip2_1.2.5
apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c

Теперь добавим строки в файл httpd.conf (в моем случае он находится /etc/httpd/conf/httpd.conf):
LoadModule geoip_module /usr/lib/apache/mod_geoip.so
<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
GeoIPOutput All
</IfModule>

Перезагружаем Apache…

Проверяем модуль…
Создадим страничку со следующим кодом php, к примеру страницу geoip.php:
<pre>
Откуда припёрся:
<?php
$country_code = apache_note(«GEOIP_COUNTRY_CODE»);
$region = apache_note(«GEOIP_REGION»);
$country_name = apache_note(«GEOIP_COUNTRY_NAME»);
$city = apache_note(«GEOIP_CITY»);
echo «Код страны: » . $country_code . «\n»;
echo «Регион: » . $region . «\n»;
echo «Имя страны: » . $country_name . «\n»;
echo «Город: » . $city . «\n»;
?>
</pre>

Ну и смотрим, что нам выдало…

Опубликовано в Установка/Настройка ПО

Рубрики