Debian 10 (Buster) LAMP szerver v1.0 telepítése (3. oldal)

botond küldte be 2019. 11. 19., k – 14:30 időpontban

Tartalom

  1. oldal: MariaDB, Apache és PHP7.3 telepítése és beállítása
  2. oldal: phpMyAdmin kézi telepítése, bekonfigurálása és tesztelése
  3. oldal: PHP-FPM pool létrehozása és beállítása a phpMyAdmin számára (opcionális)

 

A 3. oldal tartalma

 

Folytatás

A leírás első oldalán feltelepítettük a MariaDB-t, Apache webkiszolgálót, és a PHP 7.3-at. Majd a második oldalon feltelepítettük és beállítottuk a a phpMyAdmin webes adatbáziskezelő felületet, ezen az oldalon pedig opcionálisan létrehozunk és beállítunk egy külön PHP-FPM pool-t a PMA számára.

 

 

phpMyAdmin PHP-FPM finomhangolása (opcionális)

A LAMP szerver telepítése során szó volt a PHP-FPM-re történő teljes átállásról, ami azzal jár, hogy a mod_php alapú virtualhost-ok és globális konfigurációk átirányításra kerülnek PHP-FPM-re a bekapcsolt php7.3-fpm konfigurációnak köszönhetően, amennyiben nem áll rendelkezésre a mod_php. Ha az elején nem kapcsoltuk ki a mod_php-t, akkor ezzel nincs semmi további teendőnk, mivel a phpMyAdmin példányunk a fenti Apache konfigurációnak megfelelő beállításokkal fut, amiben van néhány hasznos flag és PHP változó, amiket bármikor tudunk módosítani, vagy ki tudunk egészíteni.

Azonban ha kikapcsoltuk a mod_php-t az elején (mint ahogyan én is tettem), vagy egyáltalán fel sem telepítettük ezeket a modulokat, akkor viszont megvalósul az átirányítás, tehát az előző oldalon mutatott Apache konfigban lévő IfModule mod_php7.c blokkban lévő részek nem kerülnek kiértékelésre, hanem helyettük a PHP-FPM alapértelmezett 'www' pool-jának (alap)beállításai lesznek érvényben, mert ilyenkor a phpMyAdminunk ebben az FPM pool-ban fut. Ezért ha közelebbről megvizsgáljuk friss szerzeményünk futási környezetét (a könyvtárában elhelyezett phpinfo segítségével), akkor előkerül pár apróság:

phpMyAdmin könyvtárában elhelyezett phpinfo-t megjelenítő fájl

Itt látszik a PHP-FPM (átirányított) működése, annak ellenére, hogy a fenti Apache konfigunkban mod_php7-el került beállításra az egész. Tehát ha közelebbről megvizsgálunk még pár dolgot, akkor az is jól látszik, hogy a korábbi konfigurációban beállított dolgok itt érvénytelenek, mivel egy másik PHP környezetben futnak. Például:

phpMyAdmin phpinfo - Nincs open_basedir

Nincs open_basedir értéke ennek a környezetnek, vagy

phpMyAdmin phpinfo - Nincs upload_tmp_dir

nincs upload_tmp_dir érték sem (annak ellenére, hogy korábban be lettek állítva), és így tovább.

Ha nem a várt módon viselkedik a rendszerünk, vagy éppen egy éles környezetben hirtelen be kell állítanunk valamit, teszem azt például hogy a gyári 2 MB-os fájlfeltöltési korlátot feljebb szeretnénk emelni csak a phpMyAdminban, hogy nagyobb méretű SQL fájlokat is be tudjunk importálni, akkor bizony értetlenül kerülünk szembe a problémával, mert hirtelen nem tudjuk, hogy miért nem érvényesülnek a beállításaink.

Ezért ha még bírjuk idegzettel, és igazán precízen be szeretnénk állítani mindent, én azt javaslom, hogy ha már úgy is PHP-FPM-el fut a phpMyAdminunk, készítsünk neki egy saját pool-t, amiben kényelmesen be tudunk állítani egyedileg minden szükséges dolgot, ami csak ebben a pool-ban lesz érvényes. Így bármikor egyedileg tudjuk szabályozni kedvenc adatbáziskezelő felületünk minden beállítását, függetlenül a szerveren futó többi PHP dologtól.

Persze megtehetnénk azt is, hogy az alapértelmezett 'www' pool beállításait igazítanánk igényeinkhez, azonban ez nem lenne bölcs megoldás, mert ha később még más weboldal vagy konfiguráció is bekerül ebbe az alapértelmezett pool-ba, akkor a beállítások mindegyik esetén érvényesek lennének. Így célszerű minden virtualhost-ot, konfigurációt külön poolban futtatni, hogy mindegyiket egyedileg tudjuk szabályozni az adott szükségleteknek megfelelően.

 

 

Saját pool beállítása

A PHP-FPM pool-okról már korábban esett szó, így most ezeknek az ismertetésével nem is húznám tovább az időt, hanem kezdjünk is neki a phpMyAdmin pool-jának létrehozásához és beállításához.

Pool létrehozása

Hacsak nincs több PHP verzió telepítve, akkor a Debian 10 (Buster) rendszerben az alapértelmezett 7.3-as PHP áll rendelkezésünkre. Lépjünk be ennek a PHP-FPM pool könyvtárába:

cd /etc/php/7.3/fpm/pool.d

Hozzunk létre egy fájlt a phpMyAdmin számára:

nano phpmyadmin.conf

És tegyük bele az alábbi beállításokat:

; Pool-unk neve
[phpmyadmin]

; Futtató felhasználó
user = www-data
group = www-data

; Socket fájl
listen = /run/php/php7.3-phpmyadmin-fpm.sock

; Socket fájl tulajdonosa és módja
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

; Process management beállítások
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 0

; log fájl
access.log = /var/log/phpmyadmin/php-fpm-access.log
access.format = "Log: %t \"%m %r%Q%q\" %s time:%{mili}dm mem:%{kilo}MKB cpu:%C%%"

; Ezekben a fájltípusokban futhatnak php kódok
security.limit_extensions = .php .html

; Környezeti változók
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /var/lib/phpmyadmin/tmp
env[TMPDIR] = /var/lib/phpmyadmin/tmp
env[TEMP] = /var/lib/phpmyadmin/tmp

; PHP beállítások
php_admin_flag[log_errors] = on
php_flag[display_errors] = off
php_admin_value[session.gc_maxlifetime] = 3600
php_admin_value[error_log] = /var/log/phpmyadmin/php-errors.log
php_admin_value[memory_limit] = 128M
php_admin_value[upload_max_filesize] = 256M


; További PHP beállítások, amiket a 'gyári' phpMyAdmin Apache konfigból vettünk át
php_flag[magic_quotes_gpc] = off
php_flag[track_vars] = on
php_flag[register_globals] = off
php_value[include_path] = .
php_admin_value[upload_tmp_dir] = /var/lib/phpmyadmin/tmp
php_admin_value[open_basedir] = /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/
php_admin_value[mbstring.func_overload] = 0

Gyorsan átfutva a következők kerülnek itt beállításra:

  • Beállítjuk a pool-ban futó weboldalak vagy konfigurációk felhasználóját www-data-ra. Itt akár létre is hozhattunk volna bármilyen felhasználót, de felesleges, itt csak a külön pool a lényeg, hogy a phpMyAdminnak legyen egy külön futási környezete, egyedi beállítási lehetőségekkel.
  • Socket fájl: Ezen a fájlon keresztül történik a kommunikáció az Apache és a PHP-FPM között. Valamint itt beállítjuk ennek a fájlnak a tulajdonosát is.
  • Process management beállítások: Itt szabályozhatjuk ennek a pool-nak a process managementjét, azaz hogy hány gyermek folyamatot, szervert, tartalék szervert indítson a rendszer, stb. Ezeket az alapbeállításokról másoltam le, itt nincs szükség a cifrázásra, mivel ez egy admin felület, amit jó esetben maximum 1-2 ember használ egyszerre. De ha mondjuk egy nagyvállalatnál lenne ez a szerver, ahol egyszerre 50 alkalmazott nyüstölné a phpMyAdmint, akkor itt lehetne óvatosan emelgetni az értékeken. Vagy például ha ez egy forgalmas weboldal lenne sokezer látogatóval...
  • Majd beállítjuk az access.log fájl elérését, és gyűjtési formátumát.
  • security.limit_extensions: Ezekben engedi a PHP-FPM lefuttatni a PHP kódokat. Ennek a felsorolásnak szinkronban kell lennie az Apache konfigba bekerülő FilesMatch résszel...
  • Környezeti változók: Itt adjuk át a PHP környezetnek a Linux rendszer környezet változóit. Többek között a phpMyAdmin tmp könyvtárát itt is beállítjuk többféle változóba is.
  • PHP beállítások: Itt pedig a szokványos PHP flag-eket és változókat állíthatjuk be. Pl naplózás: be, hibák megjelenítése: ki, munkamenet hossza: 1 óra, hibanaplófájl útvonala, stb.
  • További PHP beállítások: Itt pedig csak áthoztam a gyári Apache konfigból a phpMyAdmin beállításait, hogy minden megfelelően működjön ebben a környezetben is. Ezeknél csak arra kell figyelni, hogy az itteni beállításnál kicsit más a szintaktika, itt tömb elemeknek adunk értéket, így szögletes zárójelbe kerülnek a címkék, majd egyenlőségjelekkel adjuk meg az értékeket.

Apache beállítása

Nyissuk meg a korábban létrehozott Apache konfig fájlunkat:

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

És az IfModule blokk alá tegyünk be egy néhány soros részt, ahogy alább is látható:

<Directory /usr/share/phpmyadmin>
	Options SymLinksIfOwnerMatch
	DirectoryIndex index.php

	<IfModule mod_php7.c>
		AddType application/x-httpd-php .php

		php_flag magic_quotes_gpc Off
		php_flag track_vars On
		php_flag register_globals Off
		php_value include_path .
		php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
		php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/
		php_admin_value mbstring.func_overload 0
	</IfModule>
	
	# PHP-FPM beállítása a saját phpmyadmin pool-hoz
	<IfModule mod_proxy_fcgi.c>
		<FilesMatch "\.(php|html)$">
			SetHandler "proxy:unix:/run/php/php7.3-phpmyadmin-fpm.sock|fcgi://localhost"
		</FilesMatch>		
	</IfModule>
	# PHP-FPM beállítás vége

</Directory>

Itt tehát annyi történik ebben a pár sorban, hogy ha php vagy html fájl lekérésekkel találkozik az Apache, akkor a mod_proxy_fcgi modul jelenlétében – és annak segítségével – átirányítja a kérést a PHP-FPM-nek, de így most már nem az alapértelmezett ''www' pool-ban fog futni ez a konfig (mint előtte), hanem az új pool-unkban, aminek a socket fájlját adtuk meg. A pool-ban fentebb elhelyezett beállítások pedig érvénybe lépnek a phpMyAdmin futása során.

Most még nem indítunk újra semmit, még el kell rendeznünk a log fájlokat...

 

 

Log fájlok lekezelése

Fentebb a pool beállításainál megadtunk két naplófájl elérést a /var/log/phpmyadmin/ könyvtárban: a php-fpm-access.log és a php-errors.log fájlokét. Az első a PHP-FPM-el kapcsolatos elérési információkat gyűjti, valamint itt jelzi nekünk az FPM, ha például valamelyik Process Management beállítást emelni kellene, a második fájlban pedig a hagyományos PHP hibák gyűlnek. Ezeket úgy alakítjuk ki, hogy egy helyen legyenek a /var/log struktúrában, így kényelmesen elérjük bármikor, amikor bele szeretnénk nézni. Ehhez hozzuk létre a fenti könyvtárat:

mkdir /var/log/phpmyadmin

Majd állítsuk át a jogosultságát a www-data felhasználóra, hiszen ez a felhasználó fogja futtatni ezt a pool-t, így a naplófájlok is ennek a nevében fognak módosulni:

chown -R www-data:www-data /var/log/phpmyadmin

Már majdnem készen is vagyunk, még be kell állítani ezeknek a naplófájloknak a forgatását, mert idővel sok adat gyűlik fel például a php-fpm-access.log -ban. Mindezt a logrotate rendszer segítségével fogjuk megoldani, amiről már korábban volt szó.

Hozzunk létre egy logrotate fájlt a phpMyAdminnak:

nano /etc/logrotate.d/phpmyadmin

És tegyük bele ezt a pár sornyi beállítást:

/var/log/phpmyadmin/php-fpm-access.log
/var/log/phpmyadmin/php-errors.log
{
	rotate 7
	daily
	copytruncate
	compress
	delaycompress
	missingok
	notifempty
}

Majd mentsük le. A beállításokról részletesen a fentebbi linken tájékozódhatunk.

Rendszerek újraindítása

Végül indítsuk újra a PHP-FPM-et és az Apache-ot:

systemctl restart php7.3-fpm.service
systemctl restart apache2.service

phpMyAdmin pool tesztelése

Minden készen áll, már csak ki kell próbálnunk ténykedésünk sikerét. Ha még nem helyeztünk el teszt fájlt a phpMyAdmin könyvtárában, most megtehetjük:

nano /usr/share/phpmyadmin/my_phpinfo.php

itt már létezik egy phpinfo.php nevű fájl, amit másra használ a PMA, így másik néven kell létrehoznunk. Majd tegyük bele a szokásost:

<?php
    phpinfo();
?>

És töltsük be a böngészőbe a szerver IP-címének segítségével:

http://192.168.1.130/phpmyadmin/my_phpinfo.php

phpMyAdmin pool ellenőrzése - phpinfo

Itt eddig nincs semmi eltérés az előző állapothoz képest, de ha lejjeb görgetünk, és rákeresünk a beállított paramétereinkre, akkor láthatóvá válik a működés. Néhányat szúrópróba-szerűen:

phpMyAdmin pool ellenőrzése - phpinfo - memory_limit és open_basedir

memory_limit és open_basedir: Ezeket mind beállítottuk, látszik is az értékük.

phpMyAdmin pool ellenőrzése - phpinfo - upload_max_filesize és upload_tmp_dir

upload_max_filesize és upload_tmp_dir: Ezeknek is megvan a beállított értékük.

És így tovább a többi beállítás mind megtalálható.

Most már mondhatjuk, hogy tökéletes a phpMyAdmin telepítésünk. :)

 

Szerver letöltése

Az itt elkészített szerver letöltési oldala itt található.

 

 

Konklúzió

Ezzel el is készült a Debian 10 (Buster) alapú LAMP szerverünk, ami kicsit hosszabbra sikeredett, mint az eddigiek, hiszen a phpMyAdmin webes adatbáziskezelő felületet kézzel kellett feltelepíteni és beállítani. Valamint itt-ott erősebb konfigurációt is kapott ez a szerver, hiszen később ez lesz az alapja a Debian 10-es tökéletes szervernek, így ez a változat kicsit combosabb lett, mint a korábbi LAMP-ok. De amíg elkészül ebből a tökéletes szerver telepítő leírás, addig is próbáljátok ki, használjátok egészséggel!

Sok LAMP telepítő leírással lehet találkozni a neten, ezért igyekeztem most is némi pluszt beleadni, hogy ne csak a sablon telepítőparancsokat kínáljam nektek, hanem további hasznos információkkal is szolgálhassak. Remélem ezzel sikerül fenntartani a kedveteket a további telepítgetésekhez.

 

Hogyan tovább?

Ha elkészítettük ezt a LAMP szervert, akkor hasznos lehet feltelepíteni rá további PHP verziókat is, hogy régebbi weboldalakkal is kompatibilis legyen. Továbbá, ha egyszerre több weboldalt is szeretnénk futtatni ezen a szerveren, akkor itt tájékozódhatunk, hogyan tudunk további virtualhost-okat beállítani, hogy a honlapok párhuzamosan működhessenek rajta. De ha tovább szeretnénk fejleszteni a szervert, akkor ajánlom a Tökéletes szerver: Debian 10 (Buster) V1.0 telepítését, ami kiváló megoldás az éles szerver üzemeltetésére.

 

 

Lapozó

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