Instalacja Piwik z import_logs.py z Nginx

Chcąc z powodzeniem monitorować ruch na stronie warto przyjrzeć się także wizytom automatycznym klientów nie wspierających JavaScript. W tym celu uzupełnimy statystyki Piwik o wizyty importowane z access log Nginx.

W poprzednim wpisie odnośnie Nginx skonfigurowano go jako reverse proxy dla Apache – w tym artykule przyjmujemy te same ścieżki.

Instalacja Piwik

Instalacja nie powinna sprawić większego problemu – ogranicza się do rozpakowania pobranego archiwum, ustawienia odpowiednich uprawnień i podania poświadczeń do bazy danych. W razie trudności chętnie pomożemy z instalacją skryptu zarówno na własnym hostingu jak i u obcego usługodawcy.

Konfiguracja import_logs.py

Importer dzienników jest uruchamianym cyklicznie skryptem Python dodającym odwiedziny do bazy Piwik.
Jego konfiguracja odbywa się za pomocą licznych przełączników linii poleceń.

Opcję –recorders ustawiamy na pożądaną liczbę wątków (<= ilość rdzeni), –url na pełny URL do instalacji Piwika.

Jeżeli korzystamy z wspólnego access loga dla wielu witryn  (lub uruchamiamy skrypt podając wiele plików)  warto ustawić opcję –add-sites-new-hosts bądź –idsite-fallback aby obsłużyć wizyty dla nieznanych stron.
Jeżeli access log jest oddzielny dla każdej z witryn – możemy wymusić ID strony przełącznikiem –idsite.

Aby śledzić wszystkie wywołania użyliśmy opcji  –enable-http-errors –enable-http-redirects –enable-static –enable-bots  oraz włączyliśmy debug -dd uzyskując finalnie poniższą komendę:

 python /srv/vhosts/aboo.pl/piwik/misc/log-analytics/import_logs.py –url=http://www.aboo.pl/piwik –idsite=3 –recorders=2 –enable-http-errors –enable-http-redirects –enable-static –enable-bots -dd /var/log/nginx/aboo.pl.access.log 

Testowo należy uruchomić ją z powłoki (polecamy opcje –dry-run –show-progress), następnie dodać do crontaba przed wywołaniem logrotate dla Nginx.

Nginx jako reverse proxy dla Apache z Zend Platform

Na naszych serwerach hostingowych  powszechnie wykorzystujemy wysokowydajny serwer http Nginx do serwowania treści statycznych. Zapytania o treści dynamiczne są kierowane przez tzw. reverse proxy do serwera Apache (tutaj: na porcie 8080).

Podstawowa konfiguracja vhosta Nginx dla tych potrzeb będzie wyglądać podobnie do poniższej.
Domyślnie kieruje ona zapytania na adres 127.0.0.1:8080 przekazując dane o kliencie oraz domenę z żądania.
Treści potencjalnie statyczne są serwowane bezpośrednio z odpowiedniego katalogu, przy czym zostało zablokowane hotlinkowanie.

server {
server_name aboo.pl *.aboo.pl

access_log /var/log/nginx/aboo.pl.access.log;
error_log /var/log/nginx/aboo.pl.error.log;
location ~ /\\.ht {
deny all;
}

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 1000m;
client_body_buffer_size 512k;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 32k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_connect_timeout 60s;
proxy_pass http://127.0.0.1:8080;
}

location ~* ^.+.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|iso|doc|
xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|ogv|ogg|
flv|swf|mpeg|mpg|mpeg4|mp4|avi|wmv|js|css)$ {
expires 24h;
root /srv/vhosts/aboo.pl;
valid_referers none blocked aboo.pl *.aboo.pl;
if ($invalid_referer) {
return 403;
}
}

W konfiguracji Apache (/etc/apache2/ports.conf) zmieniamy port, po czym ew. poprawiamy konfigurację vhostów:

NameVirtualHost 127.0.0.1:8080
Listen 8080

Przy tej konfiguracji access log Nginx trafi do /var/log/nginx/aboo.pl.access.log.