Информация берётся из специальной базы, лучшая из которых находиться на сайте MaxMind.
В настоящее время существует множество разных скриптов и плагинов к скриптам, которые в своей работе используют именно это расширение. Однако некоторым из них достаточно работы GeoIP как модуля apache (mod_geoip) а некоторым этого мало и они хотят расширения GeoIP в PHP или Perl.
Следующая инструкция подойдет для установки GeoIP на CentOS, RedHat, Fedora с панелью управления WHM/CPanel
Все действия делаются в командной строке на сервере по SSH
1. Добавляем репозиторий EPHEL: Сайт
CentOS 5
для i386
http://dl.fedoraproject.org/pub/epel/5/i386/
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
для x86_64 (64-битной системе)
http://dl.fedoraproject.org/pub/epel/5/x86_64/
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64//epel-release-5-4.noarch.rpm
CentOS 6
для i386
http://download.fedoraproject.org/pub/epel/6/i386/
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
для x86_64 (64-битной системе)
http://download.fedoraproject.org/pub/epel/6/x86_64/
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
2. Устанавливаем GeoIP при помощи yum:
yum install geoip geoip-devel
3. Скачиваем базы IP адресов, создаем директорию для баз и копируем в нужное место:
mkdir /usr/local/share/GeoIP
cd /usr/local/share/GeoIP
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gzip -d GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gzip -d GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz
gzip -d GeoIPv6.dat.gz
Последние базы, и правильность названия файлов, можно посмотреть на сайте
http://geolite.maxmind.com/download/geoip/database/
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/
4. Устанавливаем модуль mod_GeoIP для Apache на сервер или VPS
wget http://docs.cpanel.net/twiki/pub/EasyApache3/CustomMods/custom_opt_mod-mod_geoip.tar.gz
tar -C /var/cpanel/easy/apache/custom_opt_mods -xzf custom_opt_mod-mod_geoip.tar.gz
Пересобираем Apache и выбираем модуль GeoIP
/scripts/easyapache
Это можно сделать и через WHM, в разделе Software > EasyApache (Apache Update)
Установка займет от 20-40 минут, зависит от загруженности и производительности сервера/vps
5. Подгружаем модуль mod_GeoIP в Apache
vi /usr/local/apache/conf/includes/pre_virtualhost_global.conf
Вписываем:
GeoIPEnable On
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
GeoIPDBFile /usr/local/share/GeoIP/GeoIPv6.dat
Перезапускаем Apache:
service httpd restart
Это можно сделать и в WHM в разделе Service Configuration > Include Editor > Pre VirtualHost Include (All Versions)
6. Устанавливаем расширение GeoIP как модуль php
Если же GeoIP нужен как модуль php, то проделываем следующее:
wget http://pecl.php.net/get/geoip-1.0.8.tgz
tar xvfz geoip-1.0.8.tgz
cd geoip-1.0.8
phpize
./configure
make
make install
Последнюю версию можно скачать с сайта PECL : http://pecl.php.net/package/geoip
Открываем файл php.ini
vi /usr/local/lib/php.ini
Добавить туда строку:
extension=geoip.so
добавляем где то к концу файла, где подгружаются различные расширение
Перезапускаем Apache:
service httpd restart
Проверить то, что модуль установлен и корректно работает можно командой php -m или php -m | grep geoip
Так же можете создать файл с выводом phpinfo на сервере, и отобразить это через браузер.
7. Устанавливаем GeoIP как модуль perl (если нужен)
Скачиваем последнюю версию с сайта PEAR http://pear.php.net/package/Net_GeoIP/download/
wget http://download.pear.php.net/package/Net_GeoIP-1.0.0RC3.tgz
Устанавливаем:
pear install Net_GeoIP-1.0.0RC3
Путь к бинарному файлу:
/usr/local/bin/geoiplookup
/usr/local/bin/geoiplookup6
На этом установка закончена!
P.S. , может кому понадобится, так тоже работает
Есть вариант не пересобирать Apache через EasyApache а сделать так:
Скачиваем последнюю версию модуля с сайта maxmind и устанавливаем, в место 4-го пункта описанного выше.
wget -c http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
tar -xzf mod_geoip2_1.2.5.tar.gz
cd mod_geoip2_1.2.5/
/usr/local/apache/bin/apxs -lGeoIP -cia mod_geoip.c
Откроя файл конфигурации апача:
vi /usr/local/apache/conf/httpd.conf
Вы должны обнаружить :
LoadModule geoip_module modules/mod_geoip.so
Значить все в порядке.,
Остальные пункты делаем как все написано.