Tartalom
- oldal: Matomo frissítése előtti beállítások, frissítés
- oldal: Frissítés utáni beállítások, geolokáció
A 2. oldal tartalma
Folytatás
A leírás első oldalán elvégeztük a Matomo (Piwik) webanalitikai rendszer frissítése előtti szükséges beállításokat, és frissítettük a rendszert, ezen az oldalon pedig elvégezzük a frissítések utáni szükséges beállításokat.
Matomo 4 - A frissítés utáni rendszerkövetelmények biztosítása
A Matomo (Piwik) webanalitikai rendszer telepítése után már eleget tettünk a rendszerkövetelményeknek, de a mostani főverzió frissítése után szerverünknek meg kell felelnie a megváltozott rendszerigényeknek is. Ezek hosszú listájához az Admin főoldal középső, "Rendszerellenőrzés" panelén lévő "View the full system check report" linkre kattintva juthatunk el:
Ezen az oldalon kapunk egy igen hosszú listát, amin akad néhány megoldásra váró probléma is. Ezek természetesen nagyban függenek a rendszerünk konfigurációjától, ezért más szerveren más állapotok fordulhatnak elő, amik között eltérő hibák is lehetnek. Ebben a leírásban most ezeken haladunk végig amik ebben a listában vannak. Egyéb hibákat ebben a leírásban most nem tárgyalunk, de ha a Matomo rendszerünket az itt található korábbi telepítési útmutató szerint végeztük, akkor nagy valószínűséggel itt nem fogunk találkozni más problémákkal.
A lista elején láthatjuk, hogy például a PHP verziónk rendben van, frissebb, mint a Matomo 4 számára szükséges 7.2.5-ös minimum verzió. Fent találunk egy külön görgethető panelt, amiben log fájl formában jelennek meg az információk. Ez a rész nem annyira áttekinthető, mint az alatta lévő formázott lista elrendezés, így görgessünk is tovább az alatta lévő részre.
Fájlintegritás
A fájlintegritás amolyan biztonsági és technikai ellenőrzés, amiben a Matomo összehasonlítja a telepített példányunkban lévő fájlokat az adott verzióhoz tartozó "sablonnal". Így például ha a Matomo könyvtáraiban felesleges fájlt talál, akkor jelzi, hogy azok nem kellenek a jelenlegi verzióban, így törölhetjük őket. Vagy ha valamelyik fájl mérete nem egyezik meg a "gyári" példány megfelelő fájljának méretével, akkor is jelez. Ugyanígy, ha hiányzik valami, azt is jelzi nekünk. Továbbá a rendszer össze is állítja a futtatandó kész Shell parancsokat, amikkel javíthatjuk a hibákat.
Nálam ezt jeleníti meg a rendszer:
Ha itt nem jelenik meg egy hasonló szürke panel, hanem zöld pipa van a fájlintegritás sorában, akkor itt nincs teendőnk, ugorjuk át ezt a részt. De a főverzió frissítése után szinte biztos, hogy törölgetnünk kell pár dolgot.
Itt lépjünk be a matomo felhasználónkkal, amit még telepítés után hoztunk létre neki (a PHP-FPM miatt), és azzal futtassuk a parancsokat. Root felhasználóból egyszerűen átléphetünk a su parancs segítségével a matomo felhasználóba:
su -l matomo
Ha viszont anno a Matomo telepítése után nem hoztunk létre ilyen felhasználót, mert nem készítettük el a PHP-FPM módosítást, akkor futtassuk root-ként a megadott parancsokat.
Ezek alapján tehát nekem futtatnom kell az alábbi parancsokat:
rm -Rf /opt/matomo/libs/bower_components
rm \
"/opt/matomo/bower.json" \
"/opt/matomo/composer.json" \
"/opt/matomo/composer.lock" \
"/opt/matomo/js/piwik-min.js" \
"/opt/matomo/js/piwik.js.orig" \
"/opt/matomo/misc/gpl-3.0.txt" \
"/opt/matomo/misc/others/ExamplePiwikTracker.php" \
"/opt/matomo/vendor/davaxi/sparkline/.codeclimate.yml"
Az iménti parancsok csak az én szituációmra vonatkoznak, más rendszerben lehet, hogy ezektől eltérő parancsokat kell futtatni, ezért a szürke panelről másoljuk ki a saját parancsainkat.
A kért parancsok futtatása után frissítsük az F5-el a lista oldalt, és győződjünk meg róla, hogy az iménti szürke panel eltűnt, és a helyére zöld pipa került.
Adatbázis
A következő megoldásra váró probléma az adatbázisra vonatkozik. Illetve itt több teendőnk is van.
Adatbázis konvertálása
Itt annyi a lényeg, hogy a Matomo 4 más karakterkódolást használ, aminek segítségével meg tud jeleníteni különböző speciális karaktereket is, mint például az emojik, stb. Ezt valamiért nem végzi el a frissítő rendszerük, biztos okkal, tehát futtassuk a megadott parancsot:
/opt/matomo/console core:convert-to-utf8mb4
A parancs futtatásakor először kiírja, hogy a művelet során leállítja a weboldalak forgalmának követését és rákérdez, hogy futtathatja-e a műveletet. Itt mehet az "y".
Itt néhány másodperc alatt lefutott. De például a rendes szerveremen ez több percet is igénybe vett.
LOAD DATA INFILE engedélyezése
A LOAD DATA INFILE MySQL/MariaDB lehetőség segítségével az adatbázis nagy sebességgel képes fájlokból sorokat beolvasni. A Matomo (Piwik) webanalitikai rendszer erre támaszkodva sokkal gyorsabban fogja tudni beolvasni az eltárolt adatokat, amikor például különböző statisztikai összesítéseket, kimutatásokat kérünk tőle.
A hibaüzenet tehát, ami megmaradt az adatbázis résznél az előző probléma elhárítása után:
Ebben a PHP környezetben alapból ki van kapcsolva ez a PHP mysqli tulajdonság, de máshol lehet, hogy be van kapcsolva, ezért nem adja ezt a hibát. Utóbbi esetben ugorjuk át ezt a részt.
A LOAD DATA INFILE bekapcsolásához engedélyezni kell a "mysqli.allow_local_infile" PHP változót. Alapesetben ennyi is elég hozzá, de előfordulhat, hogy kell még mellé egy megfelelő "open_basedir" beállítás is, hogy a PHP minden esetben hozzáférjen a szükséges fájlokhoz, ezáltal a mysqli bővítmény is. Így célszerű mindkettőt beállítani, hogy biztosan működjön.
Beállítás PHP-FPM esetén
Amennyiben elvégeztük a fentebb említett PHP-FPM beállítást, ebben az esetben lépjünk be root-ként a Matomo rendszerünket futtato PHP-FPM pool-jába, és szerkesszük a konfigurációs fájlt. Nálam például ezen a Debian 9-es szerveren:
nano /etc/php/7.4/fpm/pool.d/matomo.conf
A fájl végén vannak a saját PHP beállítások, amiket anno létrehoztunk, ezekhez adjuk hozzá az alábbi két sort:
[...] php_admin_value[mysqli.allow_local_infile] = on php_admin_value[open_basedir] = "/opt/matomo:/opt/matomo/tmp/assets" [...]
Tehát hogy így nézzen ki a fájlunk vége:
Mentsük le, majd indítsuk újra ezt a PHP-FPM-et:
systemctl restart php7.4-fpm.service
Természetesen ha másik PHP-vel futtatjuk a Matomo-t, akkor annak a pool-jában szerkesszük a konfigurációs fájlt és annak az FPM szolgáltatását indítsuk újra.
Ennek előnye, hogy ezek a beállítások csak a Matomo futási környezetére vannak hatással.
Beállítás alapértelmezett PHP mód esetén
Ha nem állítottuk át a Matomo rendszerünket PHP-FPM-re, akkor alapesetben mod_php módban (Apache modulként) fut a rendszerünk. Keressük meg annak a PHP-nek a php.ini fájlját amelyik futtatja a Matomo webstatisztikánkat, és azt nyissuk meg root-ként szerkesztésre.
Ezen a Debian 9 (Stretch) szerveren az alapértelmezett PHP a 7.0, de most a frissítéskor muszáj volt feltennünk egy újabb PHP-t, ami legalább a 7.2.5. Tehát ennek megfelelően keressük meg az ini fájlt. Például itt a 7.4 esetében:
nano /etc/php/7.4/apache2/php.ini
És adjuk a végéhez az alábbi két sort:
[...] mysqli.allow_local_infile = On open_basedir = "/opt/matomo:/opt/matomo/tmp/assets"
Ezután indítsuk újra az Apache-ot, mivel ilyenkor ez futtatja a PHP-t:
systemctl restart apache2.service
Ha elvégeztük a PHP változók beállítását, akkor ezt a problémát is elhárítottuk:
Ha ezekkel a beállításokkal mégse sikerülne megoldani a problémát, akkor a Matomo hibaelhárító oldalán találhatunk még ötleteket, hogy mi akadályozhatja még a LOAD DATA INFILE működését.
A lista végére is értünk, ebben a telepítésben nincs egyéb probléma. Ilyenkor a lap tetején egy zöld keretes panelen jelzi nekünk, hogy hibátlan a Matomo konfigurációnk:
Geolokáció
Bár ez a téma még beleférne a frissítés utáni követelmények fejezetébe is, ám a Geolokáció érdemel egy külön fejezetet, mivel egyrészt nem alapfeltétel, tehát nem kötelező a beállítása/használata, másrészt ennek a beállítása, beüzemelése kicsit több munkát igényel, ami ebben a külön fejezetben kényelmesebben elfér.
Ha a Matomo (Piwik) webanalitikai rendszer telepítésekor beállítottuk a geolokációt, és a mostani főverzió frissítése után is gond nélkül működik, akkor ezzel nincs további teendőnk, át is ugorhatjuk ezt a részt.
Azonban nálam voltak problémák a szerveremen a Matomo frissítése után, amik abból adódtak, hogy már nagyon régen telepítettem a GeoIP 2 működéséhez szükséges összetevőket, amik idő közben elavultak. Ebben a részben tehát szeretnék bemutatni egy saját, életszerű problémát, ami talán lehet hogy egyedi, de lehet, hogy másoknál is előfordul a Matomo frissítése után, így segítséget nyújthat az itt leírásra kerülő megoldás.
A hibajelenség
A Matomo webanalitikai rendszer 4.0.x főverziójára történő frissítés után megállt a weboldalak mérése. Belépve az admin főoldalára fent, középen egy piros panelen egy hibaüzenet fogadott:
Ezután körbe néztem a többi menüben is, majd a Geolokáció menübe lépve dobott egy ilyen hiba oldalt:
A hibaüzenet pontosan tehát:
A fatal error occurred The following error just broke Matomo (v4.0.5): Call to undefined method MaxMind\Db\Reader::getWithPrefixLen() in /opt/matomo/vendor/geoip2/geoip2/src/Database/Reader.php line 232
Ami annyit tesz, hogy az új Matomo 4.0.5 megpróbálta meghívni a maxminddb php bővítményének (GeoIP 2) egy getWithPrefixLen() nevű metódusát, ami nem létezik.
A képernyő alsó részén ajánlott még alternatív hibaelhárítást is, hogy például kapcsoljuk ki a harmadik féltől származó plugin-eket, és fel is sorolta őket, hogy melyek azok. Persze már ránézésre is látszott, hogy nem ezek okozták a gondot, hanem a GeoIP rész, ezért ezen a vonalon kellett továbbhaladni.
Átmeneti megoldás
Gyorsan kellett valamit tenni, hogy az oldalak mérése működjön, ezért visszaléptem az előző oldalra, ahol még volt menü, és a bal oldalon beléptem a bővítmények menübe, és átmenetileg kikapcsoltam a Geoip2(core) bővítményét:
Ha a geolokáció körül van a probléma, akkor elsőre ez a logikus lépés. Kikapcsolás után helyre is állt a rendszer, minden működött, kivéve persze a városszintű geolokációt. Így, hogy már nincs hiba, és az oldalak mérése is ment tovább, már volt idő alaposabban körbejárni a problémát és megtalálni rá a megoldást.
Végleges megoldás
A maxminddb php bővítmény részletei a phpinfoban:
Itt a maxminddb php bővítmény verziója 1.4.1, és a libmaxminddb függvénykönyvtár verziója pedig 1.3.2. Összevetve az aktuális verziókkal: a maxminddb php bővítmény aktuális verziója 1.8.0 (2020. október 1-jei kiadás) és a libmaxminddb függvénykönyvtár mostani verziója pedig 1.4.3 (2020. augusztus 6-ai kiadás). Tehát eljárt felettük az idő.
Mivel ezeket a kiegészítőket a Matomo webanalitikai rendszer telepítése után külön kézzel fordítottuk le forrásból, ezért nem frissültek maguktól, újra végre kell hajtani a fordítást és telepítést.
Itt most ugyanazt végezzük el, mint korábban a Matomo telepítése után, csak a frissebb verziókkal: feltelepítjük először a libmaxminddb C függvénykönyvtárat, majd utána pedig a maxminddb php extension-t.
Libmaxminddb C függvénykönyvtár újratelepítése
Ha korábban nem állítottuk be a geolokációt, viszont most úgy döntünk hogy beállítjuk, akkor először telepítsük fel a fordításhoz szükséges segédeszközöket tartalmazó csomagokat. Lépjünk be root-ként, és futtassuk az alábbi parancsot:
apt-get -y install gcc build-essential
Ha viszont korábban már használtuk a MaxMind geoip2 php bővítményét, akkor ezek a csomagok már telepítve vannak.
Keressük meg a GitHub oldalán a libmaxminddb C függvénykönyvár legfrissebb változatát az alábbi linken:
https://github.com/maxmind/libmaxminddb/releases/latest
Másoljuk ki a libmaxminddb-x.y.z.tar.gz link címét, majd töltsük le a /tmp könyvtárunkba:
cd /tmp
wget https://github.com/maxmind/libmaxminddb/releases/download/1.4.3/libmaxminddb-1.4.3.tar.gz
Természetesen ha van ennél frissebb változat, akkor azt használjuk!
Csomagoljuk ki a letöltött archív fájlt a tar paranccsal, és utána lépjünk be a létrejött könyvtárba:
tar -xvzf libmaxminddb-1.4.3.tar.gz
cd libmaxminddb-1.4.3
Ezután fordítsuk le a forráskódot, és ellenőrizzük, hogy minden jól ment-e:
./configure
make
make check
Ha nem volt hiba, akkor ilyen kimenetet kapunk:
Végül telepítsük a lefordított csomagot, majd futtassuk az ldconfig parancsot a cache újraépítéséhez (root-ként futtassuk):
make install
ldconfig
Ezzel a libmaxminddb C függvénykönyvtár fordításával és telepítésével elkészültünk.
Törölhetjük a /tmp könyvtárból a szükségtelen dolgokat:
cd /tmp
rm -rf libmaxminddb-1.4.3*
MaxMind-DB-Reader-php PHP bővítmény újratelepítése
PHP bővítmények telepítéséhez szükség lesz a phpize parancsra, ami a PHP fejlesztői csomagokban található. PHP fejlesztői csomag beszerezhető bármelyik PHP verzióhoz, most arra lesz szükségünk, amelyikkel futtatjuk a Matomo (Piwik) webanalitikai rendszerünket.
Megfelelő phpize verzió beszerzése
Töltsük le a megfelelő PHP verziónk development csomagját. Ebben a példában a 7.4-esre lesz szükség, ami az alábbi parancs futtatásával települ:
apt-get -y install php7.4-dev
phpize -> /usr/bin/phpize -> /etc/alternatives/phpize -> /usr/bin/phpize7.4
A korábbi phpize verziók továbbra is megtalálhatók a /usr/bin könyvtárban. Azonban ha több PHP rendszer van telepítve a szerverünkön, akkor a phpize
PHP bővítmény telepítése
Lépjünk a /tmp könyvtárba és töltsük le a MaxMind-DB-Reader-php PHP bővítmény zip változatát a GitHub oldaláról:
cd /tmp
wget https://github.com/maxmind/MaxMind-DB-Reader-php/archive/master.zip
Csomagoljuk ki, és lépjünk be a létrejött könyvtár alatti ext/ alkönyvtárba:
unzip master.zip
cd MaxMind-DB-Reader-php-master/ext
Itt futtassuk a megfelelő verziójú phpize parancsot (root-ként):
phpize7.4
A parancs kimenete a PHP verziónk build-jától függően:
Configuring for: PHP Api Version: 20190902 Zend Module Api No: 20190902 Zend Extension Api No: 320190902
Ezután konfiguráljuk, fordítsuk le a forrást, majd telepítsük (szintén root-ként):
./configure
make
make install
Ezután nyissuk meg a megfelelő php.ini fájlt szerkesztésre.
PHP-FPM
Ha PHP-FPM-el futtatjuk a Matomo rendszert, akkor:
nano /etc/php/7.4/fpm/php.ini
Ezt az alábbi módon tehetjük meg a php.ini helyett a Matomo FPM konfigurációjában:
nano /etc/php/7.4/fpm/pool.d/matomo.conf
Majd adjuk a többi PHP változó beállításai után az alábbi sort:
php_admin_value[extension] = maxminddb.so
Tehát ilyenkor csak a Matomo pool-jában kerül betöltésre ez a php modul, és nem töltődik be feleslegesen a többi weboldal futtatása esetén. Ezzel még ha minimális szinten is, de megtakaríthatunk némi erőforrást a szerveren.
Apache modul
Ha pedig Apache modulként futtatjuk, akkor:
nano /etc/php/7.4/apache2/php.ini
Természetesen itt is a saját PHP verziónkat használjuk ha ettől eltérőt telepítettünk (például 7.2 vagy 7.3).
Majd a php.ini végére tegyük be az alábbi sort:
extension=maxminddb.so
Mentsük le, majd indítsuk újra a megfelelő szolgáltatást.
PHP-FPM
PHP-FPM esetén:
systemctl restart php7.4-fpm.service
Apache modul
Alapértelmezett PHP esetén pedig az Apache-ot:
systemctl restart apache2.service
PHP bővítmény ellenőrzése
Ellenőrizhetjük a bővítményt a Matomo könyvtárában elhelyezett szokásos phpinfo.php fájl elhelyezésével, és böngészőben futtatásával:
nano /opt/matomo/phpinfo.php
<?php
phpinfo();
?>
https://www.wordpress.vm/matomo/phpinfo.php
Végül szedjük le a felesleges dolgokat:
cd /tmp
rm -rf MaxMind-DB-Reader-php-master/
rm master.zip
A virtuális gép után elvégeztem ugyanezt a szerveremen is, így most már jöhet a – korábban hibát eredményező – Geoip2 bővítmény visszakapcsolása.
Geoip2 bővítmény visszakapcsolása
Lépjünk be a Matomo admin felületén a Bővítmények menübe, majd kapcsoljuk vissza a Geoip2 bővítményt:
Majd lépjünk be a "Geolocation" menübe, és válasszuk ki a "DBIP / GeoIP 2 (Php)" opciót, és mentsük le az űrlapot.
Ezzel készen is van a geolokációs rész is.
Szerver letöltése
Konklúzió
A Matomo frissítéséhez nem mindig kell ennyi mindent elvégezni, csak ha nagyon régi a telepítés, és egyszerre több dolog is elavul a szerveren, mint például ezen a Debian9 tökéletes szerveren, amin most fel is frissítettem mindent, ha már újra előszedtem. Valamint nálam a MaxMind dolgai kerültek már régen fel, ezért nálam emiatt kellett újratelepíteni a szükseges hozzávalókat. Azonban akik nálam később rakták fel a Matomo webanalitikai rendszert, azoknál jó eséllyel már újabb összetevők kerültek fel, így nem kellett ennyi mindent állítgatni most a főverzió frissítésekor.
Lapozó
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 14 megtekintés