Разработка электроники,

Систем автоматики,

Программного обеспечения

ООО "Антех ПСБ",
Санкт-Петербург

+79811865082

anteh@bk.ru

ООО Антех ПСБ примеры

Установка awstats apache24 FreeBSD, GeoIP, Аутентификация, https

10.02.2016 https://anteh.ru

Формат лог файлов Apache должен быть combined. Например в httpd-vhosts.conf такая запись:

CustomLog "/var/log/site.ru-customlog" combined

# cd /usr/ports/www/awstats

# make config

# make

* Use /usr/local/www/awstats/tools/awstats_configure.pl to setup your hosts.

# make install

Скрипт awstats_configure.pl не использовался

В httpd.conf добавляем:

#===== FOR AWSTATS =====
# Directives to allow use of AWStats as a CGI
Alias /awstatsclasses "/usr/local/www/awstats/classes/"
Alias /awstatscss "/usr/local/www/awstats/css/"
Alias /awstatsicons "/usr/local/www/awstats/icons/"
ScriptAlias /awstats/ "/usr/local/www/awstats/cgi-bin/"
#
# This is to permit URL access to scripts/files in AWStats directory.
<Directory "/usr/local/www/awstats/">
Options None
AllowOverride None
Require all granted
# Require all denied # Allow from aa.bb.cc.dd
</Directory>

Копируем файл /usr/local/www/awstats/cgi-bin/awstats.model.conf в эту же директорию с переименованием в awstats.домен1.ru.conf повторяем процедуру для всех нужных сайтов.

Редактируем каждый awstats.доменx.ru.conf:

минимум прописываем путь к лог файлу соответствующего домена LogFile="..." и указываем домен сайта SiteDomain="...", HostAliases="www.site.ru site.ru"

Кнопка на html странице для обновления статистики оставлена отключенной AllowToUpdateStatsFromBrowser=0

В ручную, для проверки, запускаем обновление статистики для каждого сайта, пример:

# /usr/local/www/awstats/cgi-bin/awstats.pl -config="anteh.ru"              
Create/Update database for config ".../cgi-bin/awstats.anteh.ru.conf" by AWStats version x.x (build yy)
From data in log file "/var/log/anteh.ru-log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 241848
Found 39 dropped records,
Found 0 comments,
Found 0 blank records,
Found 2686 corrupted records,
Found 0 old records,
Found 239123 new qualified records.

Автоматическое обновление статистики раз в 31 минуту, в /etc/crontab добавляем для каждого сайта соответствующую запись:

*/31 * * * * root /usr/local/www/awstats/cgi-bin /awstats.pl -config=anteh.ru

Убеждаемся, что в httpd.conf подключен модуль mod_cgi.so

Перезапускаем апач

# apachectl restart

Проверяем, что получилось. В браузере заходим на сайты, для которых подключили awstats анализатор логов:

http://anteh.ru/awstats/awstats.plawstats apache проверка статистики сайта

На изображении можно наблюдать падение трафика, по началу это связывал с установкой в шаблон сайта, т.е. на каждую страницу помещался canvas с 3D моделями + подгружалось некоторое количество javascript файлов. Но потом выяснилось, что проблемы были с modsecurity, который не пускал боты без accept заголовка решение описано здесь

Geoip

Добавим модуль Geoip для соответствующих сайтов/хостов/доменов. Имеем в виду, что Geoip замедлит работу awstats:

# cd /usr/ports/net/GeoIP

# make

# make install

Подправляем скрипт /usr/local/bin/geoipupdate.sh, чтобы скачать всё, что дают: страна, город, название компании(ASN), изменения выделены:


#!/bin/sh

# You can set the following environment variables:
#
# GEOIP_DB_SERVER: The default download server is geolite.maxmind.com
# GEOIP_FETCH_CITY: If set (to anything), download the GeoLite City DB
# GEOIP_FETCH_ASN: If set, download the GeoIP ASN DB

