Настройка GeoIP (PECL) при помощи Piwik на сервере Ubuntu 12.04

Piwik позволяет выяснить страну пользователя на основе языка, который он использует. Несомненно, это не самый надежный и подходящий способ определить местонахождение пользователей. К примеру, пользователь, находящийся в Испании, может работать на компьютере, который по умолчанию использует английский (EN-US). Поскольку Piwik определяет страну посетителя сайта, исходя из использованного языка, такой пользователь будет определён как посетитель из США.

База данных GeoIP позволяет определить местонахождение пользователя на основе его IP-адреса. Репозиторий модулей PECL (PHP Extension Community Library) предоставляет гораздо более быстрое решение, чем MaxMind, поскольку не требует загружать БД каждый раз.

Требования

Для выполнения руководства нужно иметь пользователя с привилегиями root (подробнее – в этом руководстве). Кроме того, нужно предварительно установить и настроить Piwik в root-каталоге Apache (/var/www/piwik). Подробные инструкции по установке Piwik можно найти здесь.

1: Подготовка системы

Для начала нужно установить build-essential; этот пакет содержит список пакетов, которые считаются необходимыми для сборки программ Debian:

sudo apt-get install build-essential

Затем нужно установить PEAR при помощи менеджера пакетов apt-get:

sudo apt-get install php-pear

Далее нужно установить пакет php5-dev, чтобы получить исходные файлы PHP5, необходимые для компиляции модулей:

sudo apt-get install php5-dev

2: Установка GeoIp

Запустите следующую команду:

sudo apt-get install php5-geoip php5-dev libgeoip-dev

Чтобы установить geoip, используйте:

sudo pecl install geoip

3: Настройка PHP

После завершения установки, скорее всего появится сообщение вроде «extension= line cannot be found in your php.ini file». Чтобы устранить ошибку, нужно просто открыть php.ini и добавить недостающие строки.

sudo nano /etc/php5/apache2/php.ini

Добавьте в раздел [PHP] строку extension=geoip.so

[PHP]
;AFTER THE PHP SECTION NOT BEFORE
extension=geoip.so

Затем нужно добавить строку «geoip.custom_directory=/path/to/piwik/misc» в раздел [gd]:

[gd]
;AFTER THE gd SECTION NOT BEFORE
geoip.custom_directory=/var/www/piwik/misc

4: Создание базы данных GeoIP

Загрузите и распакуйте базу данных GeoIP:

cd /var/www/piwik/misc
sudo wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
sudo gunzip GeoLiteCity.dat.gz

Расширение PECL не узнает базу данных, если она называется GeoLiteCity.dat; чтобы PECL распознал БД, нужно переименовать её в GeoIPCity.dat:

sudo mv GeoLiteCity.dat GeoIPCity.dat

Перезапустите веб-сервер Apache:

sudo service apache2 restart

5: Настройка Piwik для использования GeoIP PECL

В браузере войдите на страницу Piwik, откройте настройки, затем Geolocation, и выберите GeoIP (PECL) в качестве Location Provider.

6: Обновление базы данных GeoIP (опционально)

Чтобы повторно распознать отслеженные ранее посещения, введите:

cd /var/www/piwik/misc/others
sudo php geoipUpdateRows.php

Этот процесс займёт немало времени (это зависит от количества посещений, которое нужно обработать).

1 rows to process in piwik_log_visit and piwik_log_conversion...
0% done...
100% done!

Обратите внимание: база данных GeoLite обновляется в первый вторник каждого месяца. Рекомендуется своевременно обновлять БД GeoIP, так как провайдеры очень часто перераспределяют диапазоны IP-адресов.

Tags: , , , , ,