Hogyan telepítsük a Linuxot, Nginxet, MySQL-t és PHP-t (LEMP stack) Ubuntun
Bevezetés
A LEMP szoftvercsomag dinamikus weboldalakat és PHP-ben írt webalkalmazásokat szolgál ki. Ez egy olyan mozaikszó, amely egy Linux operációs rendszert jelöl, amelyen Nginx (kiejtve: „Engine-X”) webszerver fut. A háttéradatok a MySQL adatbázisban tárolódnak, a dinamikus feldolgozást pedig a PHP végzi.
Ez az útmutató bemutatja, hogyan lehet LEMP-stacket telepíteni egy Ubuntu szerverre. Az Ubuntu operációs rendszer gondoskodik a stack Linux részéről. Leírjuk, hogyan lehet a többi komponenst beüzemelni és működésbe hozni.
Megjegyzés: Ez a bemutató elsősorban Ubuntu 22.04 LTS és PHP 8.1 rendszerekre készült. Az Ubuntu 24.04 LTS felhasználók esetében a PHP verzióra vonatkozó hivatkozásokat a parancsokban
php8.1-fpm-rőlphp8.3-fpm-re kell módosítani. Ne feledkezzünk meg a PHP-FPM socket útvonalak frissítéséről sem az Nginx konfigurációban (pl. Ubuntu 24.04 esetén használjuk a/run/php/php8.3-fpm.sockútvonalat).
Hogyan telepítsük a Linuxot, Nginxet, MySQL-t és PHP-t (LEMP stack) Ubuntun
- A Nginx webkiszolgáló telepítése
- MySQL telepítése
- PHP telepítése
- Az Nginx konfigurálása a PHP feldolgozó használatához
- PHP tesztelése Nginx-szel
- Adatbázis-kapcsolat tesztelése PHP-ből
Előfeltételek
Használjon nem-root sudo felhasználót Ubuntun, ahol engedélyezve van az UFW tűzfal. A konfigurációhoz kövesse az Ubuntu kezdeti szerverbeállítási útmutatónkat.
1. lépés – Az Nginx webkiszolgáló telepítése
Ahhoz, hogy weboldalakat jeleníts meg a látogatóknak, az Nginxet fogod használni, egy nagy teljesítményű webszervert. Ehhez az APT csomagkezelőt fogod használni a szoftver beszerzéséhez.
Frissítse a szerver csomagindexét, majd telepítse az Nginxet:
sudo apt updateEzután futtasd a apt install-t az Nginx telepítéséhez:
sudo apt install nginxAmikor a rendszer kéri, nyomja meg a Y és ENTER gombot annak megerősítéséhez, hogy telepíteni kívánja az Nginx-et. A telepítés befejezése után az Nginx webkiszolgáló aktív lesz és futni fog az Ubuntu szerverén.
Ellenőrizze, hogy az Nginx fut-e:
sudo systemctl status nginxLátnod kell egy üzenetet, ami azt jelzi, hogy az Nginx aktív:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since...Ubuntun az Nginx úgy van beállítva, hogy telepítéskor automatikusan elinduljon.
Engedélyezze a HTTP forgalmat a ufw tűzfalon keresztül. Az Nginx a telepítés során több UFW alkalmazásprofilt regisztrál. Ellenőrizze az elérhető profilokat:
sudo ufw app listAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSHEngedélyezze a legszigorúbb profilt, amely lehetővé teszi a szükséges forgalmat. Mivel az SSL még nincs konfigurálva, csak a 80 porton lévő HTTP-forgalmat engedélyezze:
Engedélyezze ezt a következő parancs futtatásával:
sudo ufw allow 'Nginx HTTP'
Ellenőrizze a tűzfal módosítását:
sudo ufw statusEz a kimenet megmutatja, hogy az HTTP-forgalom most már engedélyezett:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)A Nginx szerver domainek működésének teszteléséhez nyissa meg a http://your_domain címet a kedvenc webböngészőjében.
Ha nincs a szerverére mutató domain neve, és nem ismeri a szerver nyilvános IP-címét, a következő parancsok egyikének futtatásával megtalálhatja azt:
ip addr showhostname -IEz ki fog nyomtatni néhány IP-címet. Mindegyiket sorban kipróbálhatod a webböngésződben.
Alternatívaként ellenőrizheted, melyik IP-cím elérhető, ahogyan az az internet más pontjairól látható:
curl -4 icanhazip.comÍrd be a webböngésződben kapott címet, és az elvisz az Nginx alapértelmezett kezdőoldalára:
http://<server_domain_or_IP>Ha ezt az oldalt látja, az azt jelenti, hogy sikeresen telepítette az Nginx-et, és engedélyezte a HTTP forgalmat a webkiszolgálóján.
2. lépés — A MySQL telepítése
Telepítse a MySQL-t a webhely adatainak tárolásához és kezeléséhez. A MySQL a szabványos adatbázis-kezelő rendszer a PHP környezetekhez.
Ismét, használd az apt-et a szoftver beszerzéséhez és telepítéséhez:
sudo apt install mysql-serverAmikor a rendszer kéri, erősítse meg a telepítést a Y gomb megnyomásával, majd nyomja meg az ENTER-t.
A telepítés után futtassa a biztonsági szkriptet a nem biztonságos alapértelmezések eltávolításához és az adatbázis-hozzáférés lezárásához:
sudo mysql_secure_installationMegjelenik egy kérdés, amely arra kérdez rá, hogy szeretné-e konfigurálni a VALIDATE PASSWORD PLUGIN bővítményt.
Megjegyzés: Ennek a funkciónak az engedélyezése egyfajta mérlegelést igényel. Ha engedélyezve van, a megadott kritériumoknak nem megfelelő jelszavakat a MySQL hibaüzenettel elutasítja. Biztonságos a validáció kikapcsolva hagyása, de mindig erős, egyedi jelszavakat kell használni az adatbázis-hitelesítő adatokhoz.
Válasz Y az igenhez, vagy bármi mást a folytatáshoz engedélyezés nélkül:
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Ha arra válaszol, hogy „igen”, ki kell választania a jelszóellenőrzés szintjét. Ne feledje, hogy ha a legerősebb szinthez 2-t ad meg, hibaüzenetet kap, ha olyan jelszót próbál beállítani, amely nem tartalmaz számokat, nagy- és kisbetűket, valamint speciális karaktereket:
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1Függetlenül attól, hogy beállítottad-e a VALIDATE PASSWORD PLUGIN-et, a szervered meg fogja kérni, hogy válassz és erősíts meg egy jelszót a MySQL root felhasználó számára. Ezt ne tévesszük össze a rendszer root felhasználóval. A adatbázis root felhasználó egy adminisztratív felhasználó, teljes jogosultságokkal az adatbázis rendszer felett. Bár a MySQL root felhasználó alapértelmezett hitelesítési módja nem követeli meg a jelszó használatát, még akkor sem, ha be van állítva, érdemes itt egy erős jelszót megadni további biztonsági intézkedésként. Ezt kicsit később részletezzük.
Ha engedélyezted a jelszóellenőrzést, megjelenik a megadott root jelszó erőssége, és a szerver megkérdezi, hogy folytatni szeretnéd-e ezzel a jelszóval. Ha elégedett vagy a jelenlegi jelszóval, nyomd meg a Y billentyűt az „igen” megerősítéséhez:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : yA további kérdésekhez nyomja meg a Y billentyűt, majd minden kérést követően az ENTER gombot. Ez eltávolít néhány anonim felhasználót és a teszt adatbázist, letiltja a távoli root bejelentkezéseket, és betölti ezeket az új szabályokat, így a MySQL azonnal figyelembe veszi a végrehajtott változtatásokat.
Amikor elkészültél, teszteld, hogy be tudsz-e lépni a MySQL konzolba:
sudo mysqlEz a parancs a MySQL szerverhez az root adminisztrátori adatbázis-felhasználóként csatlakozik, amit a parancs futtatásakor a sudo használata jelez. A következő kimenetet kellene kapnia:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28-0ubuntu4 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>A MySQL konzolból való kilépéshez írja be a következőt:
exitÉszreveheted, hogy nem kellett jelszót megadnod a root felhasználóként való csatlakozáshoz, annak ellenére, hogy a mysql_secure_installation szkript futtatásakor definiáltál egyet. Ennek oka, hogy Ubuntu telepítésnél az adminisztratív MySQL felhasználó alapértelmezett hitelesítési módszere a auth_socket, és nem egy jelszót használó módszer. Ez elsőre biztonsági problémának tűnhet, de valójában biztonságosabbá teszi az adatbázis-szervert, mivel a root MySQL felhasználóként való bejelentkezésre csak azok a rendszerfelhasználók jogosultak, akik sudo jogosultsággal rendelkeznek, és a konzolon csatlakoznak, vagy egy, ugyanezekkel a jogosultságokkal futó alkalmazáson keresztül. Gyakorlatilag ez azt jelenti, hogy az adminisztratív adatbázis root felhasználóját nem lesz lehetőséged használni a PHP alkalmazásodból való csatlakozáshoz.
A megnövelt biztonság érdekében érdemes minden adatbázishoz külön felhasználói fiókokat létrehozni, kevesebb jogosultsággal, különösen akkor, ha azt tervezed, hogy több adatbázis lesz a szervereden.
Megjegyzés: A natív MySQL PHP könyvtár bizonyos régebbi kiadásai, a mysqlnd nem támogatják a caching_sha2_authentication módszert, amely a MySQL 8-ban létrehozott felhasználók alapértelmezett hitelesítési módszere. Emiatt, amikor adatbázis-felhasználókat hozunk létre PHP alkalmazások számára MySQL 8 alatt, ellenőriznünk kell, hogy azok a mysql_native_password használatára legyenek beállítva. A 6. lépésben bemutatjuk, hogyan lehet ezt megtenni.
A MySQL szerver most már telepítve van és biztonságossá téve. Ezután a PHP-t fogja telepíteni, amely az utolsó összetevő a LEMP csomagban.
3. lépés – PHP telepítése
Telepíts PHP-t a kód feldolgozásához és dinamikus tartalom generálásához. Az Nginx-nek külső programra van szüksége a PHP feldolgozásához.
A PHP-FPM („fastCGI folyamatkezelő”) hatékonyan kezeli a PHP feldolgozást további biztonsági funkciókkal, jobb teljesítményt biztosítva a PHP-alapú webhelyek számára. Telepítse a php-fpm-et a PHP-kérések Nginx-ből történő továbbításához, és a php-mysql-t a PHP és MySQL közötti kommunikáció engedélyezéséhez. A fő PHP-csomagok automatikusan települnek függőségként.
A php8.1-fpm és a php-mysql csomagok telepítéséhez futtassa a következőt:
sudo apt install php8.1-fpm php-mysqlAmikor a rendszer kéri, nyomja meg a Y és a ENTER gombot a telepítés megerősítéséhez.
Ellenőrizze, hogy a PHP-FPM fut-e:
sudo systemctl status php8.1-fpmLátnod kell egy kimenetet, amely azt mutatja, hogy a PHP-FPM aktív:
● php8.1-fpm.service - The PHP 8.1 FastCGI Process Manager
Loaded: loaded
Active: active (running)A PHP verzióját is ellenőrizheti:
php -vPHP 8.1.x (cli) (built: ...)
Copyright (c) The PHP Group
Zend Engine v4.1.xKonfigurálja az Nginxet, hogy használja ezeket a PHP-összetevőket.
4. lépés — Nginx konfigurálása a PHP feldolgozó használatára
Hozz létre Nginx kiszolgáló blokkokat (hasonlóan az Apache virtuális hosztjaihoz), hogy elkülönítsd a konfigurációt és több domaint is üzemeltethess egy szerveren. Ez az útmutató a your_domain példadomain nevet használja.
Info: Ha többet szeretnél megtudni a domain név beállításáról a Linux-Console.net-en, olvasd el a Linux-Console.net DNS-ről szóló bevezetőnket.
Az Ubuntu 22.04 rendszerben az Nginx egy alapértelmezett szerverblokkot engedélyez, amely a /var/www/html könyvtárból szolgál ki dokumentumokat. Több webhely esetén hozz létre egy könyvtárszerkezetet a /var/www alatt a your_domain számára, miközben a /var/www/html könyvtár marad az alapértelmezett fallback könyvtár.
Hozza létre a gyökér webkönyvtárat a your_domain számára a következő módon:
sudo mkdir /var/www/your_domainEzután rendelje hozzá a könyvtár tulajdonjogát a $USER környezeti változóval, amely a jelenlegi rendszerfelhasználójára hivatkozik:
sudo chown -R $USER:$USER /var/www/your_domainEzután nyiss meg egy új konfigurációs fájlt az Nginx sites-available könyvtárában a kedvenc parancssori szerkesztőddel. Itt a nano-t fogjuk használni:
sudo nano /etc/nginx/sites-available/your_domainEz egy új, üres fájlt hoz létre. Illessze be a következő alap konfigurációt:
server {
listen 80;
server_name your_domain www.your_domain;
root /var/www/your_domain;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}Így működik mindegyik ilyen utasítás és helyblokk:
listen— Meghatározza, melyik portot figyelje az Nginx. Ebben az esetben a80porton fog figyelni, ami az HTTP alapértelmezett portja.root— Meghatározza a dokumentum gyökerét, ahol ennek a weboldalnak a fájljai találhatók.index— Meghatározza, hogy milyen sorrendben részesíti az Nginx előnyben az indexfájlokat ezen a webhelyen. Gyakorlatilag megszokott, hogy aindex.htmlfájlokat magasabb prioritással sorolják aindex.phpfájlok elé, hogy lehetővé tegyék egy karbantartási kezdőoldal gyors beállítását PHP-alkalmazásokban. Ezeket a beállításokat módosíthatja, hogy jobban megfeleljenek az alkalmazás igényeinek.server_name— Meghatározza, hogy mely domain nevekre és/vagy IP-címekre kell válaszolnia ennek a szerverblokknek. Állítsa be ezt az utasítást a szerverének domain nevére vagy nyilvános IP-címére.location /— Az első location blokk tartalmaz egytry_filesdirektívát, amely ellenőrzi, hogy léteznek-e az URL-kérésnek megfelelő fájlok vagy könyvtárak. Ha az Nginx nem talál megfelelő erőforrást, 404-es hibát ad vissza.location ~ \.php$— Ez a location blokk a tényleges PHP feldolgozást kezeli azzal, hogy az Nginx-et afastcgi-php.confkonfigurációs fájlra és aphp8.1-fpm.sockfájlra irányítja, amely meghatározza, melyik socket kapcsolódik aphp8.1-fpm-hez.location ~ /\.ht— Az utolsó location blokk a.htaccessfájlokkal foglalkozik, amelyeket az Nginx nem dolgoz fel. Adeny alldirektíva hozzáadásával, ha bármely.htaccessfájl véletlenül a dokumentumgyökérbe kerülne, azok nem lesznek kiszolgálva a látogatóknak.
Amikor befejezted a szerkesztést, mentsd el és zárd be a fájlt. Ha a nano-t használod, ezt a CTRL+X megnyomásával, majd a Y és ENTER megnyomásával teheted meg a megerősítéshez.
Aktiválja a konfigurációt úgy, hogy hivatkozik a konfigurációs fájlra az Nginx sites-enabled könyvtárából:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/Ezután válaszd le az alapértelmezett konfigurációs fájlt a /sites-enabled/ könyvtárról:
sudo unlink /etc/nginx/sites-enabled/defaultMegjegyzés: Ha valaha vissza kell állítania az alapértelmezett konfigurációt, megteheti a szimbolikus hivatkozás újbóli létrehozásával, például az alábbi módon:
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/Ez meg fogja mondani az Nginxnek, hogy a következő újratöltéskor használja a konfigurációt. A konfigurációt szintaxis hibák szempontjából a következő parancs futtatásával tesztelheted:
sudo nginx -tHa bármilyen hiba jelentkezik, térjen vissza a konfigurációs fájlhoz, és ellenőrizze a tartalmát a folytatás előtt.
Amikor készen áll, töltse újra az Nginxet a változtatások alkalmazásához:
sudo systemctl reload nginxAz új weboldalad most már aktív, de a webgyökér /var/www/your_domain még üres. Hozz létre egy index.html fájlt ebben a helyen, hogy tesztelni tudd, hogy az új szerverblokk a várakozásoknak megfelelően működik:
nano /var/www/your_domain/index.htmlA következő tartalmat illessze be ebbe a fájlba:
<html>
<head>
<title>your_domain website</title>
</head>
<body>
<h1>Hello World!</h1>
<p>This is the landing page of <strong>your_domain</strong>.</p>
</body>
</html>Most nyissa meg a böngészőt, és lépjen a szervere domain nevére vagy IP-címére, ahogyan azt a server_name direktíva tartalmazza a szerver blokk konfigurációs fájljában:
http://server_domain_or_IPEgy ilyen oldal fog megjelenni:
Ha ezt az oldalt kapja, az azt jelenti, hogy az Nginx szerverblokkja a vártnak megfelelően működik.
Hagyhatod ezt a fájlt ideiglenes kezdőlapként az alkalmazásod számára, amíg létre nem hozol egy index.php fájlt, ami helyettesíti azt.
Figyelem: Miután hozzáadtad a index.php fájlodat, győződj meg róla, hogy eltávolítod vagy átnevezed a index.html fájlt a dokumentumgyökérből. Ha mindkét fájl létezik, az Nginx alapértelmezés szerint az index.html fájlt fogja kiszolgálni, és a PHP oldalad nem fog megjelenni – ez gyakori zavar forrása az új felhasználók számára.
A LEMP-készleted most már teljesen be van állítva. A következő lépésben létrehozol egy PHP-szkriptet, amellyel letesztelheted, hogy az Nginx valóban képes kezelni a .php fájlokat az újonnan konfigurált webhelyeden.
5. lépés – PHP tesztelése Nginx-szel
A LEMP-készletednek most már teljesen fel kell készülnie. Tesztelheted is, hogy ellenőrizd, az Nginx helyesen tudja-e átadni a .php fájlokat a PHP feldolgozódnak.
Ezt úgy teheti meg, hogy létrehoz egy teszt PHP-fájlt a dokumentumgyökérben. Nyisson meg egy új fájlt info.php néven a dokumentumgyökérben a választott szövegszerkesztőjében:
nano /var/www/your_domain/info.phpAdd hozzá a következő sorokat az új fájlhoz. Ez érvényes PHP kód, amely információt ad a szerveredről:
<?php
phpinfo();Amikor végzett, mentse el és zárja be a fájlt.
Most már hozzáférhetsz ehhez az oldalhoz a web böngésződben úgy, hogy meglátogatod a Nginx konfigurációs fájlodban beállított domain nevet vagy nyilvános IP címet, majd hozzáadod a /info.php részt:
http://server_domain_or_IP/info.phpOlyan weboldalt fog kapni, amely részletes információkat tartalmaz a szerveréről:
Miután ellenőrizted a PHP szervereddel kapcsolatos releváns információkat azon az oldalon, a legjobb eltávolítani a létrehozott fájlt, mivel érzékeny információkat tartalmaz a PHP környezetedről és az Ubuntu szerveredről. Ehhez használhatod a rm parancsot a fájl törléséhez:
sudo rm /var/www/your_domain/info.phpBármikor újra létrehozhatod ezt a fájlt, ha később szükséged lenne rá.
6. lépés — Adatbázis-kapcsolat tesztelése PHP-ből (Opcionális)
Ha szeretnéd letesztelni, hogy a PHP képes-e kapcsolódni a MySQL-hez és végrehajtani adatbázis-lekérdezéseket, létrehozhatsz egy teszttáblát dummy adatokkal, majd lekérdezheted annak tartalmát egy PHP scriptből. Mielőtt ezt megtennéd, létre kell hoznod egy teszt adatbázist és egy új MySQL felhasználót, amely megfelelően van konfigurálva az hozzáféréshez.
Megjegyzés: A natív MySQL PHP könyvtár bizonyos régebbi kiadásai, a mysqlnd nem támogatják a caching_sha2_authentication módszert, ami a MySQL 8 alapértelmezett hitelesítési módja, ezért előfordulhat, hogy biztosítanod kell, hogy azok a mysql_native_password használatára legyenek konfigurálva.
Létrehozunk egy example_database nevű adatbázist és egy example_user nevű felhasználót, de ezeket a neveket lecserélheted más értékekre is.
Először csatlakozzon a MySQL konzolhoz a root fiókkal:
sudo mysqlÚj adatbázis létrehozásához futtassa a következő parancsot a MySQL konzoljából:
CREATE DATABASE example_database;Most már létrehozhatsz egy új felhasználót, és teljes jogosultságot adhatasz neki az általad létrehozott egyedi adatbázison.
A következő parancs létrehoz egy új felhasználót example_user néven, a mysql_native_password használatával alapértelmezett hitelesítési módszerként. A felhasználó jelszavát password értékre állítjuk, de ezt az értéket cserélned kell egy általad választott biztonságos jelszóra.
CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';Most meg kell adnunk ennek a felhasználónak a jogosultságot az example_database adatbázishoz:
GRANT ALL ON example_database.* TO 'example_user'@'%';Ez teljes jogosultságot ad a example_user felhasználónak az example_database adatbázis felett, miközben megakadályozza, hogy ez a felhasználó más adatbázisokat hozzon létre vagy módosítson a szervereden.
Most lépj ki a MySQL shellből a következő parancs segítségével:
exitTesztelheted, hogy az új felhasználónak megvannak-e a megfelelő jogosultságai, ha újra bejelentkezel a MySQL konzolba, ezúttal a saját felhasználói adatokkal. Figyeld meg a -p kapcsolót ebben a parancsban, amely a example_user felhasználó létrehozásakor megadott jelszót fogja kérni:
mysql -u example_user -pA MySQL konzolba való bejelentkezés után erősítse meg, hogy hozzáfér az example_database adatbázishoz:
SHOW DATABASES;Ez a következő kimenetet fogja adni:
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)Ezután létrehozunk egy todo_list nevű teszt táblát. A MySQL konzolból futtassa a következő parancsot:
CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);Szúrj be néhány sort a teszt táblába. Lehet, hogy érdemes megismételni a következő parancsot néhányszor, különböző értékekkel:
INSERT INTO example_database.todo_list (content) VALUES ("My first important item");Annak megerősítéséhez, hogy az adatok sikeresen elmentődtek a táblázatodba, futtasd a következőt:
SELECT * FROM example_database.todo_list;A kimeneted a következőképpen jelenjen meg:
+---------+--------------------------+
| item_id | content |
+---------+--------------------------+
| 1 | My first important item |
| 2 | My second important item |
| 3 | My third important item |
| 4 | and this one more thing |
+---------+--------------------------+
4 rows in set (0.000 sec)Miután megerősítetted, hogy érvényes adatok vannak a teszt tábládban, kiléphetsz a MySQL konzolból:
exitMost létrehozhatod a PHP szkriptet, amely csatlakozik a MySQL-hez, és lekérdezi a tartalmadat. Hozz létre egy új PHP fájlt az egyedi webgyökér könyvtáradban a kedvenc szerkesztőddel. Ehhez mi a nano-t fogjuk használni:
nano /var/www/your_domain/todo_list.phpA következő PHP szkript csatlakozik a MySQL adatbázishoz, és lekérdezi a todo_list tábla tartalmát, majd listában jeleníti meg az eredményeket. Ha problémába ütközik az adatbáziskapcsolat, kivételt dob.
Add hozzá a következő tartalmat a todo_list.php szkriptedhez:
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";
try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>TODO</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "<li>" . $row['content'] . "</li>";
}
echo "</ol>";
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
Mentsd el a fájlt, és zárd be, amikor befejezted a szerkesztést.
Mostantól hozzáférhet ehhez az oldalhoz a webböngészőjében, ha meglátogatja a webhelyéhez konfigurált domain nevet vagy nyilvános IP-címet, majd a /todo_list.php kódot:
http://server_domain_or_IP/todo_list.phpOlyan oldalt kellene kapnod, mint a következő, amely megmutatja az általad a teszt táblába bevitt tartalmat:
Ez azt jelenti, hogy a PHP környezeted készen áll a MySQL szerverhez való csatlakozásra és azzal való interakcióra.
Gyakran Ismételt Kérdések
Mire használják a LEMP technológiai csomagot?
A LEMP stack dinamikus, PHP-alapú weboldalakat és alkalmazásokat hosztol, beleértve a WordPress, Laravel, Magento, Drupal és egyedi PHP-projekteket. Különösen hatékony nagy forgalmú webhelyeknél, amelyek hatékony egyidejű kapcsolatkezelést igényelnek.
Mi a különbség a LEMP és a LAMP csomagok között?
A LEMP Nginx-et használ, amely az eseményvezérelt architektúrával aszinkron módon kezeli a kapcsolatokat – hatékony a párhuzamos felhasználók számára. A LAMP Apache-ot használ, amely hagyományosan kéréseként egy szálat hoz létre (bár a modern Apache támogatja az eseményvezérelt módokat). A LEMP általában jobb teljesítményt nyújt statikus tartalom és magas párhuzamosságú helyzetek esetén, míg a LAMP könnyebb .htaccess konfigurációt és szélesebb modul támogatást biztosít.
Melyik Ubuntu verziót használjam LEMP-hez?
Ubuntu 22.04 LTS ez az útmutató elsődleges célja, PHP 8.1-gyel, MySQL 8.0-val és hosszú távú támogatással rendelkező Nginx-szel. A Ubuntu 24.04 LTS (legújabb kiadás) alapértelmezés szerint PHP 8.3-at tartalmaz, és az útmutató szerint a PHP-FPM socket útvonalak és verziószámok megfelelő módosításával használható.
Hogyan telepíthetem a LEMP csomagot az Ubuntu 24.04-re?
Kövesse ezeket az alaplépéseket:
- Telepítsd az Nginx-et:
sudo apt install nginx - Telepítsd a MySQL-t:
sudo apt install mysql-server - Futtassa a MySQL biztonsági szkriptet:
sudo mysql_secure_installation - Telepítsd a PHP-FPM-et:
sudo apt install php-fpm php-mysql - Nginx szerverblokk konfigurálása PHP-FPM integrációval
- Teszt
info.php-vel és adatbázis-kapcsolattal
Lásd a teljes útmutatót az 1-6. lépésekben fent.
Milyen PHP-verziót kell telepítenem Nginx és MySQL mellé?
A legjobb kompatibilitás érdekében használd az Ubuntu verziód alapértelmezett PHP-jét:
- Ubuntu 22.04: PHP 8.1 (a
php8.1-fpmsegítségével telepítve) - Ubuntu 24.04: PHP 8.3 (egyéni parancsokhoz állítsd be
php8.3-fpmerre a verzióra)
Mindkét verzió kiválóan működik Nginx-szel és MySQL 8.0-val, támogatja a modern keretrendszereket, és aktív biztonsági frissítéseket kap.
Hogyan konfiguráljam az Nginx-et PHP fájlok feldolgozására?
Adj hozzá egy location ~ \.php$ blokkot az Nginx szerver konfigurációjához, amely a PHP-kéréseket Unix socketen keresztül a PHP-FPM-nek továbbítja:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}Állítsd be a socket útvonalát a PHP verziódnak megfelelően, teszteld a sudo nginx -t paranccsal, majd töltsd újra a sudo systemctl reload nginx segítségével.
Miért kapok „502 Bad Gateway” hibát a PHP-FPM telepítése után?
502-es hibák azt jelzik, hogy az Nginx nem tud kommunikálni a PHP-FPM-mel. Gyakori okok:
- PHP-FPM nem fut: Ellenőrizd a
sudo systemctl status php8.1-fpmparanccsal, és indítsd el, ha szükséges - Hibás socket útvonal: Ellenőrizd, hogy a
/run/php/php8.1-fpm.socklétezik-e, és megegyezik-e az Nginx konfigurációddal - Engedélyprobléma: Győződjön meg arról, hogy az Nginx felhasználó (www-data) hozzá tud férni a sockethez
- PHP-FPM konfigurációs hiba: Ellenőrizze a naplókat a
/var/log/php8.1-fpm.logfájlban
Megoldás: Indítsa újra mindkét szolgáltatást:
sudo systemctl restart php8.1-fpm nginxHogyan biztosíthatom a MySQL-t a telepítés után?
Futtassa a beépített biztonsági szkriptet:
sudo mysql_secure_installationKövesse az utasításokat a következőhöz:
- Jelszóellenőrző bővítmény engedélyezése
- Állítson be erős root jelszót
- Anonim felhasználók eltávolítása
- A távoli root bejelentkezés letiltása
- Tesztadatbázis eltávolítása
- Újratöltési jogosultságok
Az alkalmazás adatbázisaihoz hozzon létre dedikált felhasználókat korlátozott jogosultságokkal a root fiók használata helyett.
Futtathatok több weboldalt egy LEMP szerveren?
Igen, hozz létre külön Nginx szerverblokkokat minden domainhez:
- Könyvtár létrehozása:
sudo mkdir -p /var/www/second_domain - Szerverblokk létrehozása:
sudo nano /etc/nginx/sites-available/second_domain - Konfigurálja egyedi
server_nameésrootdirektívákkal - Engedélyezés:
sudo ln -s /etc/nginx/sites-available/second_domain /etc/nginx/sites-enabled/ - Teszteld és töltsd újra:
sudo nginx -t && sudo systemctl reload nginx
Minden webhelynek lehet külön PHP-beállítása és adatbázis-felhasználója.
Hogyan tudom frissíteni a PHP-t egy újabb verzióra?
Az Ubuntu csomagfrissítések automatikusan kezelik a kisebb verziókat. A főverzió-frissítések esetén:
Add hozzá Ondřej PHP PPA-ját (megbízható harmadik féltől származó adattár):
sudo add-apt-repository ppa:ondrej/php sudo apt updateÚj PHP-FPM verzió telepítése:
sudo apt install php8.3-fpm php8.3-mysql -yFrissítse az Nginx konfigurációs socket útvonalát
/run/php/php8.3-fpm.sockértékreNginx tesztelése és újratöltése
Opcionálisan távolítsa el a régi verziót:
sudo apt purge php8.1-fpm
Mindig tesztelj a staging környezetben, mielőtt frissítenéd az éles rendszereket.
Gyakori problémák elhárítása
502 Hibás átjáró
A leggyakoribb LEMP-készlet probléma akkor fordul elő, amikor az Nginx nem tud kommunikálni a PHP-FPM-mel:
PHP-FPM állapot ellenőrzése:
sudo systemctl status php8.1-fpmFoglalat elérési útjának ellenőrzése:
ls -la /run/php/A várt kimenetnek meg kellene jelenítenie a php8.1-fpm.sock fájlt.
Gyakori javítások:
- PHP-FPM újraindítása:
sudo systemctl restart php8.1-fpm - Ellenőrizze, hogy az Nginx szerverblokk socket útvonala megegyezik-e a tényleges PHP-FPM socket útvonalával
- Ellenőrizze a fájl jogosultságokat:
sudo chown www-data:www-data /run/php/php8.1-fpm.sock
Hozzáférés megtagadva hiba
Javítsa meg a webkiszolgáló könyvtárainak jogosultságait:
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domainMySQL kapcsolat problémák
MySQL root jelszó visszaállítása:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
FLUSH PRIVILEGES;
EXIT;MySQL szolgáltatás ellenőrzése:
sudo systemctl status mysqlPHP nem dolgoz fel
PHP modulok ellenőrzése:
php -m | grep -E 'mysql|fpm'Ellenőrizze a PHP-FPM beállításait:
sudo nginx -t
sudo php-fpm8.1 -t404 hiba hibakeresése:
- Ellenőrizze, hogy az
index.phpszerepel-e az Nginxindexdirektívájában - Ellenőrizze, hogy létezik-e a fájl:
ls -la /var/www/your_domain/ - Nginx hibanaplók ellenőrzése:
sudo tail -f /var/log/nginx/error.log
Következtetés
Ebben az útmutatóban rugalmas alapot építettél weboldalak és alkalmazások PHP-vel történő kiszolgálásához a látogatóknak, Nginx használatával webszerverként és MySQL adatbázis-rendszerként. Ezt Apache webszerverrel is megteheted, nézd meg az útmutatónkat a Linux, Apache, MySQL, PHP (LAMP) stack Ubuntu-ra történő telepítéséről. Webhelyedet a Let’s Encrypt segítségével is biztonságossá teheted, amely ingyenes, megbízható tanúsítványokat biztosít. Tanuld meg, hogyan teheted ezt meg a Let’s Encrypt for Apache útmutatónk segítségével.
Köszönjük, hogy a Linux-Console.net közösséggel tanultál.



