LEMP stack telepítése Debian 12-re: Nginx, MariaDB és PHP

Ü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 az index.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 a fastcgi_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

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük