Hogyan telepítsük a Matomo (korábban Piwik) webanalitikai szoftvert Apache rendszerű szerverünkre

botond küldte be 2019. 09. 01., v – 16:01 időpontban

Tartalom

 

Az 1. oldal tartalma

 

 

Bevezető

Végre most volt egy kis időm elkészíteni ezt a hosszabb leírást, amiben bemutathatom a Matomo (korábbi nevén Piwik) webanalitikai szoftver telepítésének előkészítését, lépéseit és használatát. Ezt a webstatisztikai rendszert én már körülbelül másfél éve használom, nagyon jó szolgálatot tesz. Nálam például már majdnem teljesen kiváltotta a Google Analytics-et. Néhány fő szempont, ami miatt mindenkinek ajánlom a használatát:

  • Pontos
  • Áttekinthető
  • Kényelmes kezelőfelülettel rendelkezik
  • Látványos paneleket tartalmaz
  • Nagy tudású (iszonyat sokféle lekérdezés van benne, variálható keresztmetszetekkel, stb.)
  • Az összegyűjtött adatok nálam maradnak, nem más cégek szerverein gyűlnek
  • Akárhány weboldal statisztikája követhető
  • Rendszeres frissítések, amik 2 kattintással telepíthetők.
  • CMS rendszerek és webáruház motorok széles körébe integrálható

Tehát aki weboldalt üzemeltet, akár sajátot, akár ügyfélét, azoknak ez kötelező darab! Hivatalos weboldaluk: itt.

A Matomo rendszerét kétféleképpen lehet használni: felhő alapon ők szolgáltatják a hátteret – hasonlóan a Google Analytics és más szolgáltatásokhoz –, vagy az ingyenesen letöltött szoftvercsomagot szerverünkre telepítve magunk üzemeltetjük azt weboldalaink mérésének céljából. Ebben a leírásban az utóbbi módon fogjuk használni: egy meglévő szerverre telepítjük fel, ami azután precíz statisztikai adatokkal fog ellátni minket a szerveren működő weboldalak látogatói forgalmáról. A szoftver beüzemelését egy Apache webkiszolgálón végezzük el, ezért ennek megléte szükséges.

Hosszú leírás!
Ez a leírás nem csak a Matomo (Piwik) rendszer feltelepítéséről szól, hanem annak előkészületeiről, valamint az utána lévő szükséges beállítások precíz kivitelezéséről (pl. cron, naplófájlok kezelése, GeoIP beállítás, egyedi követőkódok építése, PHP-FPM beállítás, stb), ezért nagyon hosszú. Igyekeztem minden saját tapasztalatot, információt összeállítani ebben a több oldalas bejegyzésben, amiket én is összegyűjtöttem a közel két éves Matomo használat során, hogy ne csak egy sima telepítési útmutatóval szolgálhassak, mint amilyenekkel találkozni lehet általában az interneten is. Ez a statisztikai rendszer nálam folyamatosan kiváló szolgálatot tesz, így szeretném, ha másoknak is hasznára válna.

 

Alapfeltételek

Az útmutató elvégzéséhez szükségünk lesz az alábbi (korábban elkészített) szerverek közül valamelyikre:

Ezek a szerverek tehát mind Apache webkiszolgálóval kerültek feltelepítésre, valamint a Matomo számára szükséges összetevőket is tartalmazzák, így bármelyik alkalmas ennek a leírásnak az elkészítéséhez.

Matomo (Piwik) rendszerkövetelmények

A feltelepítésre kerülő szoftvernek pedig az alábbiakra van szüksége, ha esetleg mégsem a fenti szerverek közül választanánk az alap gépet:

  • Apache vagy Nginx webkiszolgáló (jelen leírást az Apache-al végezzük, így most csak erre lesz szükség).
  • PHP 5.5.9 vagy újabb, a következő bővítményekkel: pdo és pdo_mysql vagy mysqli, gd, xml, curl, és mbsting. A PHP 7.x verziója ajánlott.
  • MySQL 5.5-ös vagy újabb, vagy az ezzel egyenértékű MariaDB. MySQL 5.7+ ajánlott.
  • Továbbá nem árt egy (akármilyen) weboldal, ahova be tudjuk majd kötni a Matomo mérőkódját, hogy tesztelhessük a webstatisztikát.

Tehát minimum egy Debian 8 LAMP szerver, vagy ahhoz hasonló telepítésű gép szükséges.

