Un giorno, stanco delle statistiche affidate ad un provider esterno, ho deciso di vedere se vi erano programmi in giro che mi dessero come output il log di Apache in formato "human-readable", con tanto di statistiche annesse e connesse.
Sebbene non possa dire di trovarmi male con Statcounter, devo con amarezza constatare che spesso le statistiche sono sfalsate in quanto basate su dei cookies e degli script java. Inoltre ha un log limitato a 500 e ci si ritrova senza serie storiche. Alternativa: pagare...hmm...
Googleggiando, mi sono imbattuto in awstats. Questi altro non è che uno scriptino in perl che prende come input i dati del log di Apache e restituisce come output tabelline, diagrammi, statistiche...insomma, quello che stavo cercando :D
Purtroppo non è tutt'oro quello che luccica! :(
Cominciamo a vedere quello che ci serve:
1. un server Apache funzionante (in OSX esiste in dotazione, basta attivarlo da preferenze di sistema, condivisione)
2. WebLock (opzionale ma per sveltire il lavoro torna estremamente utile)
3. CronniX (opzionale anche questo ma esattamente come WebLock semplifica enormemente la vita)
4. Tanta, tanta ma veramente tanta pazienza

Dopo aver scaricato awstats dal sito, mi sono trovato in scrivania un magnifico file awstats-6.7.tar.gz che, una volta decompresso si trasforma in una cartella dal nome awstats-6.7. Fino a qui tutto nella norma.
screenshot_12

Aprendo la cartella, il primo file apparentemente utile nel quale ci si imbatte è il file readme.txt. Scatta inesorabile il doppio click.

screenshot_13

bene, rapida occhiatina ai requisiti...posto un estratto

"I - 2) Requirements

To use AWStats CGI script, you need the following requirements:
* Your server must log web access in a log file you can read.
* To run awstats, from command line, your operating system must be able
to run perl scripts (.pl files)."


Bene, mi sembra di avere tutto...i log me li crea...ed il sistema è in grado di interpretare gli script perl...

ottimo, rapida occhiatina all'installazione...posto anche in questo caso un estratto

"II - INSTALL, SETUP AND USE AWSTATS
-----------------------------------

The documentation available for this release in HTML format is
in the docs/ directory.

You can find a most up-to-date documentation at:
http://awstats.sourceforge.net"


E qui comincio gradatamente a perdere la pazienza. Quando mi rimandano ad altra documentazione in pieno stile caccia al tesoro, la mia granitica flemma finisce a gambe all'aria. Sospiro di sollievo, mi rimbocco le maniche e vado a perlustrare il contenuto della cartella docs

screenshot_14

Cercando di capire dove si trovi nascosto l'helper, provo ad indovinare: o nel file awstats.pdf o in un qualche file.index.html. Opto per il secondo e fortuna vuole che azzecco l'helper. Scorro la voce Reference Manual e piombo nel capitolo "Install setup and use awstats"

"After downloading and extracting the AWStats package, you should run the awstats_configure.pl script to do several setup actions. You will find it in the AWStats tools directory (If using the Windows installer, the script is automatically launched):
perl awstats_configure.pl
"

Per la serie "la caccia al tesoro continua" vado nella cartella "tools" a cercarmi lo script awstats_configure.pl. Attimi di imprecazioni, trovo lo script, apro il terminale e lo lancio con l'entusiasmo di un bambino

IKEE:~ ikee$ cd Desktop/awstats-6.7
IKEE:~/Desktop/awstats-6.7 ikee$ cd tools/
IKEE:~/Desktop/awstats-6.7/tools ikee$ ls
awstats_buildstaticpages.pl awstats_exportlib.pl httpd_conf maillogconvert.pl webmin
awstats_configure.pl awstats_updateall.pl logresolvemerge.pl urlaliasbuilder.pl xslt

Dopo aver determinato la directory in cui si trova lo script, lo lancio come indicato nella guida
IKEE:~/Desktop/awstats-6.7/tools ikee$ perl awstats_configure.pl

----- AWStats awstats_configure 1.0 (build 1.7) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to 'understand' all possible ways to use AWStats...
Read the AWStats documentation (docs/index.html).

-----> Running OS detected: Mac OS
Warning: AWStats standard directory on Mac OS X is '/Library/WebServer/awstats'.
If you want to use standard directory, you should first move all content
of AWStats distribution from current directory:
/Users/ikee/Desktop/awstats-6.7
to standard directory:
/Library/WebServer/awstats
And then, run configure.pl from this location.
Do you want to continue setup from this NON standard directory [yN] ? n
configure.pl aborted.
IKEE:~/Desktop/awstats-6.7/tools ikee$


Ecco le prime sorprese (molto amare ad onor del vero):
1. lo script installa in una directory di default che non è quella che ho su Apache (/Library/WebServer/Documents/) ma questo sarebbe stato anche risolvibile spippolando sul file di configurazione httpd.config, cosa che non avevo minimamente tempo e voglia di fare.
2. lo script, solo una volta lanciato, ti racconta che sei nella directory sbagliata e che se vuoi continuare avanti con l'installazione devi spostare tutto il contenuto della cartella awstats-6.7 all'interno della directory standard (standard secondo awstats aggiungo) /Library/WebServer/awstats/

Esaurito il bonus di pazienza, decido di mandare a quel paese lo script di installazione e di passare ad un fantastico "fai da te" con installazione manuale dei vari files...riparto con una googleggiata di un'oretta abbondante per trovare questo tutorial che mi pareva essere quello che si confà di più alle mie esigenze. Unico dubbio: il tutorial è per OSX Server. Nulla di grave in quanto le directory di Apache sono le stesse indipendentemente dal fatto che si tratti di OSX server o non server. Installazione in 8 passi! Non mi sembra vero (infatti non lo sarà..:( )
Salto i passi 1 e 2 in quanto ho già scaricato il file awstats-6.7.tar.gz ed ho già impostato il file di log nel formato "combined" ed ho già decompresso il file awstats-6.7.tar.gz
Al punto 3 leggo
Step 3: From the AWStats folder that you un-tarred, copy awstats.pl, awstats.model.conf, lang, lib and plugins (they are in the cgi-bin sub-folder) to /Library/WebServer/CGI-Executables. Mi sembra già più sensato come discorso rispetto a quanto letto sull'helper di awstats e così mi accingo a fare. Copio awstats.pl, awstats.model.conf e le directory lang, lib e plugins nella cartella /Library/WebServer/CGI-Executables
Al punto 4
Step 4: Copy the icon folder into /Library/WebServer/CGI-Executables.
Analogamente come al punto 3, mi accingo a copiare la cartella icon in /Library/WebServer/CGI-Executables
Punto 5
Step 5: Take a copy of awstats.model.conf open it and enter the following settings: LogFile="/private/var/log/httpd/access_log"   

LogFormat=1

DirIcons="/icon"

SiteDomain="www.mydomain.com"
 

Step 5: Change awstats.model.conf copy (il copy l'ho aggiunto io ndr)name to awstats.mydomain.conf  then put this file in CGI-Executables.

Qui si cominciano a complicare le cose, ma in maniera molto relativa.
In sostanza, basta prendere il file awstats.model.conf, selezionarlo, premere mela+d e si ottiene un file awstats.model.conf copia. Si apre quest'ultimo con un text editor (TextEdit funge benissimo) e si cominciano ad impostare i parametri come indicato sopra:

LogFile="/private/var/log/httpd/access_log"   
In pratica diciamo dove si trova il file di log di Apache

LogFormat=1
Che significa che il Formato del file di log è di tipo combined

DirIcons="/icon"
Che significa che diciamo dove si trova la directory delle icone

SiteDomain="www.mydomain.com"
 
dove www.mydomain.com va a sostituirsi con il proprio dominio (nel caso mio ho messo ikee1966.homeip.net)

Step 5: Change awstats.model.conf copy (il copy l'ho aggiunto io ndr)name to awstats.mydomain.conf  then put this file in CGI-Executables.
Direi è abbastanza chiaro. Si prende il file awstats.model.conf copia e lo si rinomina in awstats.mydomain.conf (che nel mio caso è diventato awstats.ikee1966.homeip.net.conf e lo si aggiunge nella directory CGI-Executables

Punto 6
Step 6: Now, we must build and update our stats for  the first time. To do this open Terminal and enter /Library/WebServer/CGI-Executables/awstats.pl -config=mydomain -update  You should see something like this:
Lines in file: 225730
Found 5 dropped records,
Found 124 corrupted records,
Found 0 old records,
Found 225601 new records

If you don't see something like the above, try throwing away your current log file and restarting Web Services.


Traduzione: aprite il terminale e lanciate il comando
/Library/WebServer/CGI-Executables/awstats.pl -config=mydomain -update
Dove, al posto di mydomain sostituite con il nome del vostro dominio
Dovrebbe seguirne una cosa del genere:

Lines in file: 225730
Found 5 dropped records,
Found 124 corrupted records,
Found 0 old records,
Found 225601 new records

Qualora così non fosse provate a cestinare il vostro file di log ed a riavviare il server web (fortunatamente non si è resa necessaria questa procedura)

Punto 7
Step 7: Alrighty it's time to view our stats for the very first time! To view them, open a browser and go to http://myipaddress/cgibin/awstats.pl?config=mydomain
Quindi, per vedere per la prima volta le proprie statistiche, lanciate il browser e scrivete
http://myipaddress/cgibin/awstats.pl?config=mydomain
dove
myipadress -->indirizzo ip del proprio server o nomehost
mydomain ---> nome del proprio dominio

Beh, se siete arrivati fino a qui senza perdere la pazienza e senza imprecare...complimenti!! Avete veramente una pazienza ciclopica e degna di un certosino :D

Ultimo sforzo...apparentemente..

Punto 8
Step 8: All you have to do now set cron to update your stats. For example:
0  *  *  *  *   root   /Library/WebServer/CGI-Executables/awstats.pl -config=mydomain -update 
will update your stats every hour. If you need help setting up cron , go to 
www.koch-schmidt.de/cronnix/ and download  Cronnix.

Adesso comincia ad essere abbastanza chiaro a cosa serviva Cronnix: siccome io non gioco dalla mattina alla sera con crontab, per semplificarmi la vita, come da generoso consiglio del tutorial , mi scarico Cronnix e gli comincio a dire ogni quanto voglio aggiornare le mie statistiche

screenshot_15

Lanciata la finestra di Cronnix diventa tutto più chiaro :D
I più smanettoni potrebbero obiettare che in fondo modificare crontab non è poi così difficile e che da terminale si sarebbe fatto in un attimo.
Forse (anzi, sicuramente) sarà pure vero..però è altrettanto vero che a questo punto non potevo più sacrificare la mia pazienza residua sull'altare di "man crontab" e di conseguenza ho optato per cronnix che sembra per nulla malaccio :D

Procedo ad istruirlo come da tutorialino:

screenshot_16

Click su Nuovo et voilà :D

screenshot_17

Click su registra ed il gioco è fatto, si può uscire da Cronnix

Giusto a titolo di verifica, da terminale, lanciando il comando crontab -l



IKEE:~ ikee$ crontab -l
0 * * * * /Library/WebServer/CGI-Executables/awstats.pl -config=ikee1966.homeip.net -update
IKEE:~ ikee$

Sorpresa! E' proprio quello che volevo fare :D

Bene, a questo punto i più ottimisti penseranno di aver finito il loro lavoro, invece non è così! Vi è ancora un sacco da fare!!

Innanzitutto bisogna fare in modo che awstats riesca a leggere le iconcine. Affinchè ciò avvenga la cartella /icon va spostata dalla directory /Library/WebServer/CGI-Executables/ nella directory /Library/WebServer/Documents/

A questo punto si potrebbe obiettare: e le procedure dei punti 4 e 5 del tutorial???!!...si sono sbagliate, in quanto la root directory di default del webserver è /Library/WebServer/Documents/ e se noi scriviamo nel file awstats.mydomain.conf

DirIcons="/icon"

Altro non facciamo che dire ad awstats che la cartella /icons si trova nella root folder del nostro webserver (che non è appunto la cartella CGI-Executables).

Bene, fatto ciò, scopriamo con somma gioia che awstats funziona

screenshot_18

e pure le iconcine sono ben visibili. Chiaramente le statistiche non sono complete in quanto prese dall'ultimo file di log (quindi con le visite precedenti non registrate).

Vi è ancora un qualcosina da sistemare.....

I più attenti (soprattutto alla propria sicurezza) si saranno di certo accorti che le statistiche sono visibili da chiunque. Si, proprio da chiunque.
E per i curiosi passi, ma si deve tener presente che nelle statistiche del sito vi è anche contenuta una mappatura completa del vostro sito. Insomma, un bel aiuto ai malintenzionati.

Ovviamente, nè sul tutoorial a cui ho fatto riferimento per installare awstats e nè sull'helper di awstats stesso è indicato come fare per dare un minimo di protezione al vostro operato.

A questo punto la mia pazienza era arrivata alla frutta. L'unica cosa che avevo capito era che dovevo cercare la soluzione nella manualistica di Apache. Per l'esattezza nella configurazione dei files .htaccess ed .htusers

A questo punto è abbastanza evidente a cosa mi possa servire weblock.
Con questi mi creo uno user "ad hoc" che lo chiamerò visorestatistica assegnandoli una relativa password (che poi a criptarla ci pensa weblock). A questo punto weblock mi ha pure creato un bel file .htusers all'interno del quale vi sono le credenziali per l'utenza visorestatistica. Se non sapete dove weblock vi ha rifilato il file .htusers cercate in ~/Sites/
Fatto? Ottimo! A questo punto non resta che crearsi il file .htaccess
Questi è un file che istruisce il server con delle regole che deve seguire all'interno di una certa directory. Nel caso nostro la directory incriminata sarà la directory CGI-Executables. Noi vogliamo che il nostro webserver non permetta a chiunque di entrare nella directory CGI-Executables e che chiunque possa accedere allo script awstats.pl

Bene, facciamo pure partire il terminale
posizioniamoci nella directory
cd /Library/WebServer/CGI-Executables
Lanciamo pico
sudo pico .htaccess
A questo punto se il file .htaccess non esiste ve lo crea
dentro istruiamo pico con i seguenti comandi


AuthName "Scrivere il messaggio da far apparire quando si chiedono le credenziali"
AuthUserFile /Users/tuonomebreve/Sites/.htusers
AuthType Basic
Require valid-user


Require user visorestatistica


ctrl+x
y
enter

A questo punto avete finito.
Per accedere alle proprie statistiche lanciate il vostro browser e scrivete
http://mioip/cgi-bin/awstats.pl?config=miodominio
con somma soddisfazione vedrete comparire la finestrella di login

Buon divertimento!! :D