Tartalom
- oldal: Alapfeltételek áttekintése és a tárhely előkészítése a Matomo számára
- oldal: Matomo letöltése és telepítése
- oldal: Követőkódok elhelyezése WordPress rendszerű oldalakon
- oldal: Követőkódok elhelyezése Drupal rendszerű oldalakon
- oldal: Követőkódok elhelyezése és testreszabása egyedi fejlesztésű oldalakon
- oldal: A telepítés utáni fontos beállítások elvégzése
- oldal: GeoIP 2 (PHP) alapú geolokációs rendszer beüzemelése
- oldal: Matomo teljes rendszer átállítása PHP-FPM alapú szerver API működésre
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.
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
- Debian 8 (Jessie) LAMP szerver v1.0 ( telepítési útmutató | kész szerver letöltése )
- Debian 8 (Jessie) tökéletes szerver v1.0 ( telepítési útmutató | kész szerver letöltése )
- Debian 8 (Jessie) tökéletes szerver v1.1 ( kész szerver letöltése )
- Debian 9 (Stretch) LAMP szerver v1.0 ( telepítési útmutató | kész szerver letöltése )
- Debian 9 (Stretch) tökéletes szerver v1.0 ( telepítési útmutató | kész szerver letöltése ) (ajánlat)
- Debian 10 (Buster) tökéletes szerver v1.0 ( telepítési útmutató | kész szerver letöltése )
- Ubuntu 18.04 LTS (Bionic Beaver) LAMP szerver v1.0 ( telepítési útmutató | kész szerver letöltése )
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.
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
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:
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:
É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
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:
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.
A következő oldalon folytatjuk a Matomo (korábbi nevén Piwik) webanalitikai rendszer telepítésével.
- Enciklopédia - Matomo (Piwik) webanalitika
- Hogyan frissítsük Matomo (korábban Piwik) webanalitikai rendszerünket a 4.x verzióra
- Enciklopédia - Apache HTTP Server
- Matomo.org
- Matomo.org - Installation
- Enciklopédia - Apache HTTP server
- Mit tegyünk, ha a Matomo webanalitikai rendszerünk "AH01630: client denied by server configuration" típusú Apache hibákat generál, ami miatt a Fail2Ban letiltja az IP-címünket?
- Szerver monitorozása a Munin segítségével Debian 9 (Stretch) és Debian 10 (Buster) rendszereken
Lapozó
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 314 megtekintés