|
|
А говорят, что они хищники… | Cистемные сетевые утилиты через интерфейс Wordpress (ping, whois, dig и т.д.). Простые PHP скрипты |
|
Шкафы для детским комнат на kupe.ru
|
Анализ логов веб сервера и представление статистики посещаемости веб сайта посредством AwStats
Нормальное явление, что каждый владелец веб сайта желает знать сколько людей к нему приходит на сайт, откуда приходит, что больше всего читает, сколько времени в целом проводит на сайте. Для удовлетворения такого любопытства было придумано масса средств для сбора статистики. Множество сервисов в Сети предлагает Вам поставить на своем сайте счетчик, который обычно представляет собой JavaScript и который, при входе посетителя на сайт, подгружается в его веб браузер и сообщает сервису статистики всю необходимую информацию о посетителе.
Но не всегда такая статистика точна. Дело в том, что многие посетители используют прокси серверы, которую в свою очередь могут запрещать передачу javascript’ов и попросту вырезают их при отдаче контента. Другие браузеры могут быть настроены на то, чтобы не загружать ничего лишнего, кроме самого контента с запрашиваемого ресурса… Статистика получается размытой и неточной.
Пожалуй, самый точный способ учета посетителей сайта - анализ логов веб сервера и подсчет всех необходимых параметров исходя из записей в них. Этот способ, правда, не предоставит Вам информации о том, какое разрешение экрана используют посетители, глубину цвета их мониторов, информацию о поддержке браузерами flash и java. Но зато Вы получите самую точную статистику количества уникальных посетителей, просмотров страниц и всего того, что фиксирует в логах Ваш веб сервер.
Существует несколько разных программ-анализаторов логов доступа к веб сайту. Я в своей практике использовал Webalizer и AWStats. Последний мне, честно говоря, понравился больше и я использую для самостоятельного подсчета статистики именно его. Про конфигурирование AWStats я и хотел бы рассказать.
Итак, AWStats - это открытое программное обеспечение, написанное на языке Perl, которое предназначено для распарсивания логов доступа к веб серверу и генерации отчетов, которые можно просмотреть в виде веб-страниц. Вообще, посредством AWStats можно собирать статистику не только веб сервера. AWStats также вполне способен распарсить логи почтового и ftp серверов. Но здесь эти варианты пока что рассматривать не будем.
Имеем сервер Apache и установленный perl 5.8.8 на операционной системе FreeBSD 6.3. От этого и будем отталкиваться. AWStats можно установить из коллекции портов.
# whereis awstats awstats: /usr/ports/www/awstats # cd /usr/ports/www/awstats # make install clean
Вылезет синее окошко, в котором будет предлагаться всего одна опция для установки: "Использование IPv6 протокола". Я ее не отмечаю, ибо до IPv6 нам еще не скоро светит добраться. Жмем "ОК" и ждем окончания процесса установки.
По окончании вылезет сообщение, в котором будет краткая инструкция по подключению AWStats к нашему веб-серверу:
************************************************************** Please add the following to your apache config, and restart. # # Directives to allow use of AWStats as a CGI # Alias /awstatsclasses "%%PREFIX%%/www/awstats/classes/" Alias /awstatscss "%%PREFIX%%/www/awstats/css/" Alias /awstatsicons "%%PREFIX%%/www/awstats/icons/" ScriptAlias /awstats/ "%%PREFIX%%/www/awstats/cgi-bin/" # # This is to permit URL access to scripts/files # in AWStats directory. <Directory "%%PREFIX%%/www/awstats/"> Options None AllowOverride None Order allow,deny Allow from all </Directory> ************************************************************** If you are upgrading from AWStats 6.4 or older, please note the following: If you used the geoip plugin, you must edit your AWStats config file to change the line LoadPlugin="geoip GEOIP_STANDARD" into LoadPlugin="geoip GEOIP_STANDARD /pathto/GeoIP.dat" **************************************************************
Последний абзац в двух словах говорит нам о том, что можно использовать плагин GeoIP, который позволяет выдавать статистику по странам. Данная статистика собирается с помощью базы данных GeoIP.dat. Получить его можно установив программу GeoIP. Кстати, для использования возможностей GeoIP, хоть это и не написано, но нам также понадобится Perl модуль p5-Geo-IP, иначе AWStats не сможет использовать данную функцию. Устанавливаем:
# whereis p5-Geo-IP p5-Geo-IP: /usr/ports/net/p5-Geo-IP # cd /usr/ports/net/p5-Geo-IP # make install clean ... # whereis GeoIP GeoIP: /usr/ports/net/GeoIP # cd /usr/ports/net/GeoIP # make install clean
Все. Теперь все готово для того, чтобы приступить к конфигурированию нашего AWStats.
По-умолчанию, AWStats при установке копирует свои файлы в каталог /usr/local/www/awstats. В нем хранятся каталоги cgi-bin - в котором находится основной скрипт AWStats - awstats.pl; каталоги css, icons - для оформления генерируемых веб страниц и т.д. В настоящий момент нас будет интересовать файл /usr/local/www/awstats/cgi-bin/awstats.model.conf, который является основной моделью для построения конфигов awstats под Ваши сайты. Комментарии в файле начинаются так:
# AWSTATS CONFIGURE FILE 6.6 #-------------------------------------------------------------- # Copy this file into awstats.www.mydomain.conf and edit # this new config file to setup AWStats (See documentation # in docs/ directory). The config file must be in /etc/awstats, # /usr/local/etc/awstats or /etc (for Unix/Linux) or same # directory than awstats.pl (Windows, Mac, Unix/Linux...) # To include an environment variable in any parameter (AWStats # will replace it with its value when reading it), follow # the example: # Parameter="__ENVNAME__" # Note that environment variable AWSTATS_CURRENT_CONFIG is # always defined with the config value in an AWStats running # session and can be used like others. #--------------------------------------------------------------
Вообще, текущая версия AWStats - 6.7, тем не менее в дистрибутиве при установке из портов лежит конфиг для версии 6.6. Видать существенных отличий в этих версиях нет. Комментарии гласят: "Скопируйте этот файл в файл awstats.адрес_моего_сайта.conf и отредактируйте его для новой установки AWStats. (Почитайте документацию в каталоге doc/). Конфиг нового сайта следует поместить в один из следущих каталогов: /etc/awstats, /usr/local/etc/awstats или /etc (для Unix пользователей). Либо в ту же директорию, где лежит файл awstats.pl (для Windows, Mac, Unix…). Для включения переменных окружения с любыми параметрами (AWStats при чтении подставит им их значения), следуйте следущему шаблону: Parameter="__ENVNAME__". Учтите, что переменная окружения AWSTATS_CURRENT_CONFIG определена всегда согласно значению конфигурационного файла и может быть использована наравне с другими".
Вобщем, поступаем здесь таким образом. Для начала создаем каталог /etc/awstats, выставляем на него соответствующие права и копируем в него файл конфигурации нашего сайта. Сайт называется test.daemony.org, а файлы сайта размещены в каталоге /usr/local/www/test.daemony.org/
# mkdir /etc/awstats # cp /usr/local/www/awstats/cgi-bin/awstats.model.conf /etc/awstats/awstats.test.daemony.org.conf # chmod -R o-rwx /etc/awstats && chown -R www:www /etc/awstats
Приступим к редактированию конфига, который сам по себе довольно немаленький. А потому, подробно я изложу здесь только его основную конфигурацию, дабы можно было awstats заставить работать.
Эта часть публикации доступна только зарегистрированным посетителям!
Пожалуйста, войдите [Login] или зарегистрируйтесь [Register].
Был показан пример основной конфигурации. С такими параметрами AWStats уже может быть запущен. Но я бы исправил еще несколько опций в дополнительных параметрах файла. В первую очередь подключим наш плагин GeoIP. Воспользуйтесь поиском по файлу и найдите в нем такую строку:
# LoadPlugin="geoip GEOIP_STANDARD /pathto/GeoIP.dat"
Раскомментируйте ее и укажите путь к файлу с базой GeoIP.dat. Обычно это выглядит так:
LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"
Еще следует подумать о том, что Вы будете также посещать свой сайт, причем гораздо чаще других посетителей, а потому может быть стоит исключить свой IP из статистики, дабы не портить ее? Я на собственном опыте убедился что эта мера не лишняя. Правда уже было поздно, но лучше поздно чем никогда. Ищем в конфиге строчку:
SkipHosts=""
и меняем ее на:
SkipHosts="server.myhome.com 192.168.0.75"
и так далее. Через пробел можно указывать IP адреса либо имена хостов заходы на сайт с которых не будут обсчитываться. Аналог этой опции:
SkipFiles=""
Только в данном случае из подсчета статистики исключаются определенные файлы сайта. Тоже не помешает, уж поверьте.
SkipFiles="/some/script-for-useronline-stat.php /admin.php"
Страницы также указываем через пробел. Можно использовать регулярные выражения.
Антипод опции SkipHosts - это:
OnlyHosts=""
Можно настроить awstats на обсчет статистики только с одного какого-то IP/хоста, указав в OnlyHosts="" имя или IP адрес того хоста, которого будете обсчитывать. Можно использовать регулярные выражения.
Антипод опции SkipFiles:
OnlyFiles=""
Здесь наоборот можно настроить awstats на обсчет статистики только судя по загрузке какого-то одного или нескольких файлов. Можно использовать регулярные выражения.
Вот в принципе и все, что нужно поменять в основном конфиге AWStats. Если Вам не понравится стандартный стиль страницы статистики, Вы можете поменять в нем все, что угодно, редактируя соответствующие параметры.
Добавьте в конфигурационный файл веб сервера Apache httpd.conf в контейнер того виртуального хоста (test.daemony.org), для которого необходим обсчет статистики, следущие строки:
Alias /s/awstatsclasses "/usr/local/www/awstats/classes/" Alias /s/awstatscss "/usr/local/www/awstats/css/" Alias /s/awstatsicons "/usr/local/www/awstats/icons/" ScriptAlias /s/awstats "/usr/local/www/awstats/cgi-bin/" <Directory "/usr/local/www/awstats/cgi-bin/"> Options None AllowOverride None Order allow,deny Allow from all </Directory>
И перезапустите Apache через apachectl restart. Создадим каталоги, в которых будут храниться файлы данных AWStats:
# mkdir /usr/local/www/test.daemony.org/htdocs/s/ # mkdir /usr/local/www/test.daemony.org/htdocs/s/awsdata/ # chown -R www:www mkdir /usr/local/www/test.daemony.org/htdocs/
Сделаем первый запуск AWStats из командной строки, для того, чтобы он смог сгенерировать первые отчеты и все необходимые для работы файлы. Делается это так:
# cd /usr/local/www/awstats/cgi-bin/ # ./awstats.pl -config="test.daemony.org"
В параметр -config подставляется именно имя сайта. AWStats сам найдет для него нужный конфиг. Если все прошло успешно, AWStats покажет сколько он записей нашел и сколько добавил в свою базу. При первом запуске может появиться ошибка о том, что не найдены некоторые файлы. Но это нормально. В последствии ненайденные файлы будут созданы и ругани не будет.
Проверьте каталог с данными AWStats - у меня это /usr/local/www/test.daemony.org/htdocs/s/awsdata/ - в нем должен после первого запуска появиться файл статистики. Его имя будет выглядеть в формате: "awstats%MM%YYYY.sitename.txt". Имя содержит в себе информацию об отчетном периоде. Например: awstats012008.test.daemony.org.txt - говорит о том, что хранится информация о посещаемости сайта test.daemony.org за январь 2008 года.
Посмотреть статистику теперь можно будет по адресу http://test.daemony.org/s/awstats/awstats.pl Запоминать такой URL сложно, а потому для упрощения жизни положим в каталог /usr/local/www/test.daemony.org/htdocs/s/ файл index.html вот такого содержания:
<html> <head> <meta http-equiv="Refresh" content="0; url=awstats/awstats.pl"> <title></title> </body> </html>
Можно конечно и более красивое решение придумать, например, через mod_rewrite или просто php редирект использовать, но редирект HTML’ом будет работать на любом хостинге, даже на таком где отключен mod_rewrite и php.
Вот теперь другое дело. Запомнить адрес страницы статистики http://test.daemony.org/s/ гораздо проще. Пройдя по такой ссылке Ваш браузер будет перенаправлен по нужному URL к скрипту.
Не будем забывать о безопасности. Зачем демонстрировать всем подряд статистику Вашего сайта? Тем более, поскольку AWStats написан на Perl, отнести его к категории безопасных скриптов скорее нельзя, чем можно. Воспользуемся http авторизацией для того, чтобы давать доступ к статистике только по паролю для избранных пользователей. В простом виде это можно реализовать так.
Создаем каталог, в котором будет храниться файл с паролями, создаем пустой файл для паролей, выставляем все нужные права:
# mkdir /usr/local/www/test.daemony.org/pw/ # touch /usr/local/www/test.daemony.org/pw/stat.pwd # chmod -R o-rwx /usr/local/www/test.daemony.org/pw/ # chgrp -R www /usr/local/www/test.daemony.org/pw/
Теперь можно добавить пользователя в файл паролей. Для этого используем утилиту htpasswd, которая идет в комплекте вместе с Apache:
# cd /usr/local/www/test.daemony.org/pw/ # htpasswd site-stat Daemony New password: Re-type new password: Adding password for user Daemony
Закрываем на пароль директорию /usr/local/www/test.daemony.org/htdocs/s - добавим в .htaccess файл следущие директивы:
# На всяк случай запретим листинг директории Options -Indexes # Указываем путь к файлу с паролями пользователей # Следите, чтобы права на папки и файл позволяли # Apache читать его. AuthUserFile /usr/local/www/test.daemony.org/pw/stat.pwd # Файл с паролями групп пользователей нет. Директиву в null AuthGroupFile /dev/null # Текст, который отобразится в окошке ввода пароля в браузере. AuthName "Access Denied!" # Тип авторизации. Basic значит "открытый", "основной". # Кстати, пароли передаются в этом случае в открытом виде. AuthType Basic # Параметры использования файла паролей. # Нижеследущее указывает на то, что можно допускать любого # пользователя из файла с паролями. <limit GET POST> require valid-user </limit>
Таким же самым образом, следует защитить каталог /usr/local/www/awstats/cgi-bin/, иначе, при запросе http://test.daemony.org/s/ пароль будет запрашиваться, а при прямом обращении к скрипту по адресу http://test.daemony.org/s/awstats/awstats.pl не будет. Закрыть этот каталог, на мой взгляд, для большей безопасности лучше через httpd.conf. Добавим в контейнер с нашим VirtualHost‘ом test.daemony.org аналогичные строки в описание прав доступа к каталогу /usr/local/www/awstats/cgi-bin/.
<Directory "/usr/local/www/awstats/cgi-bin/"> Options Indexes FollowSymlinks MultiViews AllowOverride None Order allow,deny Allow from all AuthUserFile /usr/local/www/test.daemony.org/pw/stat.pwd AuthGroupFile /dev/null AuthName "Access Denied!" AuthType Basic <limit GET POST> require valid-user </limit> </Directory>
Перезапустим Apache. Теперь только пользователь Daemony с паролем, который ему установили, будет иметь доступ к статистике.
Для постоянного автоматического обновления статистики, можно добавить задание по запуску скрипта awstats.pl в /etc/crontab. Обновлять статистику можно настолько часто, насколько Вы сами пожелаете. Но я предпочитаю всего раз в час. Это оптимальный вариант, поскольку с опцией AllowToUpdateStatsFromBrowser=1 (включено) обновить статистику можно будет через браузер при необходимости в любое время.
### WHOME=/usr/local/www # 59 * * * * www $WHOME/awstats/cgi-bin/awstats.pl >/dev/null 2>&1
Вот теперь уж, пожалуй, точно все.
Вроде ничего не забыл?…
Ну, а вот так выглядит сама статистика AWStats (нажмите на скриншоты, чтобы увеличить; картинки будут открываться в новом окне):
Статистика AWStats | История за месяц
Статистика AWStats | По дням месяца
Статистика AWStats | По дням недели
Статистика AWStats | По часам
Статистика AWStats | Страны
Статистика AWStats | Роботы (Пауки) посетители
Статистика AWStats | Операционные системы
Статистика AWStats | Браузеры
Ключевые слова
apache | awstats | geoip | httpd | httpd.conf | perl | анализ логов | вебмастеру | диаграммы | конфигурация | лог | посещаемость | пример | русский перевод | статистика
Публикации по теме
Подпишись на
ленту и будь в курсе обновлений
|
|
|
|
|
|