GEOIP_DB_SERVER=${GEOIP_DB_SERVER:=geolite.maxmind.com}
GEOIP_FETCH_CITY=${GEOIP_FETCH_CITY:=geolite.maxmind.com}
GEOIP_FETCH_ASN=${GEOIP_FETCH_ASN:=geolite.maxmind.com}

set -eu
echo Fetching GeoIP.dat and GeoIPv6.dat...

Скачиваем соответствующие базы данных:

# /usr/local/bin/geoipupdate.sh
Fetching GeoIP.dat and GeoIPv6.dat...
/usr/local/share/GeoIP/GeoIPupdate.f3MLrm/GeoI100% of 468 kB 3935 kBps 00m00s
/usr/local/share/GeoIP/GeoIPupdate.vCiLBK/GeoI100% of 757 kB 5223 kBps 00m00s
/usr/local/share/GeoIP/GeoIPupdate.Kfbpls/GeoL100% of 11 MB 9 MBps 00m01s
/usr/local/share/GeoIP/GeoIPupdate.B0AhYI/GeoL100% of 12 MB 10 MBps 00m01s
/usr/local/share/GeoIP/GeoIPupdate.uSbXNT/GeoI100% of 2174 kB 8111 kBps 00m01s
/usr/local/share/GeoIP/GeoIPupdate.05teSB/GeoI100% of 2527 kB 3716 kBps 00m00s

Скачиваемые базы данных -это наверно урезанные версии платных с http://dev.maxmind.com/geoip/legacy/geolite/. Наверно существуют и другие базы данных.

В каждом файле конфигурации awstats, описывающем настройки соответствующего сайта раз комментируем и подправляем строки:

LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"

LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoLiteCity.dat"

LoadPlugin="geoip_asn_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoIPASNum.dat"

Ставим p5-Geo-IP

# cd /usr/ports/net/p5-Geo-IP

# make

# make install

# apachectl restart

И проверяем, на html странице awstats на вкладке страны увидим название страны, города и название компании, весьма впечатлило. Вот так ненавязчиво и бесплатно сделал рекламу компании http://dev.maxmind.com/geoip:awstats apache geoip geolitecity geoipasnum отображение страны города названия компании по ip

Базы GeoIP.dat GeoLiteCity.dat GeoIPASNum.dat нужно иногда обновлять через /usr/local/bin/geoipupdate.sh скрипт. Его запуск можно в crontab добавить.

Аутентификация для просмотра статистики

Реализуем доступ к статистике с аутоинтификацией через логин пароль. Создаём пароль для UserName:

# htpasswd -c /usr/local/www/awstats/.htpasswd UserName

придумываем пароль

В конфигурации апача httpd.conf:

#===== FOR AWSTATS =====
# Directives to allow use of AWStats as a CGI
Alias /awstatsclasses "/usr/local/www/awstats/classes/"
Alias /awstatscss "/usr/local/www/awstats/css/"
Alias /awstatsicons "/usr/local/www/awstats/icons/"
ScriptAlias /awstats/ "/usr/local/www/awstats/cgi-bin/"
#
# This is to permit URL access to scripts/files in AWStats directory.
<Directory "/usr/local/www/awstats/">
Options None
AllowOverride None
Require all denied
AuthType Basic
AuthName "User Password"
AuthUserFile /usr/local/www/awstats/.htpasswd
Require valid-user
</Directory>

При входе на http://site.ru/awstats/awstats.pl в диалоговое окно вводим UserName и придуманный ранее пароль.

Теперь можно задуматься о безопасном SSL соединении, т.к. в противном случае пароли передаются открытым текстом через небезопасный канал связи с сервером. Всё упирается в SSL сертификат, для некоммерческих сайтов сейчас его можно получить бесплатно, для любых сайтов подойдёт letsencrypt.

awstats и https

Переезд с http на https. В awstats конфигурации каждого сайта использующего https поправляем UseHTTPSLinkForUrl опцию:

UseHTTPSLinkForUrl="/"

https://site.ru/awstats/awstats.pl

Copyright ©Новиков Алексей Александрович,

2023 Санкт-Петербург, 197372, ООО "Антех ПСБ",

anteh собака bk.ru