AWStats по умолчанию заточен под работу с логом Apache, в данной статье я покажу как получить статистику с логов Nginx'a.
Устанавливаем Awstats и модуль GeoIP
yum install awstats htmldoc GeoIP perl-Geo-IP
Ставим Perl обработчик
yum -y install spawn-fcgi fcgi-devel wget yum -y groupinstall "Development Tools" mkdir /tmp/perl && cd /tmp/perl && wget http://github.com/gnosek/fcgiwrap/tarball/master -O fcgiwrap.tar.gz tar -xf fcgiwrap.tar.gz && cd gnosek-fcgiwrap-* autoreconf -i ./configure make make install
Добавляем в конфиг опции запуска:
vim /etc/sysconfig/spawn-fcgi
OPTIONS="-u nginx -g nginx -a 127.0.0.1 -p 9001 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrap"
Ставим в автозагрузку и включаем:
systemctl enable spawn-fcgi systemctl start spawn-fcgi
Приводим access лог Nginx'a к следующему виду:
vim /etc/nginx/nginx.conf
log_format stats '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"';
Перечитываем конфигурацию Nginx'a.
Создаем конфигурационный файл AWStats для определенного сайта:
vim /etc/awstats/awstats.artem.services.conf
LogFile="/var/log/nginx/access.log" LogFormat=1 SiteDomain="artem.services" HostAliases="localhost" DNSLookup=0 DirData="/var/lib/awstats/artem.services" AllowToUpdateStatsFromBrowser=1 LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat" Lang="ru"
Копируем скрипт AWStats в дирикторию веба, куда будем заходить смотреть статистику:
cp -a /usr/share/awstats/wwwroot/cgi-bin/* /home/artem/web/awstats/
Создадим конфиг Nginx'a для AWStats:
server { listen 80; server_name artem.services; root /home/artem/web/awstats; location / { rewrite ^ http://artem.services/awstats.pl?config=artem.services; } location /icon/ { alias /usr/share/awstats/wwwroot/icon/; } location /css/ { alias /usr/share/awstats/wwwroot/css/; } location /js/ { alias /usr/share/awstats/wwwroot/js/; } location ~ \.pl$ { access_log off; fastcgi_pass 127.0.0.1:9001; fastcgi_index awstats.pl; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } }
У меня через скрипт и указания конфига статистика наполнялась, но без указания в имени файла имени домена, а через браузер все норм и статистика обновляется, поэтому у меня в крон ушло следующее:
wget -O /dev/null http://artem.services/awstats/awstats.pl?framename=mainright\&update=1