Piwik är ett Google Analytics-substitut baserat på fri- och öppen källkod.
I denna bloggpost beskriver vi hur du installerar Piwik på en Apache webbserver och konfigurerar en säker, krypterad anslutning via HTTPS till Piwik med hjälp av ett certifikat från den nya gratistjänsten Let’s Encrypt.
Skapa SQL databas och ladda ner Piwik
Det är ganska enkelt att installera Piwik på din egen webbserver. Nedan beskriver vi steg-för-steg hur vi installerade Piwik på vår webbserver som kör Apache 2.2, PHP 5.4 och MySQL 5.5.
Första steget var att skapa en SQL databas, så vi loggade in mysql -u root -p
och exekverade följande:
CREATE DATABASE piwik;
CREATE USER 'piwik'@'localhost' identified by '<lösenord>';
GRANT ALL PRIVILEGES ON piwik.* to 'piwik'@'localhost';
Därefter laddade vi ner den senaste stabila versionen av Piwik.
cd /var/www
wget http://builds.piwik.org/piwik.zip
unzip piwik.zip
Dubbelkolla därefter att rätt användare äger den nya mappen (/var/www/piwik
) och korrigera om nödvändigt med chown -R www-data:www-data /var/www/piwik
.
I det enklaste fallet vore vi nu redo att köra Piwiks webbaserade installation, men eftersom vår webbserver har flera virtualhosts definierade, och vi dessutom vill säkerställa att anslutningen till Piwik alltid sker över https, så ska vi först konfigurera en ny virtualhost med tvingande HTTPS-anslutning.
Konfiguration av Apache för krypterad anslutning till Piwik
Eftersom vi behöver ett icke själv-signerat certifikat (vi vill ju undvika att webbläsare varnar varje gång vi eller någon kund vill använda analysverktyget) så utnyttjar vi den utmärkta tjänsten från Let’s Encrypt för att skaffa ett domänvaliderat TLS-certifikat.
I det följande tänker vi oss att vi vill kunna komma åt vår Piwik-installation via https://piwik.asks.se (byt givetvis ut detta mot den adress du vill använda).
Inloggad som root på maskinen och i roots hemmapp klonade vi Let’s Encrypts repo:
root@localhost:~# git clone https://github.com/letsencrypt/letsencrypt
Därefter testade vi att köra ~/letsencrypt/letsencrypt-auto
och stötte på det första felmeddelandet: SNIMissingWarning
. Här kan det vara på sin plats att nämna att Let’s Encrypt repon är Python-kod vars ändamål är att automatisera nerladdning och installation av certifikatfilerna. Felmeddelandet tyder alltså på någon brist eller utdaterad kod i vår Python installation.
Felet ovan visade sig bero på att vi saknade Python-komponenten ndg-httpsclient
(alternativt hade en utdaterad version). Det kan vi alltså rätta till genom att köra:
sudo pip install --upgrade ndg-httpsclient
Men när vi körde det kommandot fick vi ett annat felmeddelande från Python: ImportError: No module named setuptools
. Detta fel var lite knepigare att förstå sig på, men det visade sig vara ett känt problem med pip
. Körde det skript som tillhandahölls och sedan gick installationen av ndg-httpsclient
felfritt.
wget https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py
sudo python ez_setup.py
sudo pip install --upgrade ndg-httpsclient
Då kan vi slutligen ladda ner och installera själva certifikatet. Läs med fördel användarguiden hos Let’s Encrypt först.
Först stoppade vi Apache (eftersom skriptet nedan behöver egen tillgång till port 80 och 443 för att utföra domänvalideringen):
sudo service apache2 stop
Därefter körde vi skriptet (som root) med följande parametrar:
cd /root/letsencrypt
./letsencrypt-auto certonly --standalone --email webmaster@asks.se -d piwik.asks.se
Först får man godkänna Let’s Encrypts användarvillkor, och sedan sköter mjukvaran resten. Det nya certifikatet skapas i mappen /etc/letsencrypt/live/piwik.asks.se/
. Notera att certifikatet gäller i 90 dagar.
Slutligen är det då dags att konfigurera vår virtualhost. Eftersom detta inte är vår enda HTTPS virtualhost på denna webbserver måste vi se till att /etc/apache/ports.conf
innehåller raden NameVirtualHost *:443
, samt att default-konfigurationen i /etc/apache2/sites-available/000-default-ssl
använder <VirtualHost *:443>
istället för <VirtualHost _default_:443>
. Detta är alltså enbart nödvändigt om webbservern har fler än en HTTPS virtualhost.
Och så skapade vi /etc/apache2/sites-available/piwik.asks.se
(symlänkat till /etc/apache2/sites-enabled/piwik.asks.se
):
<VirtualHost *:80>
ServerAdmin webmaster@asks.se
DocumentRoot /var/www/piwik/
ServerName piwik.asks.se
Redirect permanent / https://piwik.asks.se/
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@asks.se
DocumentRoot /var/www/piwik/
ServerName piwik.asks.se
SSLEngine On
SSLCertificateKeyFile /etc/letsencrypt/live/piwik.asks.se/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/piwik.asks.se/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/piwik.asks.se/chain.pem
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
</VirtualHost>
Och så glöm inte att starta om Apache! sudo service apache2 restart
Hur man kan göra för att automatiskt förnya certifikatet var 90:e dag spar vi till en möjlig framtida bloggpost.
Installera Piwik
Gå till Piwik webbaserade installation genom att öppna piwik.asks.se
i din webbläsare. Om allt är korrekt konfigurerat så ska webbläsaren automatiskt skickas vidare till https://piwik.asks.se
utan varningar eller felmeddelanden.
Själva installationen är mycket enkel och bara att klicka sig igenom, och här får du också fylla i uppgifterna till MySQL-databasen vi skapade i första steget.
Sedan lägger man till de webbsajter man vill analysera. Jag har använt Piwik i kombination med statiska sajter (klistra in Javascript på egen hand) såväl som Drupal- och Wordpress-sajter (officiella moduler/plugins finns).
Piwik bygger alltså på fri- och öppen mjukvara (GPL v3 licens, utvecklingen sker också öppet på github-repo) och kan förutom webbanalys (“web analytics”) även användas till “ecommerce analytics”, “server log analytics” och “intranet analytics”. Kort sagt, ett mycket intressant verktyg att ha tillgång till!
Relaterade länkar
Jag är långt ifrån den förste att upptäcka nyttan med Piwik. Nedan länkar vi till andra som beskrivit hur Piwik installeras, konfigureras eller används.
- Piwik webbstatistik, snabbguide. Publicerad av Västra Götalandsregionen, 2013 (MS doc-format).
- Håll koll på din besöksstatistik med Piwik Analytics. OrdPress, 2015.
- Piwik, ett alternativ till Google Analytics. FSData blogg, 2013.
- Installera Piwik på en hemsida. FSData manual.
- Statistik över bloggbesök. Jan Höglunds blogg, 2012.
Toppfoto: Riverside Museum via photopin. CC BY 2.0 licens.