Ezt az útmutatót a fentiek közül én a vastaggal kiemelt Debian 9 (Stretch) tökéletes szerver 1.0-ás változatán végzem el (ekkor ez volt a legfrissebb), ennek megfelelően a szerver következő felkerülő verziója már tartalmazni fogja ezt a telepítést is.

 

 

Előkészületek

Csomagtár adatbázis és a csomagok frissítése

Most nem végzünk olyan mélyreható munkálatokat a szerveren, ettől függetlenül mindig érdemes frissíteni a csomagtárunkat és a csomagjainkat, hogy mindenből a legfrissebb verziót használhassuk. Ehhez futtassuk a shell-ben a megfelelő apt-get parancsokat root-ként:

apt-get update
apt-get -y upgrade

Adatbázis és felhasználó létrehozása

Noha én egy ISPConfig kezelőpanellel rendelkező tökéletes szervert választottam kiindulásnak, ennek ellenére most nem a kezelőpanelben hozzuk létre az adatbázist, és annak felhasználóját. Egyrészt hogy a fent felsorolt egyszerűbb LAMP szervereken is ugyanígy el lehessen végezni ezeket a lépéseket, másrészt pedig az ISPConfig-ban csak weboldalhoz kapcsolódó adatbázisokat lehet létrehozni, ami itt most nem állná meg a helyét, mivel ez az adatbázis nem kapcsolódik a szerveren esetlegesen működő egyik weboldalhoz sem, hanem egy független rendszer lesz.

Az adatbázist még így is kétféleképpen hozhatjuk létre: parancssorból vagy ha van phpMyAdmin a szerveren, akkor azzal. Most a parancssori módszert hajtjuk végre, ez gyorsabb, mint a phpMyAdminban szöszölni. Ehhez futtassuk a mysql parancsot root-ként vagy sudo-val, és szintén root-ként lépjünk be a mySQL-be is:

sudo mysql -u root -p

Ekkor bekéri tőlünk a MySQL root jelszavát, gépeljük be.

Sikeres belépés után az adatbázis szerverünk konzoljában találjuk magunkat. Itt végrehajtjuk az alábbiakat:

  • Új adatbázis létrehozása "matomo" néven
  • Adatbázis minden jogosultságának hozzákapcsolása az újonnan létrehozandó "matomo" nevű felhasználóhoz, aminek a jelszava: "matomo_db"
  • Jogosultsági gyorsítótár ürítése
  • Kilépés

Ezekhez pedig a konzolban hajtsuk végre egyesével a következő négy parancssort, természetesen az adatbázis nevet, felhasználót és jelszót tetszőlegesen választhatjuk meg (de célszerű következetesen kiválasztani a megfelelő neveket):

create database matomo;
GRANT ALL ON matomo.* TO 'matomo' IDENTIFIED BY 'matomo_db';
FLUSH PRIVILEGES;
exit;

A sorok végén lévő pontosvesszőkről se feledkezzünk meg!

Normál esetben így néz ki a dolog:

Matomo adatbázis és felhasználó létrehozása a konzolban

Ha pedig a phpMyAdminból is szeretnénk ellenőrizni a művelet sikerességét, akkor lépjünk be az imént létrehozott felhasználónkkal:

phpMyAdmin - Belépés a matomo felhasználóval

És láthatjuk is, hogy a létrehozott felhasználóval be tudunk lépni, valamint a hozzárendelt adatbázis is megjelenik a bal oldalon.

Tárhely kialakítása

Ebben a lépésben kialakítjuk a Matomo (Piwik) rendszer számára a fizikai tárhelyet, ahonnan futni fog a rendszer. Ezt olyan könyvtárban hozzuk létre, amely szintén bármelyik szerver konfigurációban rendelkezésre áll.

Root-ként belépve hozzunk létre egy alkönyvtárat, mondjuk a /opt könyvtár alatt:

mkdir /opt/matomo

Hozzunk létre a könyvtárban egy php fájlt, amivel tesztelhetjük majd a PHP működését, valamint a szükséges PHP bővítmények meglétét és a megfelelő beállításokat:

nano /opt/matomo/phpinfo.php

És tegyük bele az alábbi sorokat:

1
2
3
<?PHP
    phpinfo();
?>

Mentsük le, ezzel majd hamarosan lesz még dolgunk.

 

 

Apache konfiguráció beállítása

Ebben a részben beállítunk egy globális Apache konfigurációt, aminek köszönhetően a szerveren lévő weboldalak alól elérhető lesz a Matomo webanalitikai rendszer. Így akár ügyfelek számára is kiadhatók a saját domain neveik alól elérhető statisztikai hozzáféréseik.

