Spletna stran uporablja piškotke za boljšo uporabniško izkušnjo in spremljanje statistike obiskov (Google Analytics).
Z nadaljno uporabo spletne strani ali klikom na "Strinjam se", se strinjate z uporabo piškotkov.
Piškotki in njihova uporaba

Statisitka spletnih obiskov za virtualne hoste na Synology NAS z Webalizer‐jem

Objavil Blaž Kristan 18.7.2014 @ 11:20
Oznake: NAS, skripta, Synology, web

Pred slabim letom dni je potekla domena akvazin.si, pa sem jo kupil, saj sem jo nekoč že imel v lasti in me nanjo vežejo močna čustva. :P Prav tako sem si kupil domeno blaz.at, z namenom krajšanja linkov na Twitterju, pa mi je zaradi kombinacije blaz.at/home postala zelo všeč.

Seveda je bilo za to, da so te strani delovale, potrebno narediti virtualne hoste v nadzorni plošči DSM (o čemer sem že pisal), in za vodenje statistike obiskov sem uporabljal Googlovo analitiko.

Ker pa ata Googla ne maram, sem se odločil, da bom poskusil z Webalizerjem, za katerega obstaja tudi paket za Synology DSM in ga je enostavno naložiti. Trije kliki in bil je nameščen in vklopljen.

Počakal sem nekaj dni in preveril kako kaže s statistiko, pa sem bil takoj razočaran. Vse spletne strani so bile zmetane v en koš in tako je bila statistika praktično neuporabna. Zato sem začel iskati ali lahko Webalizer kako prepričam, da bo delal statistiko za vsak virtualni host posebej. Izkaže se, da se z malo truda to da narediti.

Pa začnimo na začetku, z namestivijo Webalizerja. To storimo v Package Centru, najdemo pa ga med Utilities.

Žal sam Webalizer paket nima nobenih opcij, zato moramo vso konfiguracijo opraviti v ukazni vrstici.

$ ssh root@nas_IP_address

Najprej kreirajmo nekaj map, ki jih bomo kasneje potrebovali za delovne datoteke Webalizerja.

$ mkdir /var/lib/webalizer
$ mkdir /etc/webalizer

Sledijo mape za izdelane statistike za posamezne virtualne hoste.

$ mkdir /var/services/web/vhost1
$ mkdir /var/services/web/vhost2

Nato kopiramo privzeto konfiguracijo (ki je uporabljena za splošno statistiko) v /etc/webalizer za vskega virtualnega hosta posebej.

$ cp /var/packages/Webalizer/target/webalizer.conf /etc/webalizer/vhost1.conf
$ cp /var/packages/Webalizer/target/webalizer.conf /etc/webalizer/vhost2.conf

Nato uredimo tako dobljene konfiguracijske datoteke in spremenimo najmanj naslednje parametre:

LogFile
OuputDir
HistoryName
IncrementalName
HostName

Primer za vhost1.conf:

$ vi /etc/webalizer/vhost1.conf
LogFile    /var/log/httpd-vhost1.log
OutputDir    /var/services/web/vhost1
HistoryName    /var/lib/webalizer/vhost1.hist
IncrementalName    /var/lib/webalizer/vhost1.current
HostName    www.vhost1.com

Sledi dodajanje parametrov za log datoteke za vsakega virtualnega hosta. Te podatke najdemo v datotekah /usr/syno/etc/httpd-vhost.conf-user ter /usr/syno/etc/httpd-ssl-vhost.conf-user. Ena je za HTTP, druga za HTTPS. Med oznake <VirtualHost *:80> in </VirtualHost> vrinemo naslednjo kodo.

CustomLog "|/var/packages/Webalizer/target/bin/rotatelogs /var/log/httpd-vhost1.log 10" combined

Kjer pazimo, da ime log datoteke (httpd-vhost1.log) ustreza imenu virtualnega hosta (podatek ServerName).

Sledi restart Apache strežnika, da se nove nastavitve uveljavijo.

$ /usr/syno/etc.defaults/rc.d/S97apache-user.sh restart

Vsak obisk virtualnega spletnega strežnika bo od tega trenutka dalje povzročil nov zapis v ločene log datoteke, kar je pogoj za izdelavo ločenih statistik.

V nadaljevanju moramo v rednih intervalih kreirati oz. obdelati statistiko za tako nastale log datoteke. V originalu Webalizer v ta namen uporablja cron oz. zapis v /etc/crontab datoteki in zapis se glasi:

13      *       *       *       *       root    /var/packages/Webalizer/target/bin/webalizer -c /var/packages/Webalizer/target/webalizer.conf

Ker sem se odločil, da bom obstoječe stanje spreminjal minimalno kot je mogoče, sem za potrebe izračunov statistike za virtualne hoste dodal nov zapis v crontab:

20      *       *       *       *       root    /var/packages/Webalizer/scripts/webalizer

Seveda ukaz /var/packages/Webalizer/scripts/webalizer v originalu ne obstaja, je skripta, ki se glasi:

$ vi /var/packages/Webalizer/scripts/webalizer
#!/bin/sh
lockfile="/tmp/webalizer.lock"
# bail out if lock file still exists
if [ -f $lockfile ]; then
  echo "Lock file exists! Webalizer may still be crunching numbers!"
  exit 1
else
  # write the lock file
  date +"%d.%m.%Y - %H:%M" > $lockfile
  for i in /etc/webalizer/*.conf; do /var/packages/Webalizer/target/bin/webalizer -c $i; done
  # delete the lock file
  rm -rf $lockfile
fi
exit 0

Poskrbimo še za ustrezne pravice, da postane datoteka izvedljiva.

$ chmod +x /var/packages/Webalizer/scripts/webalizer

Ta skripta je srce preračunov statistike za vse virtualne hoste, ki imajo v mapi /etc/webalizer svojo konfiguracijsko datoteko.

Sledi še restart cron-a in statistike se bodo računale avtomatično!

$ /usr/syno/etc/rc.d/S04crond.sh stop
$ /usr/syno/etc/rc.d/S04crond.sh start

 

UPDATE: spreminjanje crontab ni všeč DSM

Po restartu NAS se je datoteka crontab povrnila v stanje pred mojimi spremembami.

Svoj NAS zelo redko restartam, ponavadi, ko so na voljo varnostni popravki (ki jih je bilo v zadnjem času kar precej). Zato nisem takoj opazil, da se spremembe v datoteki /etc/crontab izničijo, ko restartamo NAS.

Zato sem se odločil, da za izdelavo statistik uporabim kar Task Scheduler v Control Panel, ki pa tudi uporablja crontab. :)

Task Scheduler

OPOMBA: Kasneje sem našel tale članek, ki opisuje točno to ugotovitev.

Komentarji

* Komentarje mora odobriti admin.