понедельник, 1 марта 2010 г.

Webalizer + geoip

1. Установка Webalizer со статистикой по странам
Хочется статистику по странам - заодно и установим Webalizer ->
apt-get install webalizer
ln -s /var/www/webalizer /home/sites/plusminus1.com/www/webal
обновляем GeoIP для корректного отображения стран:
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
копируем ее в папку /usr/share/GeoIP
раскомментируем в /etc/webalizer 2 строки, связанные с GeoIP
если нужно, настраиваем формат лог apache - "combined" дает например детальную статистику, но плодит километров логов.
Потом пишем скрипт (например webstat):
====
webalizer /home/sites/plusminus1.com/logs/custom_log
======
запускаем наш webstat
по адресу http://plusminus1.com/webal видим нашу статистику
2. Использование GeoIP в Apache
apt-get install libapache2-mod-geoip
/etc/init.d/apache2 restart
скриптик для проверки:
=====

$ip= getenv("REMOTE_ADDR");
$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 "Откуда припёрся: " . $ip . "\n";
echo "Код страны: " . $country_code . "\n";
echo "Регион: " . $region . "\n";
echo "Имя страны: " . $country_name . "\n";
echo "Город: " . $city . "\n";
?>

======
Откуда припёрся: 86.57.220.209
Код страны: BY
Регион:
Имя страны: Belarus
Город:
$region и $city не показывает - для этого нужны другие базы (кроме умолчательной /usr/share/GeoIP/GeoIP.dat)
скачаем базу GeoLiteCity:
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
и разархивируем ее в /usr/share/GeoIP.
настройки для apache2 находятся в файле /etc/apache2/mods-available/geoip.conf
напишем там:
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
после перезагрузки apache2 видим, что город определился, но он - Новолукомль, а не Витебск (база бесплатная, поэтому такие накладочки)
Откуда припёрся: 86.57.220.209
Код страны: BY
Регион: 07 Имя страны: Belarus
Город: Novolukoml
3. PHP и GeoIP
А если уже есть 10000 IP в моей базе юзеров и нужно узнать, откуда они ходили. Для PHP есть extension с аналогичным названием. Для debian-lenny можно установить пакет php5-geoip. Для более ранних версий - компилировать. Но повторимся - используя lite-базу - будем иметь погрешность в определении города.
Можно попользоваться плагином с geoplugin.net - но там вроде-бы есть ограничения на количество запросов - в общем, как тулзину для своих целей, если php-скрипт нужно запускать изредка, то можно, но нет гарантии что будет доступно/ не сделают платным.

источник: http://www.cooldrinking.com/index.php?option=com_content&view=article&id=18:webalizer&catid=5:linux-&Itemid=10

Комментариев нет:

Отправить комментарий