Root-ként hozzunk létre egy új Apache konfigurációs fájlt:

nano /etc/apache2/conf-available/matomo.conf

Majd ebbe tegyük bele az alábbi tartalmat:

Alias /matomo /opt/matomo

<Directory /opt/matomo>
        Options +FollowSymLinks
        Options -Indexes
        AllowOverride All
        Require all granted
        DirectoryIndex index.php index.html

#        <IfModule mod_php5.c>
        <IfModule mod_php7.c>
                AddType application/x-httpd-php .php
                php_flag display_errors On
                php_value session.gc_maxlifetime 3600
                # A következő beállítás a Matomo-nak kell:
                #php_value always_populate_raw_post_data -1
                # Ha gondok vannak a működéssel (php hibák) javasolják az opcache kikapcsolását.
                #php_flag opcache.enable Off
        </IfModule>

</Directory>

A konfigurációs fájl – ami egyébként majdnem olyan, mint egy virtualhost fájl – sorainak jelentése a következő:

  • Alias: Ezzel a direktívával engedélyezzük, hogy a dokumentum gyökéren kívüli helyi fájlstruktúrában elhelyezett tartalom kintről is elérhetővé váljon. Jelen esetben ez a /opt/matomo/ könyvtárban lévő tartalmat fogja kiszolgálni a weboldalak alatt lévő /matomo (virtuális) könyvtárak alól.
  • <Directory /opt/matomo>: Itt határozunk meg egy blokkot, amelyben a beállítások a megadott könyvtárra vonatkoznak.
    • Options +FollowSymLinks: Szimbolikus linkek követése a webes tartalomban. 
    • Options -Indexes: Ezzel letiltjuk az olyan könyvtárak listázását, ami nem tartalmaz index.php, index.html, stb fájlokat. Ezzel növelve a biztonságot.
    • AllowOverride All: Ezzel engedélyezzük, hogy a könyvtárakban elhelyezett .htaccess fájlokban lévő beállítások felülírják a globális Apache konfigurációs beállításokat. Sok rendszer használja a .htaccess fájlokat, ezért érdemes bekapcsolni.
    • Require all granted: Ezzel engedélyezzük, hogy bárki elérhesse kintről ezt a webes tartalmat (például nem kérünk HTTP hitelesítést, stb).
    • DirectoryIndex index.php index.html: Index fájltípusok betöltési sorrendje. Először az index.php-t keresi, majd a html-t.
    • #<IfModule mod_php5.c>: Egy egy újabb blokk meghatározása, amiben akkor kerülnek kiértékelésre a beállítások, ha a mod_php5 modul be van töltve. PHP5-el rendelkező rendszereken (pl. Debian 8 alapú rendszerek) ezt használjuk, a következőt pedig kommentezzük ki.
    • <IfModule mod_php7.c>: Ugyanaz, mint az előző, csak ez a PHP7 Apache modul meglétét figyeli. Újabb rendszereken (pl. Debian 9 vagy Ubuntu 18.04) ezt használjuk, és az előzőt kommentezzük ki.
      • AddType application/x-httpd-php .php: Hozzárendeljük a .php kiterjesztést a megfelelő MIME típushoz. Ez alapján fogja tudni az Apache, hogy mit kell kezdenie a .php fájlokkal.
      • php_flag display_errors On: PHP direktíva: Hibák megjelenítésének bekapcsolása. Ezt az elején hagyjuk bent, majd amikor már leteszteltük a Matomo-t, és minden megfelelően működik, akkor kommentezzük ki. Kikapcsolt állapotban is követhetjük a PHP hibákat a megfelelő naplófájlokban, de ezzel egyből észrevehetjük a böngészőben megjelenő hibaüzeneteket.
      • php_value session.gc_maxlifetime 3600: PHP globális változó: Ezt én szoktam használni, hogy pontosan 1 órásak legyenek a munkamenetek. Nem szeretem a gyári 20 perces beállítást. Persze mindenki állítsa be a számára megfelelő értéket, itt nincs semmilyen követelmény.
      • php_value always_populate_raw_post_data -1: PHP globális változó: Ezt valamelyik Matomo leírásban találtam anno, hogy kell neki ez a beállítás. Azonban ezt a globális PHP változót a PHP 7.0-tól már eltávolították, így csak a PHP5 esetén van szerepe.
      • #php_flag opcache.enable Off: PHP direktíva: Alapból ki van kommentezve itt. Korábbi Matomo verzióknál adódtak gondok a PHP opcache-el. Ilyenkor a statisztikák AJAX paneljein hibaüzenetek jelentek meg, és csak egy Apache újraindítás oldotta meg a gondot. Ha ilyesmi fordult elő, akkor ezzel a direktívával lehetett kikapcsolni a Matomo-nál a PHP opcache-t (dokumentáció erről). Azóta már sok idő eltelt, gondolom javíthatták is a hibát, valamint én is áttértem közben a PHP-FPM alapú Matomo konfigurációra, ami már másképp működik (erről majd a leírás végén). Így éles környezetben azóta nem tudtam újra előidézni illetve tesztelni a problémát. Ha a hiba továbbra is fennáll a működés során, akkor vegyük ki a kommentet a direktíva elől.

