Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
centos:piwik [13.01.2012 14:42. ] – Dokumentation überarbeitet und für CentOS 6.x angepasst djangocentos:piwik [20.04.2018 10:26. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Webserver-Analyse mit Piwik ======
 +{{:centos:piwik.png?215|Piwik-Logo}}
 +
 +
 +
 +
 +Ein recht vielversprechendes Projekt erscheint [[http://de.piwik.org/|Piwik]] wenn es um die Webserver-Analyse geht.
 +
 +Dabei werden nicht, wie bei [[centos:logfileanalyse_mit_awstats|AWStats]] die Logfiles des Webservers selbst zu Analysezwecken herangezogen. Piwik geht einen anderen Weg. Über eine eingebettete **//JavaScript-Code//** werden beim Besuch unserer Seiten Informationen in einer mySQL-Datenbank hinterlegt, die dann später für die Detailrecherche herangezogen werden.
 +
 +Recht aufschlußreich ist dabei diese [[http://www.slideshare.net/matthieua/piwik-presentation-503403|Piwik Präsentation]] von Matthieu Aubry.
 +
 +Nachfolgend wird die Installation von [[http://piwik.org/|Piwik]] unter CentOS 6.x beschrieben.
 +
 +===== Download des Programmcodepaketes =====
 +Das aktuelle Programmpaket holen wir uns am einfachsten von der [[http://piwik.org/last.zip|Projektseite]] wie **wget**
 +  # wget http://piwik.org/last.zip
 +
 +===== vorbereitende Installation =====
 +==== Piwik ====
 +Den Inhalt dieses Archives legen wir in unser altbekannten bevorzugten Platz ab. Dazu legen wir uns das entsprechende Verzeichnis an.
 +  # mkdir /usr/share/piwik/
 +  # chown apache:apache piwik
 +  # unzip last.zip -d /usr/share/
 +
 +==== VHost ====
 +Für den Zugriff auf unsere Piwik-Installation legen wir uns einen virtuellen Host an. Die entsprechende Konfigurationsdatei **vhosts.conf** haben wir im Verzeichnis **/etc/httpd/conf.d** angelegt.
 +Mit dem Editor unserer Wahl ergänzen wir nun unsere virtuelen Hosts um einen weiteren:
 +  # vim /etc/httpd/conf.d/vhosts.conf
 +
 +<code apache vhosts.conf >
 +#
 +# piwik.nausch.org
 +#
 +<VirtualHost *:80>
 +    ServerAdmin webmaster@nausch.org
 +    ServerName piwik.nausch.org
 +    ServerAlias www.piwik.nausch.org
 +    ServerPath /
 +    DocumentRoot "/var/www/piwik"
 +    <Directory "/var/www/piwik">
 +        AllowOverride AuthConfig
 +        Order allow,deny
 +        Allow from all
 +    </Directory>
 +    DirectoryIndex index.php
 +    ErrorLog logs/piwik_error.log
 +    CustomLog logs/piwik_access.log combined
 +</VirtualHost>
 +</code>
 +
 +Dabei ist zu beachten, nicht versehentlich den Zugriff via **Order allow,deny** versehentlich zu beschränken. Andererseits bekommt man später Probleme bei der Datensammlung - die mySQL-Datenbanktabelle würde nicht befüllt werden.
 +
 +==== PHP Extensions GD und PDO  ====
 +Laut den [[http://piwik.org/docs/requirements/|Requirements-Angaben]] werden die beiden Pakete **php-gd** und **php-pdo** benötigt. Diese installieren wir einfach via **yum**:
 +  # yum install php-gd php-pdo -y
 +
 +==== PHP-Memory-Limit ====
 +Zu guter Letzt passen wir noch den für PHP nutzbaren Speicherbedarf an. Dazu editieren wir die Konfigurationsdatei **/etc/php.ini**
 +
 +   # vim /etc/php.ini
 +<code>
 +;;;;;;;;;;;;;;;;;;;
 +; Resource Limits ;
 +;;;;;;;;;;;;;;;;;;;
 +
 +max_execution_time = 30     ; Maximum execution time of each script, in seconds
 +max_input_time = 60         ; Maximum amount of time each script may spend parsing request data
 +memory_limit = 256M         ;Maximum amount of memory a script may consume 
 +</code>
 +
 +Mit einem **service httpd restart** wird die vorgenannte VHost-Definition und auch diese Änderung unserem System/Webserver bekannt gemacht.
 +
 +==== Datenbankuser ====
 +Da die Webanalysedaten in einer MySQL-Datenbank abgelegt und zur Auswertung vorgehalten werden, legen wir uns noch einen entsprechenden Datenbankuser an. Dazu benutzen wir entweder das Clientprogramm **mysql** oder für den faulen Admin steht **phpMyAdmin** zur Verfügung.
 +Mittels folgender MySQL-Statements legen wir nun den notwendigen Datenbankuser an und erteilen ihm die nötigen Rechte:
 +<code>CREATE DATABASE `webstats`;
 +CREATE USER 'piwikuser'@'vml000090.dmz.nausch.org' IDENTIFIED BY 'First_Universal_Cybernetic-Kinetic_Ultra-Micro_Programmer';
 +GRANT all on webstats.* to 'piwikuser'@'vml000090.dmz.nausch.org';
 +FLUSH PRIVILEGES;
 +
 +CREATE USER 'piwikuser'@'10.0.0.90' IDENTIFIED BY 'First_Universal_Cybernetic-Kinetic_Ultra-Micro_Programmer';
 +GRANT all on webstats.* to 'piwikuser'@'10.0.0.90';
 +FLUSH PRIVILEGES;</code>
 +Anschließend testen wir, ob wir uns erfolgreich von der Konsole aus mit unserem neu definierten Datenbankuser bei unserem MySQL-Server anmelden können:
 +   $ mysql -D webstats -u piwikuser -h datenbankhost.dmz.nausch.org -p
 +<code sql>Enter password: 
 +Welcome to the MySQL monitor.  Commands end with ; or \g.
 +Your MySQL connection id is 33
 +Server version: 5.1.52 Source distribution
 +
 +Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
 +This software comes with ABSOLUTELY NO WARRANTY. This is free software,
 +and you are welcome to modify and redistribute it under the GPL v2 license
 +
 +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 +
 +mysql> status;
 +--------------
 +mysql  Ver 14.14 Distrib 5.1.52, for unknown-linux-gnu (x86_64) using readline 5.1
 +
 +Connection id:          33
 +Current database:       webstats
 +Current user:           piwikuser@vml000090.dmz.nausch.org
 +SSL:                    Not in use
 +Current pager:          stdout
 +Using outfile:          ''
 +Using delimiter:        ;
 +Server version:         5.1.52 Source distribution
 +Protocol version:       10
 +Connection:             10.0.0.30 via TCP/IP
 +Server characterset:    latin1
 +Db     characterset:    latin1
 +Client characterset:    latin1
 +Conn.  characterset:    latin1
 +TCP port:               3306
 +Uptime:                 2 days 1 hour 27 min 14 sec
 +
 +Threads: 1  Questions: 141  Slow queries: 0  Opens: 19  Flush tables: 1  Open tables: 12  Queries per second avg: 0.0
 +--------------
 +
 +mysql> quit
 +Bye</code>
 +
 +Nachdem auch dieser Schritt erfolgreich zu Ende geführt worden ist, machen wir uns weiter auf den Weg unsere **//Pwiki//**-Installation weiter vorzunehmen.
 +
 +===== abschließende Installation =====
 +Ab dieser Stelle wir es nun das erste Mal, so richtig spannend und vor allem einfach und komfortabel.
 +Im Grunde ist es schon sehr unspektakulär, denn wir geben in unserem Webbrowser einfach die URL unseres Piwik-VHostes an: __**http://piwik.nausch.org**__ 
 +
 +Wir klicken uns also durch die folgenden Seiten und geben jeweils die Daten unserer Laufzeitumgebung an:
 +
 +{{ :centos:piwik_install_0.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +Werden von Piwik, wie in diesem Fall **//Fehler//** beanstandet, so sind einfach die nötigen Konfigurationsänderungen und -korrekturen vorzunehmen, bis alles im **//grünen Bereich//** ist.
 +
 +{{ :centos:piwik_install_1.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +{{ :centos:piwik_install_2.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +In disem Fall werden die Datei-/Verzeichnisrechte beanstandet. Wie angemerkt ändern wir auf der konsole die entsprechenden Zugriffsrechte via **chmod**.
 +
 +{{ :centos:piwik_install_3.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +Anschließend wird die Datenbank eingerichtet.
 +
 +{{ :centos:piwik_install_4.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +Anscheinend haben wir uns bei der Eingabe unseres Passwortes vertippt, da sofort ein entsprechender Fehlerhinweis gemeldet wurde.
 +
 +{{ :centos:piwik_install_5.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +Nach der erneuten und richtigen Eingabe wird auch hier nun das anlegen der einzelnen Tabellen in unserer Datenbank positiv bestätigt.
 +
 +{{ :centos:piwik_install_6.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +Als nächstes Legen wir unseren Aadministrativen Nutzer **//"root"//** an.
 +
 +{{ :centos:piwik_install_7.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +Hier erfolgt nun die Definition unserer //"zu beobachtenden Webserveradresse"//.
 +
 +{{ :centos:piwik_install_8.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +Der notwendige JavaScript-Code, den wir in die Webseiten einfügen wird uns nun Bildschirm angezeigt, so dass wir diesen bequem per **cut and paste** an die richtige Stelle bringen können. Selbstverständlich können wir diesen Code-schnipsel auch jederzeit später in der Administrationsebene von Piwik abfragen.
 +
 +{{ :centos:piwik_install_9.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +Am Ende unserer Installation werden wir dann abschließend informiert:
 +
 +{{ :centos:piwik_install_10.png?575 | PHOTO: Piwik-Installation via WEB-GUI}}
 +
 +Das war's nun auch schon (fast). ;-) Wir tragen den uns gezeigten JavaScript-Code in unsere Webseiten ein und melden uns an unserem [[http://piwik.nausch.org|Piwiki-Server]] an.
 +
 +{{ :centos:piwik_login.png?300 | PHOTO: Anmeldefenster}}
 +
 +===== Automatisches Generieren der Archivdaten =====
 +Zum automatischen erstellen der Archiv-Daten legen wir uns einfach einen passenden **cron-job** an. 
 +
 +Hierzu tragen wir einfach folgende Zeile in unserer **crontab**-Konfigurationsdatei ein.
 +  5 * * * * www-data /var/www/piwik/misc/cron/archive.sh > /dev/null
 +
 +   # vim /etc/crontab 
 +
 +Somit wird alle 5 Minuten entsprechende Archivdaten generiert. Bei hochfrequentierten Seiten empfiehlt es sich hier einen Abstand von 30 Minuten zu setzen. Die Eintragungen in der //**/etc/crontab**// lauten hierzu entsprechend.
 +  30 * * * * www-data /var/www/piwik/misc/cron/archive.sh > /dev/null
 +
 +Wenn wir nun das script von Hand aufrufe, sollte uns in ein entsprechende Ausgabe der Daten in XML-Format entgegenfallen.
 +<code xml>Starting Piwik reports archiving...
 +
 +
 +Archiving period = day for idsite = 1...
 +<?xml version="1.0" encoding="utf-8" ?>
 +<results>
 +        <result date="2011-11-23" />
 +        <result date="2011-11-24" />
 +        <result date="2011-11-25" />
 +        <result date="2011-11-26" />
 +        <result date="2011-11-27" />
 +        <result date="2011-11-28" />
 +        <result date="2011-11-29" />
 +        <result date="2011-11-30" />
 +        <result date="2011-12-01" />
 +        <result date="2011-12-02" />
 +        <result date="2011-12-03" />
 +        <result date="2011-12-04" />
 +        <result date="2011-12-05" />
 +        <result date="2011-12-06" />
 +        <result date="2011-12-07" />
 +        <result date="2011-12-08" />
 +        <result date="2011-12-09" />
 +        <result date="2011-12-10" />
 +        <result date="2011-12-11" />
 +        <result date="2011-12-12" />
 +        <result date="2011-12-13" />
 +        <result date="2011-12-14" />
 +        <result date="2011-12-15" />
 +        <result date="2011-12-16" />
 +        <result date="2011-12-17" />
 +        <result date="2011-12-18" />
 +        <result date="2011-12-19" />
 +        <result date="2011-12-20" />
 +        <result date="2011-12-21" />
 +        <result date="2011-12-22" />
 +        <result date="2011-12-23" />
 +        <result date="2011-12-24" />
 +        <result date="2011-12-25" />
 +        <result date="2011-12-26" />
 +        <result date="2011-12-27" />
 +        <result date="2011-12-28" />
 +        <result date="2011-12-29" />
 +        <result date="2011-12-30" />
 +        <result date="2011-12-31" />
 +        <result date="2012-01-01" />
 +        <result date="2012-01-02" />
 +        <result date="2012-01-03" />
 +        <result date="2012-01-04" />
 +        <result date="2012-01-05" />
 +        <result date="2012-01-06" />
 +        <result date="2012-01-07" />
 +        <result date="2012-01-08" />
 +        <result date="2012-01-09" />
 +        <result date="2012-01-10" />
 +        <result date="2012-01-11" />
 +        <result date="2012-01-12" />
 +        <result date="2012-01-13" />
 +</results>
 +Archiving period = week for idsite = 1...
 +<?xml version="1.0" encoding="utf-8" ?>
 +<results>
 +        <result date="2011-01-17 to 2011-01-23" />
 +        <result date="2011-01-24 to 2011-01-30" />
 +        <result date="2011-01-31 to 2011-02-06" />
 +        <result date="2011-02-07 to 2011-02-13" />
 +        <result date="2011-02-14 to 2011-02-20" />
 +        <result date="2011-02-21 to 2011-02-27" />
 +        <result date="2011-02-28 to 2011-03-06" />
 +        <result date="2011-03-07 to 2011-03-13" />
 +        <result date="2011-03-14 to 2011-03-20" />
 +        <result date="2011-03-21 to 2011-03-27" />
 +        <result date="2011-03-28 to 2011-04-03" />
 +        <result date="2011-04-04 to 2011-04-10" />
 +        <result date="2011-04-11 to 2011-04-17" />
 +        <result date="2011-04-18 to 2011-04-24" />
 +        <result date="2011-04-25 to 2011-05-01" />
 +        <result date="2011-05-02 to 2011-05-08" />
 +        <result date="2011-05-09 to 2011-05-15" />
 +        <result date="2011-05-16 to 2011-05-22" />
 +        <result date="2011-05-23 to 2011-05-29" />
 +        <result date="2011-05-30 to 2011-06-05" />
 +        <result date="2011-06-06 to 2011-06-12" />
 +        <result date="2011-06-13 to 2011-06-19" />
 +        <result date="2011-06-20 to 2011-06-26" />
 +        <result date="2011-06-27 to 2011-07-03" />
 +        <result date="2011-07-04 to 2011-07-10" />
 +        <result date="2011-07-11 to 2011-07-17" />
 +        <result date="2011-07-18 to 2011-07-24" />
 +        <result date="2011-07-25 to 2011-07-31" />
 +        <result date="2011-08-01 to 2011-08-07" />
 +        <result date="2011-08-08 to 2011-08-14" />
 +        <result date="2011-08-15 to 2011-08-21" />
 +        <result date="2011-08-22 to 2011-08-28" />
 +        <result date="2011-08-29 to 2011-09-04" />
 +        <result date="2011-09-05 to 2011-09-11" />
 +        <result date="2011-09-12 to 2011-09-18" />
 +        <result date="2011-09-19 to 2011-09-25" />
 +        <result date="2011-09-26 to 2011-10-02" />
 +        <result date="2011-10-03 to 2011-10-09" />
 +        <result date="2011-10-10 to 2011-10-16" />
 +        <result date="2011-10-17 to 2011-10-23" />
 +        <result date="2011-10-24 to 2011-10-30" />
 +        <result date="2011-10-31 to 2011-11-06" />
 +        <result date="2011-11-07 to 2011-11-13" />
 +        <result date="2011-11-14 to 2011-11-20" />
 +        <result date="2011-11-21 to 2011-11-27" />
 +        <result date="2011-11-28 to 2011-12-04" />
 +        <result date="2011-12-05 to 2011-12-11" />
 +        <result date="2011-12-12 to 2011-12-18" />
 +        <result date="2011-12-19 to 2011-12-25" />
 +        <result date="2011-12-26 to 2012-01-01" />
 +        <result date="2012-01-02 to 2012-01-08" />
 +        <result date="2012-01-09 to 2012-01-15" />
 +</results>
 +Archiving period = month for idsite = 1...
 +<?xml version="1.0" encoding="utf-8" ?>
 +<results>
 +        <result date="2007-10" />
 +        <result date="2007-11" />
 +        <result date="2007-12" />
 +        <result date="2008-01" />
 +        <result date="2008-02" />
 +        <result date="2008-03" />
 +        <result date="2008-04" />
 +        <result date="2008-05" />
 +        <result date="2008-06" />
 +        <result date="2008-07" />
 +        <result date="2008-08" />
 +        <result date="2008-09" />
 +        <result date="2008-10" />
 +        <result date="2008-11" />
 +        <result date="2008-12" />
 +        <result date="2009-01" />
 +        <result date="2009-02" />
 +        <result date="2009-03" />
 +        <result date="2009-04" />
 +        <result date="2009-05" />
 +        <result date="2009-06" />
 +        <result date="2009-07" />
 +        <result date="2009-08" />
 +        <result date="2009-09" />
 +        <result date="2009-10" />
 +        <result date="2009-11" />
 +        <result date="2009-12" />
 +        <result date="2010-01" />
 +        <result date="2010-02" />
 +        <result date="2010-03" />
 +        <result date="2010-04" />
 +        <result date="2010-05" />
 +        <result date="2010-06" />
 +        <result date="2010-07" />
 +        <result date="2010-08" />
 +        <result date="2010-09" />
 +        <result date="2010-10" />
 +        <result date="2010-11" />
 +        <result date="2010-12" />
 +        <result date="2011-01" />
 +        <result date="2011-02" />
 +        <result date="2011-03" />
 +        <result date="2011-04" />
 +        <result date="2011-05" />
 +        <result date="2011-06" />
 +        <result date="2011-07" />
 +        <result date="2011-08" />
 +        <result date="2011-09" />
 +        <result date="2011-10" />
 +        <result date="2011-11" />
 +        <result date="2011-12" />
 +        <result date="2012-01" />
 +</results>
 +Archiving period = year for idsite = 1...
 +<?xml version="1.0" encoding="utf-8" ?>
 +<results>
 +        <result date="2002" />
 +        <result date="2003" />
 +        <result date="2004" />
 +        <result date="2005" />
 +        <result date="2006" />
 +        <result date="2007" />
 +        <result date="2008" />
 +        <result date="2009" />
 +        <result date="2010" />
 +        <result date="2011" />
 +        <result date="2012" />
 +</results>
 +Archiving for idsite = 1 done!
 +Reports archiving finished.
 +---------------------------
 +Starting Scheduled tasks...
 +
 +task,output
 +Piwik_CoreAdminHome.optimizeArchiveTable,Time elapsed: 0.009s
 +Piwik_PDFReports.dailySchedule,Time elapsed: 0.005s
 +Piwik_PDFReports.weeklySchedule,Time elapsed: 0.001s
 +Piwik_PDFReports.monthlySchedule,Time elapsed: 0.002s
 +Piwik_PrivacyManager.deleteLogTables,Time elapsed: 0.000s
 +Finished Scheduled tasks.
 +</code>
 +
 +===== Datenbanknutzung =====
 +Je nach Auslastung unserer gewählten VHosts, werden nun bei jedem Besucher entsprechende Profildaten in unserer MySQL-Datenbanktabelle angelegt.
 +
 +{{ :centos:piwik_mysql.png?700 }}
 +
 +===== Piwik-Nutzerkonfiguration =====
 +Einen neuen Nutzer in unserem Piwik-System legen wir über den Menüpunkt **//User Management//**, nach der erfolgreichen Anmeldung anlegen können.
 +
 +{{ :centos:piwik_user_manager_1.png?600 }}
 +
 +Abschließend weisen wir diesem User noch die Berechtigung auf die entsprechende URL unseres Webservers zu.
 +
 +{{ :centos:piwik_user_manager_2.png?600 }}
 +===== Piwik-Website-Konfiguration =====
 +Weitere Web-Sitrs und Projekte geben wir unserem Piwik-System übeer den Menüpunkt //**SiteManagement**// bekannt.
 +
 +{{ :centos:piwik_site_manager_1.png?600 }}
 +
 +{{ :centos:piwik_site_manager_2.png?600 }}
 +
 +Nachfolgenden CJavaScript-Code fügen wir dann den entsprechenden Seiten unseres Web-Projektes hinzu.
 +
 +{{ :centos:piwik_site_manager_3.png?600 }}
 +===== Piwik-Stolperfalle(n) =====
 +==== VHost-Definition(en) ====
 +Beim Anlegen unseres VHostes ist darauf zu achten, dass nicht nur unser Admin-Account von einem Rechner oder Netz auf unseren VHost zugreifen können muss, sondern von __überall her__. Bei Schwierigkeiten am besten das **Error-Logfile** unseres Webservers ansehen, dort tauchen entsprechende Warnmeldungen auf.
 +==== Adblock Plus Plugin für Firefox ====
 +Was auch zu Irritationen führen kann, ist die Verwendung des Firefox-Plugins [[http://adblockplus.org/de/index|Addblock Plus]]. Bei unserem Versuch, das Surfverhalten auf unseren Seiten zu erfassen uns später auszuwerten, sind wir natürlich darauf angewiesen, dass der bzw. die Nutzer **JavaScript** aktiviert haben und keinen **Werbeblocker** ala [[http://adblockplus.org/de/index|Addblock Plus]] verwendet/verwenden.
 +
 +Bei eigenen Test mit //"fehlenden  Datenbankeinträgen"// beim Ansurfen also darauf achten, eine entsprechende Ausnahmeregel für unsere Domäne in Addblock Plus anzugeben.
 +
 +====== Links ======
 +  * **[[wiki:start|Zurück zu Projekte und Themenkapitel]]**
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
 +
  
  • centos/piwik.txt
  • Zuletzt geändert: 20.04.2018 10:26.
  • von 127.0.0.1