Bevezetés
Az internet világában számos technológia kapcsolódik össze, hogy olyan megoldást alkosson, amely lehetővé teszi az internetezők számára a dinamikus tartalmak elérését a világhálón. A LEMP szoftvercsomag (stack) az egyik ilyen megoldás. Négy olyan technológiát egyesít, amelyek teljes körű szervermegoldást nyújtanak a nagy teljesítményű és dinamikus weboldalak számára. A LEMP a Linux, Nginx, MySQL és PHP szavakból alkotott betűszó. A Linux a szerver operációs rendszere. Az Nginx (amelyet Engine-X-nek ejtenek, innen a betűszóban szereplő E betű) a webszerver-szoftver. A MySQL az adatbázis-rendszer, amely a weboldal és a felhasználók adatait tárolja. A PHP pedig a szerveroldali szkriptnyelv a dinamikus feldolgozáshoz.
Ebben az útmutatóban bemutatjuk, hogyan telepítheti és konfigurálhatja a LEMP szoftvercsomagot, valamint hogyan ellenőrizheti, hogy minden a várt módon működik-e. Kezdjük el!
1. lépés: A szerver konfigurálása Ubuntu 20.04-gyel
Az Ubuntu 20.04 egy Linux-alapú operációs rendszer. Számos Linux-alapú szerver operációs rendszer létezik, beleértve az ingyeneseket és a prémiumokat is. Ez az útmutató az Ubuntu 20.04-re összpontosít, amely ingyenes és nyílt forráskódú. Ez a lépés gondoskodik a LEMP betűszó első követelményéről, az L-ről. Rendelkeznie kell egy tényleges Ubuntu 20.04 telepítéssel a VPS-én a következő lépések végrehajtásához. Követheti az útmutatónkat az Ubuntu szerver beállításáról. Opcionálisan, ha ezt az útmutatót a helyi számítógépén szeretné követni, letöltheti az Ubuntu 20.04 szerver telepítési lemezképét közvetlenül az Ubuntu weboldaláról. Konfigurálnia kell egy normál, nem root felhasználót sudo jogosultságokkal, mert néhány olyan parancsot fogunk futtatni, amelyekhez sudo engedélyek szükségesek.
2. lépés: Az Nginx szerver telepítése és konfigurálása
A webszerverek lehetővé teszik, hogy tartalmakat, például weboldalakat szolgáltassunk a webhely látogatói számára. Az Nginx egy népszerű webszerver, amely a fejlesztők által leginkább kedvelt legjobb öt nyílt forráskódú webszerver között szerepel. Ez a lépés gondoskodik a LEMP szoftvercsomag második követelményéről, az E-ről (Nginx). Az Ubuntu rendelkezik egy alapértelmezett csomagtárral, ahonnan az ebben az útmutatóban használt csomagokat fogjuk beszerezni. Az Ubuntu a Debianon alapul, amely az apt vagy dpkg eszközöket használja a csomagjai kezelésére. Az alapértelmezett tárolóból származó csomagokhoz az apt-ot fogjuk használni.
Ökölszabályként elmondható, hogy mielőtt bármilyen telepítést elkezdene egy Linux rendszeren, futtatnia kell a frissítési parancsot. Kezdje a következő parancs beírásával a terminálon:
|
1 |
sudo apt update |
A frissítés után a következő paranccsal telepítheti az Nginx-et:
|
1 |
sudo apt install nginx |
A telepítés befejezése után az Nginx automatikusan elindul. A következő lépés a tűzfal konfigurálása a forgalom átengedéséhez. Az Ubuntu az ufw (Uncomplicated Firewall) csomagot használja a tűzfalak konfigurálásához. A telepítés után az Nginx szolgáltatásként regisztrálja magát az ufw-nél. Az Ubuntu a rendszerindításkor automatikusan elindítja a tűzfal szolgáltatást, de a biztonság kedvéért írja be a következő parancsot az engedélyezéséhez:
|
1 |
sudo ufw enable |
Az ufw által engedélyezett alkalmazáskonfigurációk listázásához írja be a következő parancsot:
|
1 |
sudo ufw app list |
Az alábbi képernyőképen a fenti parancs kimenete látható:

Mint látható, az Nginx már regisztrálva van az ufw-nél, és három profillal rendelkezik az alábbiak szerint:
- Nginx Full – megnyitja a 80-as és a 443-as portot is. A 80-as port a normál/titkosítatlan forgalomhoz, azaz a HTTP-hez tartozik. A 443-as port a TLS/SSL titkosított forgalomhoz, azaz a https-hez tartozik.
- Nginx HTTP – csak a 80-as portot nyitja meg – titkosítatlan forgalom.
- Nginx HTTPS – csak a 443-as portot nyitja meg – TLS/SSL titkosított forgalom.
Bár az Nginx automatikusan regisztrál az ufw-nél, a szerverére nem engedélyezett semmilyen forgalom, amíg Ön ezt meg nem teszi. Dönthet úgy, hogy az összes vagy bármelyik profilt engedélyezi, azonban jobb, ha a legszigorúbb profilt engedélyezi, amely még lehetővé teszi a webszerverhez konfigurált forgalmat. Mivel ebben az útmutatóban nem konfiguráltunk SSL-t, csak a HTTP-forgalmat engedélyezzük a 80-as porton. Ha kíváncsi rá, van egy útmutatónk az SSL konfigurálásáról az Nginx szerveren a Let’s Encrypt segítségével, Certbot használatával.
Engedélyezzük a forgalmat a 80-as porton a következő parancs beírásával:
|
1 |
sudo ufw allow 'Nginx HTTP' |
A változtatás sikerességének ellenőrzéséhez írja be a következő parancsot:
|
1 |
sudo ufw status |

A parancs futtatásának fenti kimenete azt mutatja, hogy a HTTP-forgalom most már engedélyezett. Ellenőrizheti, hogy a szerver fut-e, ha megnyitja a böngészőben a domain nevét vagy a szerver nyilvános IP-címét. Ha nem konfigurált domain nevet, és nem biztos a szerver nyilvános IP-címében, megtalálhatja azt a curl használatával a következő parancs futtatásával:
|
1 |
curl -4 icanhazip.com |
Másolja be a fenti parancs kimenetét, amely az Ön nyilvános IP-címe, a böngésző címsorába. Az oldal betöltésekor a default Nginx kezdőlapot fogja látni:

A fenti oldal azt jelzi, hogy sikeresen telepítette az Nginx-et.
3. lépés: A MySQL adatbázis-kezelő rendszer telepítése
Az adatkezelés minden dinamikus weboldal kulcsfontosságú része. A MySQL egy adatbázis-kezelő rendszer, amely a weboldal adatait tárolja és kezeli. Ez a lépés gondoskodik a LEMP szoftvercsomag harmadik követelményéről, az M-ről. Írja be a következő parancsot a MySQL telepítéséhez:
|
1 |
sudo apt install mysql-server |
A MySQL telepítésének befejezése után konfigurálnia kell azt, mielőtt használatra kész lenne. A konfiguráció része az adatbázis-szerver biztonságossá tétele is. A MySQL tartalmaz egy szkriptet, amely végigvezeti Önt a biztonsági beállításokon és a jelszavak beállításán. A következő parancs elindítja a szkriptet:
|
1 |
sudo mysql_secure_installation |

A szkript megkérdezi, hogy szeretné-e beállítani a VALIDATE PASSWORD komponenst, vagy nyomjon meg egy tetszőleges billentyűt a komponens engedélyezése nélküli folytatáshoz.
A VALIDATE PASSWORD komponens egy olyan funkció, amellyel ellenőrizhető, hogy az adatbázis-szerver egy adott felhasználójához megadott jelszó megfelel-e egy bizonyos kritériumnak. Konfigurálhatja úgy, hogy ellenőrizze például a hosszt, a számjegyeket, a nagy- vagy kisbetűk meglétét stb. Ha nincs engedélyezve, akkor tetszőleges jelszót állíthat be. Ha azonban engedélyezve van, akkor a megadott kritériumoknak megfelelő jelszót kell használnia. Az engedélyezése problémákat okozhat olyan csomagoknál, amelyek automatikusan konfigurálják a MySQL felhasználói hitelesítő adatokat, mint például az Ubuntu phpMyAdmin csomagja. Az, hogy engedélyezi-e vagy sem, egyéni döntés kérdése. Az adatbázisa akkor is biztonságban van, ha nem engedélyezi, csak ügyeljen arra, hogy erős és egyedi jelszavakat használjon.
Ha az Y gombot nyomta meg a komponens engedélyezéséhez, a szkript arra fogja kérni, hogy válassza ki a jelszó-ellenőrzés szintjét:

A szkript 3 jelszó-ellenőrzési szintet kínál. A LOW szint megköveteli, hogy a jelszó legalább 8 karakterből álljon. A MEDIUM szint megköveteli, hogy a jelszó legalább 8 karakterből álljon, és kis- és nagybetűk, valamint speciális karakterek keveréke legyen. A STRONG szint egy összetett, legalább 8 karakterből álló jelszót igényel, amelynek kis- és nagybetűk, speciális karakterek és szavak keverékének kell lennie, és nem alapulhat gyakori szótári szavakon, különben hibaüzenetet kap. Válasszuk a LOW szintet, írja be a 0-t, majd nyomja meg az Entert.
A szkript arra kéri, hogy adja meg, majd adja meg újra a jelszót:

Írja be az y-t, majd nyomjon Entert a beírt jelszó root jelszóként való elfogadásához. A következő kérdések a MySQL szerver biztonságának növelésére szolgálnak. Kezdve a minden MySQL-telepítéssel együtt járó alapértelmezett névtelen felhasználók eltávolításával, a távoli kapcsolatról történő root bejelentkezés letiltásával és a tesztadatbázisok eltávolításával. Az utolsó kérdés arra kéri, hogy töltse újra a jogosultsági táblát a parancsok érvénybe lépéséhez. Írjon be y-t, és nyomjon Entert minden kérdésre:

A kezdeti biztonsági konfiguráció befejeződött.
A telepített MySQL verzióját a következő parancs futtatásával ellenőrizheti:
|
1 |
sudo mysql –V |
Íme a verzió, amelyet ebben a leírásban használunk:
![]()
Az 5.7-es és újabb MySQL verziókat futtató Ubuntu rendszerek esetében a root felhasználó úgy van beállítva, hogy az auth_socket beépülő modul segítségével hitelesítsen, nem pedig jelszóval. Ez nagyobb biztonságot nyújt, azonban problémát okozhat olyan külső csomagoknál, mint például a phpMyAdmin csomag. Ha inkább folytatni szeretné az auth_socket beépülő modul használatát, lépjen a 4. lépésre.
Ha ehelyett jelszóval szeretne csatlakozni, akkor a hitelesítési módszert úgy kell beállítania, hogy a mysql_native_password-öt használja.
Indítsa el a MySQL parancssort a következő parancs beírásával:
|
1 |
sudo mysql |
A MySQL számos alapértelmezett adatbázissal rendelkezik. Az alapértelmezett adatbázisok listáját a következő lekérdezés terminálba történő beírásával tekintheti meg:
|
1 |
show databases; |

A mysql nevű adatbázis több MySQL-lel kapcsolatos konfigurációt tárol. Ez az adatbázis tartalmaz egy users nevű táblát, amely a felhasználók adatait és az egyes felhasználók hitelesítési módszerét tartalmazza. Használhatunk SQL-lekérdezéseket információk lekérésére, módosítására és törlésére egy táblából. Írja be a következő lekérdezést a terminálba, hogy részleteket kapjon arról, hogy az egyes felhasználók melyik hitelesítési módszert használják:
|
1 |
SELECT user, authentication_string, plugin, host FROM mysql.user; |

A fenti kimenet azt mutatja, hogy a root felhasználó valójában az auth_socket beépülő modullal hitelesít. A root felhasználó hitelesítési módszerének megváltoztatásához írja be a következő utasítást a terminálba. Ne felejtse el megváltoztatni, hogy megfeleljen az előző lépésben beállított közepes szintű jelszóerősségnek, különben hiba lép fel:
|
1 |
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword'; |
Miután a lekérdezés sikeresen lefutott, futtassa a flush privileges parancsot, hogy a változtatások azonnal életbe lépjenek:
|
1 |
FLUSH PRIVILEGES; |
Futtassa újra az alábbi select utasítást, hogy ellenőrizze, a változtatások életbe léptek-e:
|
1 |
SELECT user,authentication_string,plugin,host FROM mysql.user; |

A kimenet alapján a root felhasználó mostantól a mysql_native_password használatával fog hitelesíteni. Kiléphet a mysql parancssorból az exit beírásával és az enter lenyomásával.
Megpróbálhat bejelentkezni a beállított jelszóval a következő parancs beírásával:
|
1 |
mysql -u root –p |
A parancssor kérni fogja a jelszót. Ha egyezik, megjelenik a MySQL parancssor. Sikeresen beállította a szervert a MySQL-lel. Ezután lépjen ki a MySQL parancssorból.
4. lépés: A PHP telepítése és az Nginx beállítása a PHP-feldolgozó használatára
A PHP a PHP: Hypertext Preprocessor rövidítése. Ez egy széles körben használt, nyílt forráskódú, szerveroldali szkriptnyelv weboldalakhoz és webes alkalmazásokhoz. A PHP gondoskodik a LEMP szoftvercsomag negyedik követelményéről. A PHP segít a dinamikus tartalom előállításában a weboldalakon. Közvetítőként használható a weboldalak és az adatbázis-rendszer között. Adatokat olvas be az adatbázisból, és megjeleníti azokat a weboldal látogatói számára. Ezenkívül adatokat szúrhat be, frissíthet és törölhet az adatbázisból.
Az Nginx nem rendelkezik natív PHP-feldolgozó beépülő modulokkal, mint más webszerverek, ezért telepítenie kell a php-fpm-et, hogy a kéréseket az Nginx-től a PHP-nek továbbítsa feldolgozásra. Először adja hozzá az Ubuntu universe tárolót, amely az Ubuntu közössége által karbantartott ingyenes és nyílt forráskódú szoftvereket tartalmazza. Írja be a következő parancsot a terminálba:
|
1 |
sudo add-apt-repository universe |
Ezután telepítse a php-fpm csomagot a php-mysql segédcsomaggal együtt, hogy a PHP kommunikálni tudjon a MySQL-lel, a következő parancs használatával:
|
1 |
sudo apt install php-fpm php-mysql |
Ezen útmutató írásakor a fenti paranccsal telepített PHP verzió a 7.2.24. Ezért a php-fpm7.2 csomagot telepíti. Tartsa ezt szem előtt a szerverblokkok frissítésekor, és ügyeljen a helyes verzió megadására, különben az oldal nem fog betöltődni.
A PHP verzióját a következő parancs beírásával ellenőrizheti:
|
1 |
php -v |

Ezen a ponton a LEMP szoftvercsomag összes összetevője telepítve van. A következő lépésben be kell állítania az Nginx-et, hogy a kéréseket a PHP-feldolgozóhoz irányítsa. Az Nginx-ben a konfiguráció a szerverblokkokon belül történik. A szerverblokkok megegyeznek az Apache virtuális gazdagépeivel (virtual hosts). További információért tekintse meg az Nginx szerverblokkokról szóló útmutatónkat.
Ebben az útmutatóban hozzunk létre egy szerverblokkot egy test.com nevű domainhez, de szabadon választhat bármilyen más nevet is. A szerverblokkok a /etc/nginx/sites-available/ könyvtárban találhatók. A nano segítségével hozza létre a szerverblokk fájlt a következő parancs beírásával:
|
1 |
sudo nano /etc/nginx/sites-available/test.com |
Gépelje be a következő szkriptet a fájlba:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
server { listen 80; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name test.com; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; } location ~ /\.ht { deny all; } } |
Íme egy rövid leírás arról, hogy mit csinálnak az egyes direktívák:
- listen – meghatározza azt a portot, amelyen az Nginx hallgatni fog. Alapértelmezés szerint ez a 80-as port, azonban ha beállította az SSL-t, akkor a 443-as portot kell megadnia.
- root – tartalmazza azt a könyvtárat, amelyben a webhely könyvtára tárolva lesz.
- index – utasítja az Nginx-et, hogy részesítse előnyben az index.php fájlok kiszolgálását, ha azok elérhetők a kérés pillanatában.
- server_name – meghatározza a szerverblokk nevét, ez tartalmazza a szerver nyilvános IP-címét vagy domain nevét.
- location/ – az első location blokk tartalmazza a try_files direktívát. Ez ellenőrzi az URI-kérésnek megfelelő fájlok meglétét, és ha nem találja őket, 404-es hibát ad vissza.
- location ~ \.php$ – ez a direktíva kezeli a PHP-feldolgozást azáltal, hogy az Nginx-kéréseket a fastcgi-php.conf fájlon és a php7.2-fpm.sock fájlon keresztül irányítja, amely meghatározza, hogy melyik socketet társítsa a php-fpm-hez. Ez a parancs ellenőrzi a php-fpm állapotát, a verziót 7.2-ként adjuk meg, mivel nekünk ez van meg. Győződjön meg róla, hogy az Ön által használt verziót ellenőrzi:
|
1 |
sudo service php7.2-fpm status |
- location ~ /\.ht – ez a direktíva kezeli a .htaccess fájlokat, amelyeket az Nginx nem dolgoz fel. A deny all direktíva biztosítja, hogy semmilyen htaccess fájl ne kerüljön kiszolgálásra a látogatók számára.
Miután hozzáadta a szkriptet a test.com fájlhoz, nyomja meg a Ctrl + O billentyűkombinációt, majd az Entert a fájl mentéséhez. Nyomja meg a Ctrl + X billentyűkombinációt a szerkesztő bezárásához.
Ezután engedélyeznie kell a szerverblokkot a következő parancs beírásával, amellyel egy szimbolikus linket hoz létre a /etc/nginx/sites-enabled könyvtárba:
|
1 |
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/ |
Ezután válassza le az alapértelmezett szerverblokkot a sites-enabled könyvtárból a következő parancs beírásával:
|
1 |
sudo unlink /etc/nginx/sites-enabled/default |
Tesztelje az új konfigurációt a következő parancs beírásával:
|
1 |
sudo nginx -t |
Ha a szintaxis megfelelő, töltse újra az Nginx-et a következő paranccsal:
|
1 |
sudo systemctl reload nginx |
Ebben a lépésben a LEMP stack telepítése és konfigurálása befejeződött. A következő lépésben létrehozunk egy tesztfájlt, hogy megbizonyosodjunk a különböző összetevők megfelelő kapcsolódásáról.
5. lépés: PHP fájl létrehozása a LEMP stack teszteléséhez
Ebben a lépésben létrehozunk egy .php fájlt, és futtatjuk az Nginx szerveren, hogy ellenőrizzük a megfelelő működését. A globális phpinfo() függvényt fogjuk használni az elérhető PHP csomagok ellenőrzésére. Írja be a következő parancsot a .php fájl nano-ban történő megnyitásához:
|
1 |
sudo nano /var/www/html/test.php |
A nano szerkesztőben gépelje be a következő kódrészletet:
|
1 |
<?php phpinfo(); |
Mentse el és zárja be a fájlt. A böngészőben az imént létrehozott oldal megtekintéséhez keresse meg a domain nevét vagy IP-címét, és navigáljon oda az alábbiak szerint:
|
1 |
http://your_server_domain_or_IP/test.php |
Látnia kell a PHP információs oldalt:

A fenti oldal azt mutatja, hogy sikeresen beállította az Nginx-et. Mivel a teszteléshez létrehozott fájl részletes információkat tartalmaz a szerveréről, ne felejtse el eltávolítani azt. Írja be a következő parancsot a fájl eltávolításához:
|
1 |
sudo rm /var/www/html/test.php |
Ha a jövőben bármikor tesztelnie kell a konfigurációit, bármikor újra létrehozhatja a fájlt.
Összegzés
Ebben az útmutatóban egy LEMP stacket konfigurált az Ubuntu 20.04-es verzióján, amely az egyik legerősebb elérhető webalkalmazás-fejlesztési környezet. Innen kiindulva szinte bármilyen weboldalt, webalkalmazást vagy mobilalkalmazás szerveroldali logikáját képes lesz kiszolgálni. Annak érdekében, hogy webhelye biztonságos SSL-kapcsolaton keresztül szolgáltassa a tartalmat, javasoljuk, hogy tekintse meg az SSL-tanúsítványok Nginx szerveren történő konfigurálásáról szóló útmutatónkat.
Kellemes számítógépezést!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.