Debian 9 (Stretch) LAMP szerver v1.0 telepítése (2. oldal)

botond küldte be 2019. 06. 21., p – 14:13 időpontban

A 2. oldal tartalma

 

Folytatás

Az első oldalon feltelepítettük a MariaDB adatbázismotort és az Apache webkiszolgálót, ezen az oldalon folytatjuk a LAMP szerver építését a PHP7 és a phpMyAdmin telepítésével és beállításaival.

 

 

PHP 7 telepítése

A Debian 9 (Stretch) operációs rendszeren az alapértelmezett PHP verzió a 7.0. Ennek jelenleg a legfrissebb kiadása a 7.0.33.

Természetesen tisztában kell lennünk azzal, hogy a PHP 7.0 nem a legfrissebb PHP ág. Mindazonáltal ez a leírás most csak erre terjed ki, mert ez van a Debian hivatalos csomagtárában. Későbbi cikkekben még foglalkozunk az újabb PHP verziók párhuzamos telepítésével.

Apache modulként történő telepítéséhez adjuk ki az alábbi apt-get parancsot:

apt-get -y install php7.0 libapache2-mod-php7.0
A PHP Apache modulként történő használatánál már vannak korszerűbb szerver API (SAPI) felhasználási módok is, például a PHP-FPM, ami sokkal hatékonyabban és biztonságosabban működteti a PHP kiszolgálót. Azonban ennek a leírásnak az elsődleges célja, hogy elkészítsük a lehető legegyszerűbb webszervert, amivel bármilyen (PHP alapú) dinamikus weboldalt, CMS rendszert futtathatunk.
A későbbiekben még sok mindennel fogjuk bővíteni ezt a szervert, többek között a PHP-FPM telepítésével és üzembe helyezésével is.

Ezután indítsuk újra az apache webkiszolgálót a systemctl parancs segítsésével:

systemctl restart apache2.service

Ekkor már kapunk egy működőképes PHP rendszert, de még bővítenünk kell néhány dologgal, hogy tartalmazza a megfelelő kiegészítőket is.

MySQL/MariaDB támogatás telepítése

A nemrég telepített adatbázismotorunk PHP támogatásához telepítsük a php7.0-mysql csomagot:

apt-get -y install php7.0-mysql

További PHP csomagok telepítése

Az apt-cache paranccsal kilistázhatjuk, hogy milyen csomagok állnak még rendelkezésre a PHP 7.0 rendszerhez:

apt-cache search php7.0

Erre kiad egy nagy listát, ezek közül válogathatunk még, amiket telepíteni szeretnénk.

Egy sok mindenre használható PHP rendszerhez az alábbi telepítőparancs a javasolt:

apt-get -y install \
    php-pear \
    php-imagick \
    php-apcu \
    php-memcache \
    php7.0-curl \
    php7.0-gd \
    php7.0-intl \
    php7.0-imap \
    php7.0-mcrypt \
    php7.0-pspell \
    php7.0-recode \
    php7.0-sqlite3 \
    php7.0-tidy \
    php7.0-xmlrpc \
    php7.0-xsl \
    php7.0-zip \
    php7.0-opcache

Természetesen szükség szerint később még bármikor telepíthetők hozzá további csomagok.

Ha minden számunkra szükséges kiegészítőt felraktunk, akkor indítsuk újra az Apache-ot:

systemctl restart apache2.service

Beágyazott PHP mód engedélyezése (opcionális)

Alapértelmezetten az Apache úgy van bekonfigurálva, hogy csak a php kiterjesztésű fájlokban futtatja le a PHP kódokat. Ez elsősorban biztonsági okokból van így. Azonban előfordulhat, hogy szükségünk van rá, hogy például HTML fájlokba ágyazott PHP kódokat is futtasson a szerverünk. A mai modern PHP rendszerű oldalaknál, CMS rendszereknél ez már nem divat, de a régebben készült weboldalaknál gyakran voltak ilyen megoldások, ahol a HTML fájlokba kerültek bele PHP kódrészek.

Amennyiben tehát ilyen igény merülne fel a szerver üzemeltetése során, hogy szeretnénk a HTML fájlokban is futtatni a PHP kódokat, akkor hajtsuk végre az itt következő részt. Ha nincs rá szükségünk, akkor ugorjuk át ezt.

Hozzunk létre a webgyökérben egy html fájlt:

nano /var/www/html/proba.html

És tegyük bele a következő tartalmat:

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8" />
		<title>Próba oldal</title>
	</head>
	<body>
		Helló világ!<br>
		Itt jön egy beágyazott PHP kórdész:<br>
		<?PHP
			echo "PHP fut!";
		?>
	</body>
</html>

És töltsük be a böngészőbe:

http://192.168.1.120/proba.html

PHP beágyazott kódrész tesztelése - Még nem működik

Amint láthatjuk, első körben nem fut le a PHP kódrész. Ennek orvoslásához nyissuk meg a leírás első oldalán is már említett virtualhost fájlunkat:

nano /etc/apache2/sites-enabled/000-default.conf

És helyezzük el a zöld színnel kiemelt sorokat a konfigurációs fájl VirtualHost blokkjának végében, hogy az alábbinak megfelelően nézzen ki:

<VirtualHost *:80>

	[...]
	
	<FilesMatch ".+\.html$">
		SetHandler application/x-httpd-php
	</FilesMatch>

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Ezután indítsuk újra az Apache-ot:

systemctl restart apache2.service

Majd frissítsünk rá a korábbi próba oldalunkra a böngészőben:

PHP beágyazott kódrész tesztelése - Működik!

És most már lefut a PHP kódrész is a HTML fájlban.

Ezt természetesen kezelhetjük rugalmasabban is, például ha csak egy adott könyvtárban van erre szükségünk, akkor az említett sorokat beágyazhatjuk egy Directory blokkba is. Vagy ha több virtualhost-unk van, akkor csak a szükségesekbe tegyük bele, stb.

 

 

PHP tesztelése

Végül teszteljük a teljes PHP rendszerünket. Hozzunk létre egy php fájlt a webgyökérben:

nano /var/www/html/phpinfo.php

Majd tegyük bele az alábbi sorokat:

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

Mentsük le, majd futtassuk a böngészőben a szerver IP-címének megfelelő URL címmel:

http://192.168.1.120/phpinfo.php

PHP 7 tesztelése

Zöld pöttyel jelöltem meg a Szerver API sorát, ahol láthatjuk, hogy az "Apache 2.0 Handler" felirat jelzi, hogy a PHP jelenleg Apache modulként fut. Valamint, ha itt lejjebb görgetünk, akkor láthatjuk az összes betöltött PHP modult, és azoknak a beállításait is.

Ha valamit állítanunk kell a php.ini-ben, azt pedig itt találjuk: /etc/php/7.0/apache2/php.ini

 

phpMyAdmin telepítése

A phpMyAdmin segítségével webes felületen kényelmesen kezelhetjük adatbázisainkat, futtathatunk lekérdezéseket, karbantartást végezhetünk rajtuk, stb. Telepítéséhez futtassuk az alábbi parancsot:

apt-get -y install phpmyadmin

Telepítés közben előjön pár dialógus. Elsőként rákérdez, hogy melyik HTTP kiszolgálót használjuk:

phpMyAdmin telepítése - Webkiszolgáló kiválasztása

Itt válasszuk az apache2-t.

Majd további telepítés után a következő dialógusban kiírja, hogy a phpMyAdmin működéséhez szüksége van egy saját adatbázisra, és hogy szeretnénk-e hogy beállítsa-e automatikusan a dbconfig-common segítségével:

phpMyAdmin telepítése - Adatbázis automatikus beállítása a dbconfig-common segítségével

Itt válasszunk igen-t.

Ezután kér még egy jelszót, amivel a phpMyAdmin kontroll felhasználója fog dolgozni:

phpMyAdmin telepítése - Jelszó bekérése a kontroll felhasználó számára

Ezzel a felhasználóval a phpMyAdmin a háttér karbantartást, struktúra szinkronizációkat, stb végzi, tehát nekünk nem lesz vele dolgunk. Így nyomjunk erre egy entert, hogy generáljon magának egy saját jelszót.

Ezzel készen is van a telepítés.