Ezek lennének tehát ennek az Apache konfigurációnak a beállításai, remélem tudtam hasznos infókkal szolgálni, hogy szükség esetén mindenki könnyebben tudja finomhangolni a saját beállításait.

Lényegében ez egy egyszerű – a PHP-t Apache modulként futtató – konfiguráció, ami gyakorlatilag bármelyik Apache + PHP telepítésnél az alapértelmezett futtatási mód. A leírás végén átnézzük majd, hogy a nagyobb teljesítmény és hatékonyság érdekében hogyan tudjuk mindezt átültetni PHP-FPM-re.

Ha elkészültünk a beállításokkal, és lementettük a fájlt, akkor engedélyezzük ezt a konfigurációt az alábbi a2enconf paranccsal:

a2enconf matomo

Ha nincs fatális hiba, akkor a következő kimenetet adja:

Enabling conf matomo.
To activate the new configuration, you need to run:
  systemctl reload apache2
Amennyiben éles szerveren tevékenykedünk, akkor itt még nagyon ajánlott ellenőrizni a konfigurációnk szintaktikájának helyességét is, mert hiba esetén előfordulhat, hogy nem indul újra az Apache. Ilyenkor pedig állnak az oldalak, amíg el nem hárítjuk a hibát és újból újra nem indítjuk az Apache-ot. Ezt elkerülendő, futtassuk a konfigtesztet az apache2ctl parancs segítségével:
apachectl configtest

Nálam ezen az ISPConfig-os szerveren ezt adja ki:

AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabled/000-ispconfig.conf:73
Syntax OK

Itt az ISPConfig-nál van egy figyelmeztetés, amivel nem foglalkozunk (LAMP szervereknél ez nem jelenik meg), majd utána írja, hogy Syntax OK. Tehát alapvetően jók a bekapcsolt konfigurációk, így most jöhet is az Apache újraindítása a systemctl paranccsal:

systemctl reload apache2

Sikeresség esetén nem ad kimenetet. 

 

 

Tárhely tesztelése

Végezetül teszteljük frissen kialakított tárhelyünket, ami magában foglalja az Apache konfiguráció működőképességét és a PHP megfelelő beállításait is. Nyissuk meg a böngészőnkben a korábban létrehozott phpinfo.php fájlt.

Ezt a tárhelyet többféleképpen is elérhetjük a szerveren:

  • http://192.168.1.120/matomo/phpinfo.php
  • http://www.weboldal1.tld/matomo/phpinfo.php
  • http://www.weboldal2.tld/matomo/phpinfo.php
  • stb...

Tehát egyrészt elérhető a szerver IP-címe alatt lévő /matomo könyvtárból, valamint ha vannak weboldalak a szerveren, akkor bármelyik alatt elérhető a /matomo alkönyvtárakból. Betöltve a php fájlunkat normál esetben a phpinfo() PHP függvény kimenete fogad bennünket:

Tárhely tesztelése

Ezen a szerveren már korábban feltelepítésre került egy WordPress oldal, aminek a domain nevét is beállítottam a hosts fájlomba, így nálam ez alól is bejön ez az oldal.

Itt láthatjuk az elején a Server API résznél a "Apache 2.0 Handler"-t, azaz hogy Apache modulként fut ez a php fájl, valamint lejjebb görgetve pedig ellenőrizhetjük a PHP többi beállításait.

Ha szükség lenne a beállítások módosítására, akkor azt a képen is jelzett php.ini fájlban végezhetjük el: /etc/php/7.0/apache2/php.ini. PHP5 esetén pedig a /etc/php5/apache2/php.ini fájlban. Az esetleges módosítások után ne felejtsük el újraindítani az Apache-ot!

 

A következő oldalon folytatjuk a Matomo (korábbi nevén Piwik) webanalitikai rendszer telepítésével.

 

 

Lapozó

Ez a leírás több oldalból áll: