freebsd + nginx + awstats + logrotate

Feb 29, 2012 14:43

По чуть-чуть начали использовать nginx, поэтому стал вопрос со статистикой. Сделал вот так....

У меня каждый виртаульный хост описан в отдельном файле.

# cd /usr/ports/www/fcgiwrap/
# make install clean

В rc.conf.local, либо rc.conf:
fcgiwrap_enable="YES"
fcgiwrap_socket="tcp:127.0.0.1:8999"
fcgiwrap_user="www"

# /usr/local/etc/rc.d/fcgiwrap start
# sockstat | grep 8999
www      fcgiwrap   1824  0  tcp4   127.0.0.1:8999        *:*

Через юниксовый сокет работать не захотело. Может быть Вам повёзёт, кто знает? :)

# cd /usr/ports/www/awstats/
# make install clean

В /usr/local/etc/nginx/includes положил файлик вот такого содержания

# less awstats.conf
location  /awstats/ {
        satisfy any;
        allow ;
        deny all;
        auth_basic "Hello, please login";
        auth_basic_user_file /usr/local/etc/nginx/passwds/awstats.passwds;

fastcgi_pass 127.0.0.1:8999;
        fastcgi_index awstats.pl;
        fastcgi_param SCRIPT_FILENAME /usr/local/www/awstats/cgi-bin/awstats.pl;
        fastcgi_param SCRIPT_NAME awstats.pl;
        fastcgi_connect_timeout 60;
        include        fastcgi_params;
        }

location ^~ /awstatsclasess/ {
        alias /usr/local/www/awstats/classes/;
        }

location ^~ /awstatscss/ {
        alias /usr/local/www/awstats/css/;
        }

location ^~ /awstatsicons/ {
        alias /usr/local/www/awstats/icons/;
}

Делаем include в нужный конфиг виртуального хоста.
include includes/awstats.conf;

# killall -HUP nginx

Конфиги ротируются через logrotate. Пример конфига:
/hosting/example.com/http_log/access.log {
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    prerotate
        /usr/local/www/awstats/cgi-bin/awstats.pl -config=example.com -update
    endscript
    postrotate
        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

/hosting/example.com/http_log/error.log {
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

В браузере теперь http://example.com/awstats/. И всё должно заработать.

freebsd nginx awstats logrotate

Previous post Next post
Up