Root belépés engedélyezése

Ellentétben a Debian 8 (Jessie) LAMP szerver phpMyAdmnin telepítésénél, itt alapértelmezetten – további biztonsági okokból – nincs engedélyezve a root belépés a phpMyadmin felületén, ezért ezt még nekünk kell kézzel beállítani (ez itt nem ugyanaz a beállítás, amiről fentebb volt szó). Beállításához hajtsuk végre a következő parancsot:

echo "UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';FLUSH PRIVILEGES;" | mysql -u root -p

Ezután bekéri tőlünk a parancssor a MariaDB root jelszavát, adjuk meg.

Ennek a lényege, hogy a parancssorban be tudunk lépni root-ként, ezért ott hajtunk végre egy beállítást a root felhasználón, amivel engedélyezzük, hogy a phpMyAdmin felületén is beléphessünk.

phpMyAdmin tesztelése

Most már beléphetünk root-ként a phpMyAdmin felületébe az alábbi címen:

http://192.168.1.120/phpmyadmin

phpMyAdmin - Belépés

phpMyAdmin - Kezdőoldal

 

 

További biztonsági beállítások (opcionális)

Ha a későbbiekben tervezzük használni a parancssori adatbázis használatát, illetve shell scriptekből is szeretnénk kezelni adatbázisainkat, akkor erősen javaslom a parancsori adatbázishasználat biztonságossá tételét.

Ennek a lényege röviden, hogy egyszer beállítjuk egy defaults fájlba a szükséges felhasználónév-jelszó párost, majd beállítjuk a megfelelő jogosultságokat a fájlra. Ezután már csak erre a fájlra kell hivatkoznunk minden parancssori vagy script-beli adatbázis műveletnél, ahol ezáltal nem kerülnek megjelenésre a jelszavaink.

A linkelt leírásban általánosabb formában írtam erről, így most lássuk, hogy ez hogy néz ki jelen esetben.

Nyissuk meg root-ként az adatbázismotorunk által már előre létrehozott defaults fájlját:

nano /etc/mysql/debian.cnf

És a zölddel kiemelt részeknek megfelelően állítsuk be az adatbázis root jelszavunkat:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = '<root jelszó>'
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = '<root jelszó>'
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

Majd mentsük le.

Ezután már kikerülhetjük a jelszó parancssorban történő bekérését, aminek köszönhetően scriptekben is automatizálhatjuk az adatbázisokkal történő munkát. Természetesen bármelyik adatbázis felhasználó számára létrehozhatunk ilyen defaults fájlokat.

Ennek megfelelően példaképpen, ha most kellene lefuttatnunk a fentebbi phpMyAdmin root belépésének beállító parancsát, akkor az alábbi módon kellene elvégeznünk:

echo "UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';FLUSH PRIVILEGES;" | mysql --defaults-file=/etc/mysql/debian.cnf

Akár le is futtathatjuk próbaképpen, nem csinálunk vele semmi kárt, ha újra lefuttatjuk.

A defaults fájlokban a jelszavakat nem kötelező, de célszerű sima aposztrófok közé tenni, mert ha esetleg szóközt vagy speciális karaktert tartalmaz a jelszó, akkor azokkal nem mindig működik aposztrófok nélkül.

Végül a biztonság kedvéért nézzünk rá a defaults fájlunk jogosultságára (bár a rendszer hozta létre, így jónak kell lennie):

ls -l /etc/mysql/debian.cnf

Ennek pedig így kell kinéznie:

-rw------- 1 root root 305 jún   21 13:35 /etc/mysql/debian.cnf

Így már biztosak lehetünk benne, hogy csak a root felhasználó lát bele a fájlba.

 

Virtuális gép letöltése

Az elkészült Debian 9 (Stretch) LAMP szerver virtuális gép képfájlja letölthető innen.

 

Konklúzió

Ez lenne tehát egy teljesen alap Debian 9 (Stretch) alapú LAMP szerver, amin mostantól futtathatunk bármilyen PHP és MySQL/MariaDB alapú dinamikus weboldalakat. Később még apránként bővítjük hasznos dolgokkal, hogy szélesebb körben is használható legyen.

 

 

Lapozó

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