Üdvözöljük, kedves Olvasó! Ha valaha is gondolkodott azon, hogyan hozhat létre egy robusztus, nagy teljesítményű és skálázható webes környezetet, akkor jó helyen jár. Ebben a cikkben részletesen bemutatjuk a LEMP stack telepítését és konfigurálását a Debian 12 (Bookworm) operációs rendszeren. A LEMP egy népszerű alternatívája a LAMP (Linux, Apache, MySQL, PHP) stacknek, ahol az Apache webszervert az sokkal könnyebb és gyorsabb Nginx váltja fel. A MySQL helyett a MariaDB adatbázis rendszert fogjuk használni, míg a PHP a dinamikus tartalmak kezeléséért felel.
Miért érdemes a LEMP stacket választani? Az Nginx rendkívül hatékony statikus tartalom kiszolgálásában és a nagy számú egyidejű kapcsolat kezelésében, míg a MariaDB egy stabil és megbízható nyílt forráskódú adatbázis. A Debian 12, mint alaprendszer, stabilitásáról, biztonságáról és hatalmas közösségi támogatásáról ismert, így ideális választás szerver környezetekhez. Ez az útmutató átfogóan bemutatja az összes szükséges lépést a kezdeti telepítéstől a működő webes környezetig.
Előkészületek
Mielőtt belekezdenénk a LEMP stack telepítésébe, győződjön meg róla, hogy a következő előfeltételek teljesülnek:
- Egy frissen telepített Debian 12 szerver vagy virtuális gép (ajánlott a minimális telepítés).
sudo
jogosultságokkal rendelkező felhasználói fiók.- Internetkapcsolat a csomagok letöltéséhez.
Első lépésként frissítsük a rendszerünket, hogy biztosítsuk a legújabb szoftververziók és biztonsági javítások telepítését:
sudo apt update
sudo apt upgrade -y
Ez a parancs frissíti a csomaglistát, majd telepíti az összes elérhető frissítést anélkül, hogy interakcióra lenne szükség.
1. Nginx telepítése és alapkonfigurációja
Az Nginx (ejtsd: „engine-x”) egy nagy teljesítményű HTTP és fordított proxy szerver, valamint egy proxy POP3/IMAP szolgáltatás. Könnyed súlya és hatékonysága miatt vált rendkívül népszerűvé, különösen a nagy forgalmú weboldalak esetében. Telepítése a Debianon rendkívül egyszerű:
Nginx telepítése
Egyszerűen használja az apt
csomagkezelőt:
sudo apt install nginx -y
A telepítés befejezése után az Nginx szolgáltatás automatikusan elindul. Ellenőrizheti a státuszát a következő paranccsal:
sudo systemctl status nginx
Ha minden rendben van, a kimenetben valami olyasmit lát majd, hogy „active (running)”.
Tűzfal beállítása (UFW)
A biztonság alapvető fontosságú. Ahhoz, hogy az Nginx webszerverünk elérhető legyen az interneten, engedélyeznünk kell a HTTP (80-as port) és HTTPS (443-as port) forgalmat a tűzfalon. A Debian alapértelmezetten nem telepíti az UFW (Uncomplicated Firewall) tűzfalat, így először telepítsük, majd konfiguráljuk:
sudo apt install ufw -y
Most engedélyezzük az Nginx profilokat:
sudo ufw allow 'Nginx Full'
sudo ufw enable
Erősítse meg az „y” gomb megnyomásával. Ellenőrizze a tűzfal állapotát:
sudo ufw status
Látnia kell, hogy az ‘Nginx Full’ szabályok engedélyezve vannak.
Nginx tesztelése
Nyissa meg webböngészőjét, és írja be szerverének IP-címét (pl. http://your_server_ip
). Ha az Nginx sikeresen települt és fut, látnia kell az alapértelmezett „Welcome to Nginx!” oldalt.
2. MariaDB telepítése és biztonsági beállítása
A MariaDB egy nyílt forráskódú, relációs adatbázis-kezelő rendszer, amely teljes mértékben kompatibilis a MySQL-lel. Gyors, megbízható és robusztus, ezért kiváló választás a webes alkalmazások adatainak tárolására.
MariaDB telepítése
A telepítés hasonlóan egyszerű az Nginx-hez:
sudo apt install mariadb-server -y
A telepítés után a MariaDB szolgáltatás elindul. Ellenőrizze a státuszát:
sudo systemctl status mariadb
Ismét „active (running)” állapotot kell látnia.
MariaDB biztonsági beállítása
A frissen telepített MariaDB alapértelmezett beállításai nem teljesen biztonságosak. A mysql_secure_installation
szkript futtatásával javíthatunk a biztonságon:
sudo mysql_secure_installation
A szkript interaktív módon végigvezeti Önt a biztonsági beállításokon. Íme, mire számíthat:
- Enter current password for root (enter for none): Mivel most telepítette, még nincs root jelszó, így egyszerűen nyomja meg az Entert.
- Set root password? [Y/n]: Nyomjon Y-t, és adjon meg egy erős jelszót a MariaDB root felhasználójának. Jegyezze meg ezt a jelszót!
- Remove anonymous users? [Y/n]: Nyomjon Y-t. Ez eltávolítja azokat az anonim felhasználókat, akik jelszó nélkül tudnának csatlakozni az adatbázishoz.
- Disallow root login remotely? [Y/n]: Nyomjon Y-t. Ez megakadályozza, hogy a root felhasználó távolról csatlakozzon az adatbázishoz, ami biztonsági kockázatot jelentene.
- Remove test database and access to it? [Y/n]: Nyomjon Y-t. Az alapértelmezett „test” adatbázis eltávolítása szintén jó biztonsági gyakorlat.
- Reload privilege tables now? [Y/n]: Nyomjon Y-t. Ez biztosítja, hogy a fenti változtatások azonnal életbe lépjenek.
MariaDB tesztelése
Jelentkezzen be a MariaDB konzolra a root felhasználóval és az imént beállított jelszóval:
sudo mysql -u root -p
Adja meg a jelszavát. Ha sikeresen belépett, futtathat egy egyszerű parancsot a teszteléshez:
SHOW DATABASES;
Látnia kell egy listát az alapértelmezett adatbázisokról (pl. information_schema, mysql, performance_schema). Lépjen ki a konzolból a exit;
paranccsal.
3. PHP telepítése és konfigurálása (PHP-FPM)
A PHP a webfejlesztés egyik legnépszerűbb szkriptnyelve, amely dinamikus tartalmakat generál. A LEMP stackben a PHP-FPM (FastCGI Process Manager) kezeli a PHP kéréseket, és kommunikál az Nginx-szel.
PHP és PHP-FPM telepítése
Telepítsük a PHP-FPM-et, a php-mysql
kiterjesztést (szükséges a MariaDB-vel való kommunikációhoz), a php-cli
-t (parancssori PHP) és néhány más gyakran használt modult:
sudo apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
A telepített PHP verzió valószínűleg a 8.2-es lesz Debian 12-n. Ezt a későbbiekben figyelembe kell vennünk a konfiguráció során.
PHP-FPM konfiguráció
A PHP-FPM alapvető konfigurációs fájlja a /etc/php/8.2/fpm/php.ini
(figyeljen a verziószámra!). Nyissa meg egy szövegszerkesztővel (pl. nano):
sudo nano /etc/php/8.2/fpm/php.ini
Keresse meg a cgi.fix_pathinfo
sort. Ez a beállítás biztonsági szempontból rendkívül fontos. Keresse meg a sort, és állítsa az értékét 0
-ra:
; cgi.fix_pathinfo=1
cgi.fix_pathinfo=0
Az ;
eltávolítása a sor elejéről aktiválja a beállítást. Ez a beállítás megakadályozza, hogy az Nginx bizonyos esetekben nem-PHP fájlokat PHP-ként értelmezzen, ami súlyos biztonsági rést okozhatna.
Mentse el a fájlt (Ctrl+O, Enter) és lépjen ki (Ctrl+X).
A változtatások érvénybe lépéséhez újra kell indítanunk a PHP-FPM szolgáltatást:
sudo systemctl restart php8.2-fpm
4. Nginx konfigurálása PHP-val való együttműködéshez
Ahhoz, hogy az Nginx képes legyen PHP fájlokat kiszolgálni, konfigurálnunk kell a szerver blokkját. Létrehozhatunk egy új szerver blokkot, vagy módosíthatjuk az alapértelmezett default
blokkot. Az alapértelmezett módosításával kevesebb fájlt kell kezelni egy egyszerűbb beállítás esetén.
Nyissa meg az alapértelmezett Nginx konfigurációs fájlt:
sudo nano /etc/nginx/sites-available/default
Keresse meg a server { ... }
blokkot. A következő módosításokat kell elvégeznie:
- Módosítsa az
index
sort, hogy azindex.php
-t is tartalmazza. - Módosítsa a
root
direktívát, ha nem a/var/www/html
mappába telepíti az alkalmazását. - Törölje a kommenteket a
location ~ .php$ { ... }
blokk elől, és győződjön meg róla, hogy afastcgi_pass
helyesen mutat a PHP-FPM socketjére. - Ajánlott hozzáadni egy blokkot a
.htaccess
fájlokhoz való hozzáférés megtagadására, bár az Nginx nem használja azokat.
A módosított server
blokknak valahogy így kell kinéznie (kivéve a kommenteket):
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name your_domain.com www.your_domain.com; # Helyettesítse szervere IP-címével vagy domain nevével
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Fontos! Ellenőrizze a PHP verzióját (pl. php8.2-fpm)
}
# Megtagadja a hozzáférést a .htaccess fájlokhoz
location ~ /.ht {
deny all;
}
}
Mentse el a fájlt (Ctrl+O, Enter) és lépjen ki (Ctrl+X).
Mielőtt újraindítaná az Nginx-et, ellenőrizze a konfiguráció szintaktikai helyességét:
sudo nginx -t
Ha mindent jól csinált, a kimenetnek a következőhöz hasonlónak kell lennie:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ha hibaüzenetet kap, ellenőrizze a konfigurációs fájlt a megadott sorszámok alapján.
Végül, indítsa újra az Nginx szolgáltatást, hogy a változtatások életbe lépjenek:
sudo systemctl restart nginx
5. PHP tesztelése
Most, hogy az Nginx és a PHP-FPM konfigurálva van a kommunikációra, ellenőrizzük, hogy minden megfelelően működik-e.
Hozzon létre egy egyszerű PHP fájlt (pl. info.php
) a webszerver gyökérkönyvtárában. Az alapértelmezett gyökérkönyvtár a /var/www/html/
.
sudo nano /var/www/html/info.php
Illessze be a következő kódot a fájlba:
<?php
phpinfo();
?>
Mentse el a fájlt (Ctrl+O, Enter) és lépjen ki (Ctrl+X).
Nyissa meg webböngészőjét, és írja be szerverének IP-címét, majd a /info.php
-t (pl. http://your_server_ip/info.php
). Ha minden rendben van, látnia kell egy részletes oldalt a PHP telepítéséről és konfigurációjáról.
Fontos biztonsági megjegyzés: Miután ellenőrizte, hogy a PHP megfelelően működik, azonnal törölje az info.php
fájlt a szerverről! Ez a fájl rendkívül érzékeny információkat tartalmaz a szerverről, amelyek rosszindulatú felhasználók kezébe kerülve biztonsági rést okozhatnak. Törölje a fájlt a következő paranccsal:
sudo rm /var/www/html/info.php
Biztonsági megfontolások és további tippek
A LEMP stack telepítése csak az első lépés. Íme néhány további biztonsági és optimalizálási tipp:
- Rendszeres frissítések: Mindig tartsa naprakészen a rendszert és a szoftvereket a
sudo apt update && sudo apt upgrade
parancs futtatásával. - Erős jelszavak: Használjon erős, egyedi jelszavakat minden szolgáltatáshoz, különösen a MariaDB root felhasználójához.
- HTTPS (SSL/TLS): Telepítsen egy SSL/TLS tanúsítványt (pl. ingyenes Let’s Encrypt segítségével), hogy titkosítsa a szerver és a kliensek közötti kommunikációt. Ez elengedhetetlen a modern weboldalakhoz.
- PHP konfiguráció éles környezetben: A
php.ini
fájlban éles környezetben kapcsolja ki a hibaüzenetek megjelenítését (display_errors = Off
), hogy ne adjon ki felesleges információkat a potenciális támadóknak. Emellett állítsa be a megfelelő időzónát (date.timezone
). - Nginx biztonsági fejlécek: Konfigurálja az Nginx-et, hogy beállítson biztonsági fejléceket (pl. X-Content-Type-Options, X-Frame-Options, Content-Security-Policy), amelyek további védelmet nyújtanak a böngésző-alapú támadások ellen.
- Logok monitorozása: Rendszeresen ellenőrizze az Nginx és PHP-FPM log fájljait (pl.
/var/log/nginx/access.log
,/var/log/nginx/error.log
,/var/log/php8.2-fpm.log
) a hibák és a gyanús tevékenységek azonosítására. - Felhasználói jogosultságok: Győződjön meg róla, hogy a webes fájlok és mappák megfelelő jogosultságokkal rendelkeznek, és hogy a webkiszolgáló folyamat a legkevesebb jogosultsággal fut, amire szüksége van.
Összefoglalás és Következő Lépések
Gratulálunk! Sikeresen telepítette és konfigurálta a LEMP stacket a Debian 12 rendszerére. Most már rendelkezik egy stabil, nagy teljesítményű alappal a webes alkalmazásai számára. A Nginx webszerver, a MariaDB adatbázis és a PHP dinamikus szerver konfigurációja készen áll, hogy kiszolgálja a legkülönfélébb webes projekteket.
Mik a következő lépések?
- Webalkalmazás telepítése: Most már telepíthet egy népszerű CMS-t, mint például a WordPress, Joomla, vagy Drupal, esetleg egy PHP alapú keretrendszert (pl. Laravel, Symfony).
- Domain név beállítása: Ha rendelkezik domain névvel, állítsa be, hogy az Nginx kiszolgálja azt az IP-cím helyett.
- HTTPS konfigurálása: Ahogy említettük, telepítsen egy SSL/TLS tanúsítványt a biztonságos kommunikáció érdekében.
- Fejlettebb Nginx konfiguráció: Fedezze fel az Nginx további lehetőségeit, mint például a gyorsítótárazás, a terheléselosztás vagy a gzip tömörítés.
- Adatbázis kezelés: Tanulja meg a MariaDB adatbázisok létrehozását, felhasználók kezelését és mentését.
Reméljük, hogy ez az átfogó útmutató segített Önnek a LEMP stack telepítésében. Kísérletezzen bátran, és fedezze fel a nyílt forráskódú technológiák nyújtotta lehetőségeket a webfejlesztés világában!
Leave a Reply