Webalizer statystyki na podstawie Logów Apache

Szukałem w miare sensownych statystych dla WordPressa, jest trochę pluginów, jest także Google analytics. A jednak wróciłem do starego dobrego sposobu, czyli programu Webalizer napisanego w C, dodatkowo w pełni darmowego i z udostępnionym kodem źródłowym 🙂
Webalizer analizuje logi Apacha i na ich podstawie generuje pliki HTML ze statystykami. Webalizer można skonfigurować dla wielu różnych hostów, virtual hostów etc. Z uwagi na to iż jest napisany w czystym C jest bardzo szybki a więc nie obciąża zbytnio naszego serwera. Należy oczywiście dodać webalizera do Crona aby uruchamiał się co jakiś interwał czasowy. Ja ustawiam sobie w Cronie tak aby webalizer uruchamiał się co 12h.

Instalacja i konfiguracja Webalizera

W przypadku Debiana sprawa jest prosta, wystarczy skorzystać z apt-get, a więc:

apt-get install webalizer

Plik konfiguracyjny znajduje się:

/etc/webalizer/webalizer.conf

Potraktuj ten plik konfiguracyjny jako plik swego rodzaju szablon i twórz na jego podstawie pliki konfiguracyjne dla konkretnych hostów.
Dla przykładu, mamy 2 VirtualHosty ( są oczywiście zadeklarowane w pliku konfiguracyjnym Apacha ). Należy sprawdzić czy nasze VirtualHosty rejestrują logi.
Plik konfiguracyjny Apacha znajduje się:

/etc/apache2/apache2.conf

Tam są „includowane” pliki dotyczące virtualhostów, tak więc skupmy się na tych plikach, znajdują się one:

/etc/apache2/available/

Otwieramy plik z konfiguracją VirtualHosta:

<VirtualHost *:80>
   ServerAdmin        "admin@jakishost.com"
   DocumentRoot       /home/macsurf/sites/nasza_strona.com/public_html
   ServerName         nasza_strona.com
   ServerAlias        www.nasza_strona.com
   CustomLog ${APACHE_LOG_DIR}/nasza_strona.com-access.log combined
   ErrorLog ${APACHE_LOG_DIR}/nasza_strona.com-error.log		
</VirtualHost>

Widzimy, że „nasza_strona.com” zapisuje logi, więc wszystko jest OK ! Jeśli nie to dopisujemy dyrektywę odpowiedzialną za logi:


CustomLog ${APACHE_LOG_DIR}/nasza_strona.com-access.log combined

i robimy restart apacha:

/etc/init.d/apache2 restart

Tak więc pliki z naszymi logami są przetrzymywane w katalogu:

/var/log/apache2/

Tyle jeśli chodzi o sprawdzenie czy „nasza_strona.com” rejestruje logi.

Przystępujemy do konfiguracji webalizera:

1. Wchodzimy do katalogu /etc/webalizer
2. Kopiujemy plik:
cp /etc/webalizer/webalizer.conf /etc/webalizer/nasza_strona.com.conf
3. Otwieramy plik do edycji:
pico nasza_strona.com.conf
4. Ustawiamy odpowiednie opcje:

  • Podajemy lokalizację logów dla naszej strony:
    LogFile /var/log/apache2/nasza_strona.com.log

  • Ustalamy gdzie mają być generowane przez webalizera pliki HTML:
    OutputDir /var/www/webalizer/nasza_strona.com
    Choć lepiej utworzyć katalog w miejscu gdzie znajdują się pliki dla „nasza_strona.com”
    np.:
    OutputDir /home/USER/sites/nasza_strona.com/public_html/webalizer

  • Ustalamy nazwę naszego hosta:
    HostName nasza_strona.com
    Webalizer nie utworzy za nas katalogu, który mu wskazaliśmy, musimy go sobie sami stworzyć. Wchodzimy do lokalizacji którą wcześniej wybraliśmy i tworzymy katalog komendą mkdir nasz_katalog_dla_webalizera

5. I to tyle jeśli chodzi o konfigurację. Teraz generujemy pliki webalizera za pomocą komendy:
webalizer -c /etc/webalizer/nasza_strona.com.conf
Jeśli nie podamy parametru -c to webalizer będzie pobierał konfiguracje z domyślnego pliki webalizer.conf.

To tyle jeśli chodzi o webalizera, jak widać w pliku konfiguracyjnym jest więcej opcji.
Dodam od siebie, że ja zmieniłem jeszcze opcję HTMLHead, gdyż miałem problem z kodowanie.

HTMLHead <META http-equiv="Content-Type" content="text/html" charset="utf-8">

Tylko nalezy tutaj uważać, jeśli chcesz „dokleić” inne tagi META to nie szalej bardzo, gdyż HTMLHead pobiera maksymalnie 80 znaków !!!

Na koniec, należy dodać do Crona webalizera, tak aby uruchamiał się co odpowiedni okres czasu. Jak wcześniej wspomniałem ja sobie ustawiłem, że webalizer ma się uruchamiać co 12h ( chociaż dla każdego hosta możemy sobie przecież ustawić inne czasy ).

Zamiast dodawać do crona oddzielne polecenia webalizera dla konkretnego hosta, napisałem sobie skrypcik nazywając go webalizer_reload.sh. W ten sposób dodajemy do crona tylko jedno polecenie ze scieżką do skryptu webalizer_reload.sh

#!/bin/bash

for filename in /etc/webalizer/* ; do
	webalizer -c $filename
done

W krótce postaram się opisać więcej opcji i usprawnień dotyczących webalizera 🙂

Dodaj komentarz