Úvod
Vo svete internetu sa spája niekoľko technológií, aby vytvorili riešenie, ktoré používateľom internetu umožňuje prístup k dynamickému obsahu na webe. LEMP stack je jedným z týchto riešení. Spája štyri technológie, ktoré tvoria kompletné serverové riešenie pre vysoko výkonné a dynamické webové stránky. LEMP je akronym pre Linux, Nginx, MySQL a PHP. Linux je operačný systém servera. Nginx (ktorý sa vyslovuje ako Engine-X, odtiaľ písmeno E v akronymu) je softvér webového servera. Ďalej, MySQL je databázový systém, ktorý uchováva údaje o webových stránkach a používateľoch. PHP je skriptovací jazyk na strane servera pre dynamické spracovanie.
V tomto návode vás prevedieme inštaláciou a konfiguráciou LEMP stacku a skontrolujeme, či všetko beží podľa očakávania. Začnime!
Krok 1: Konfigurácia servera s Ubuntu 20.04
Ubuntu 20.04 je operačný systém založený na Linuxe. Existuje niekoľko serverových operačných systémov založených na Linuxe, vrátane bezplatných a prémiových. Tento návod sa zameriava na Ubuntu 20.04, ktorý je bezplatný a open-source. Tento krok rieši prvú požiadavku v akronymu LEMP stacku, písmeno L. Mali by ste mať skutočnú Ubuntu 20.04 inštaláciu na vašom VPS, aby ste mohli pokračovať v nasledujúcich krokoch. Môžete postupovať podľa nášho návodu na nastavenie vášho Ubuntu servera. Voliteľne, ak chcete postupovať podľa tohto návodu na vašom lokálnom počítači, môžete si stiahnuť inštalačný obraz Ubuntu 20.04 servera priamo z webovej stránky Ubuntu website. Mali by ste nakonfigurovať bežného používateľa bez oprávnení root s privilégiami sudo, pretože budeme spúšťať niekoľko príkazov, ktoré vyžadujú oprávnenia sudo.
Krok 2: Inštalácia a konfigurácia servera Nginx
Webové servery nám umožňujú poskytovať obsah, ako sú webové stránky, návštevníkom webu. Nginx je populárny webový server, ktorý patrí medzi päť najlepších open-source webových serverov preferovaných vývojármi. Tento krok rieši druhú požiadavku v LEMP stacku, E pre Nginx. Ubuntu má predvolený repozitár balíkov, z ktorého budeme získavať balíky na použitie v tomto návode. Ubuntu je založené na Debiane, ktorý na správu svojich balíkov využíva apt alebo dpkg. Pre balíky z predvoleného repozitára budeme používať apt.
Všeobecným pravidlom je, že pred spustením akejkoľvek inštalácie na systéme Linux by ste mali spustiť príkaz na aktualizáciu. Začnite zadaním nasledujúceho príkazu v termináli:
|
1 |
sudo apt update |
Po aktualizácii môžete nainštalovať Nginx pomocou nasledujúceho príkazu:
|
1 |
sudo apt install nginx |
Po dokončení inštalácie sa Nginx spustí automaticky. Ďalším krokom je konfigurácia firewallu na povolenie prevádzky. Ubuntu používa na konfiguráciu firewallov balík ufw (Uncomplicated Firewall). Po inštalácii sa Nginx zaregistruje ako služba v ufw. Ubuntu spúšťa službu Firewall automaticky pri štarte systému, ale pre istotu zadajte nasledujúci príkaz na jej povolenie:
|
1 |
sudo ufw enable |
Ak chcete zobraziť zoznam konfigurácií aplikácií, ktoré ufw povoľuje, zadajte nasledujúci príkaz:
|
1 |
sudo ufw app list |
Nižšie je snímka obrazovky, ktorá zobrazuje výstup vyššie uvedeného príkazu:

Ako môžete vidieť, Nginx je už zaregistrovaný v ufw a má tri profily, ako je vysvetlené nižšie:
- Nginx Full – otvára port 80 aj 443. Port 80 je pre bežnú/nešifrovanú prevádzku, t. j. HTTP. Port 443 je pre prevádzku šifrovanú pomocou TLS/SSL, t. j. https.
- Nginx HTTP – otvára iba port 80 – nešifrovaná prevádzka.
- Nginx HTTPS – otvára iba port 443 – prevádzka šifrovaná pomocou TLS/SSL.
Hoci sa Nginx automaticky registruje v ufw, do vášho servera nie je povolená žiadna prevádzka, kým to sami neurobíte. Môžete sa rozhodnúť povoliť všetky alebo niektoré z profilov, avšak je lepšie povoliť ten najviac obmedzujúci profil, ktorý stále umožní prevádzku, ktorú ste pre svoj webový server nakonfigurovali. Keďže sme v tomto návode nenakonfigurovali SSL, povolíme iba prevádzku HTTP na porte 80. Ak vás to zaujíma, máme návod na konfiguráciu SSL na serveri Nginx od Let's Encrypt pomocou nástroja Certbot.
Povoľme prevádzku na porte 80 zadaním nasledujúceho príkazu:
|
1 |
sudo ufw allow 'Nginx HTTP' |
Na overenie, či bola zmena úspešná, zadajte nasledujúci príkaz:
|
1 |
sudo ufw status |

Vyššie uvedený výstup zo spustenia príkazu ukazuje, že prevádzka HTTP je teraz povolená. To, či server beží, môžete skontrolovať zadaním vašej domény alebo verejnej IP adresy servera do prehliadača. Ak ste nenakonfigurovali názov domény a nie ste si istí verejnou IP adresou svojho servera, môžete ju nájsť pomocou curl spustením nasledujúceho príkazu:
|
1 |
curl -4 icanhazip.com |
Skopírujte výstup vyššie uvedeného príkazu, ktorým je vaša verejná IP adresa, do adresného riadka prehliadača. Po načítaní stránky uvidíte predvolenú úvodnú stránku Nginx:

Vyššie uvedená stránka naznačuje, že ste úspešne nainštalovali Nginx.
Krok 3: Inštalácia systému na správu databáz MySQL
Správa dát je kľúčovou súčasťou každej dynamickej webovej stránky. MySQL je systém na správu databáz, ktorý ukladá a spravuje dáta webovej stránky. Tento krok rieši tretiu požiadavku v balíku LEMP, M. Na inštaláciu MySQL zadajte nasledujúci príkaz:
|
1 |
sudo apt install mysql-server |
Po dokončení inštalácie MySQL ju musíte pred použitím nakonfigurovať. Súčasťou konfigurácie je zabezpečenie databázového servera. MySQL sa dodáva so skriptom, ktorý vás prevedie zabezpečením a nastavením hesiel. Nasledujúci príkaz spustí skript:
|
1 |
sudo mysql_secure_installation |

Skript sa opýta, či chcete nastaviť komponent VALIDATE PASSWORD, alebo stlačiť ľubovoľné písmeno na pokračovanie bez povolenia tohto komponentu.
Komponent VALIDATE PASSWORD je funkcia, ktorá slúži na kontrolu, či heslo, ktoré ste zadali pre konkrétneho používateľa na vašom databázovom serveri, spĺňa špecifické kritériá. Môžete ho nakonfigurovať tak, aby kontroloval veci ako dĺžku, číselné znaky, prítomnosť veľkých alebo malých písmen atď. Ak nie je povolený, môžete si nakonfigurovať ľubovoľné heslo podľa vlastného výberu. Ak je však povolený, musíte použiť heslo, ktoré spĺňa zadané kritériá. Jeho povolenie môže spôsobiť problémy s balíkmi, ktoré automaticky konfigurujú prihlasovacie údaje používateľov MySQL, ako je napríklad balík phpMyAdmin pre Ubuntu. Či ho povolíte alebo nie, je osobná voľba. Vaša databáza je v bezpečí, aj keď ho nepovolíte, len sa uistite, že používate silné a jedinečné heslá.
Ak ste stlačili Y na povolenie komponentu, skript vás požiada o výber úrovne overovania hesla:

Skript poskytuje 3 úrovne overovania hesla. Úroveň LOW vyžaduje, aby vaše heslo obsahovalo iba 8 alebo viac znakov. Úroveň MEDIUM vyžaduje, aby vaše heslo obsahovalo 8 alebo viac znakov, ktoré musia byť kombináciou veľkých písmen, malých písmen a špeciálnych znakov. Úroveň STRONG vyžaduje komplexné heslo s 8 alebo viac znakmi, ktoré musí byť kombináciou veľkých písmen, malých písmen, špeciálnych znakov a slov, a nesmie byť založené na bežných slovníkových slovách, inak sa zobrazia chyby. Zvoľme úroveň Low, napíšte 0 a stlačte enter.
Skript vás vyzve na zadanie a opätovné zadanie hesla:

Napíšte y a stlačte enter, aby ste prijali zadané heslo ako heslo pre používateľa root. Nasledujúce výzvy slúžia na zvýšenie zabezpečenia servera MySQL. Začína sa odstránením predvolených anonymných používateľov, s ktorými sa dodáva každá inštalácia MySQL, zakázaním prihlásenia root zo vzdialeného pripojenia a odstránením testovacích databáz. Posledná výzva vás požiada o opätovné načítanie tabuľky oprávnení, aby sa príkazy prejavili. Pri všetkých výzvach napíšte y a stlačte enter:

Počiatočná konfigurácia zabezpečenia je dokončená.
Verziu nainštalovaného MySQL môžete skontrolovať spustením príkazu:
|
1 |
sudo mysql –V |
Tu je verzia, ktorú používame v tomto návode:
![]()
V systémoch Ubuntu s verziami MySQL 5.7 a novšími je používateľ root nakonfigurovaný na autentifikáciu pomocou zásuvného modulu auth_socket a nie pomocou hesla. To zaisťuje vyššiu bezpečnosť, avšak môže to byť problém pri externých balíkoch, ako je napríklad balík phpMyAdmin. Ak uprednostňujete pokračovať v používaní zásuvného modulu auth_socket, prejdite na krok 4.
Ak sa namiesto toho chcete pripojiť pomocou hesla, musíte nakonfigurovať metódu autentifikácie na používanie mysql_native_password.
Spustite príkazový riadok MySQL zadaním nasledujúceho príkazu:
|
1 |
sudo mysql |
MySQL sa dodáva s niekoľkými predvolenými databázami. Zoznam predvolených databáz si môžete zobraziť zadaním nasledujúceho dopytu vo vašom termináli:
|
1 |
show databases; |

Databáza s názvom mysql ukladá niekoľko konfigurácií súvisiacich s MySQL. Táto databáza obsahuje tabuľku s názvom users, ktorá obsahuje podrobnosti o používateľoch a metódu autentifikácie pre každého z nich. Môžeme použiť SQL dopyty na získanie, zmenu a vymazanie informácií z tabuľky. Zadajte nasledujúci dopyt do svojho terminálu, aby ste získali podrobnosti o tom, ktorú metódu autentifikácie jednotliví používatelia používajú:
|
1 |
SELECT user, authentication_string, plugin, host FROM mysql.user; |

Vyššie uvedený výstup ukazuje, že používateľ root sa v skutočnosti autentifikuje pomocou zásuvného modulu auth_socket. Ak chcete zmeniť metódu autentifikácie pre používateľa root, zadajte do terminálu nasledujúci príkaz. Nezabudnite ho zmeniť tak, aby zodpovedal sile hesla pre strednú úroveň, ktorú sme nastavili v predchádzajúcom kroku, inak to spôsobí chybu:
|
1 |
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword'; |
Po úspešnom vykonaní dopytu spustite príkaz flush privileges, aby sa zmeny prejavili okamžite:
|
1 |
FLUSH PRIVILEGES; |
Znova spustite príkaz select nižšie, aby ste skontrolovali, či sa zmeny prejavili:
|
1 |
SELECT user,authentication_string,plugin,host FROM mysql.user; |

Z výstupu vyplýva, že používateľ root sa teraz bude autentifikovať pomocou mysql_native_password. Príkazový riadok mysql môžete ukončiť zadaním exit a stlačením klávesu enter.
Môžete sa pokúsiť prihlásiť pomocou nastaveného hesla zadaním nasledujúceho príkazu:
|
1 |
mysql -u root –p |
Výzva vás požiada o zadanie hesla. Ak sa zhoduje, uvidíte príkazový riadok MySQL. Úspešne ste nastavili svoj server s MySQL. Potom ukončite príkazový riadok MySQL.
Krok 4: Inštalácia PHP a nastavenie Nginx na používanie procesora PHP
PHP je akronym pre PHP: Hypertext Preprocessor. Je to široko používaný open-source skriptovací jazyk na strane servera pre webové stránky a webové aplikácie. PHP sa stará o štvrtú požiadavku v balíku LEMP. PHP pomáha pri generovaní dynamického obsahu na webovej stránke. Môže sa použiť ako sprostredkovateľ medzi vašimi webovými stránkami a databázovým systémom. Číta dáta z databázy a prezentuje ich návštevníkom vašej webovej stránky. Okrem toho môže vkladať, aktualizovať a mazať dáta z databázy.
Nginx nemá natívne pluginy na spracovanie PHP ako iné webové servery, takže musíte nainštalovať php-fpm na odovzdávanie požiadaviek z Nginx do PHP na spracovanie. Najprv pridajte repozitár Ubuntu universe, ktorý obsahuje bezplatný softvér s otvoreným zdrojovým kódom spravovaný komunitou Ubuntu. Zadajte nasledujúci príkaz do svojho terminálu:
|
1 |
sudo add-apt-repository universe |
Potom nainštalujte balík php-fpm spolu s pomocným balíkom php-mysql, aby ste umožnili PHP komunikovať s MySQL, pomocou nasledujúceho príkazu:
|
1 |
sudo apt install php-fpm php-mysql |
V čase písania tohto návodu je verzia PHP nainštalovaná z vyššie uvedeného príkazu 7.2.24. Preto nainštaluje balík php-fpm7.2. Majte to na pamäti pri aktualizácii blokov servera a uistite sa, že zadáte správnu verziu, inak sa vaša stránka nenačíta.
Verziu PHP môžete skontrolovať zadaním nasledujúceho príkazu:
|
1 |
php -v |

V tomto bode sú už nainštalované všetky komponenty LEMP stacku. Ďalším krokom je nakonfigurovať Nginx tak, aby smeroval požiadavky na PHP procesor. V Nginxe sa konfigurácia vykonáva v rámci blokov servera. Bloky servera sú ekvivalentom virtuálnych hostiteľov (virtual hosts) v Apache. Pre viac informácií si môžete pozrieť náš návod na tému Nginx server blocks.
Pre tento návod vytvorme blok servera pre doménu test.com s rovnakým názvom, pričom si môžete vybrať akýkoľvek názov podľa vlastného uváženia. Bloky servera sa nachádzajú v adresári /etc/nginx/sites-available/. Na vytvorenie súboru bloku servera použite nano zadaním nasledujúceho príkazu:
|
1 |
sudo nano /etc/nginx/sites-available/test.com |
Do súboru napíšte nasledujúci skript:
|
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; } } |
Tu je stručný popis toho, čo jednotlivé direktívy robia:
- listen – definuje port, na ktorom bude Nginx počúvať. Port 80 je predvolený port, avšak ak by ste mali nastavené SSL, zadali by ste 443.
- root – obsahuje adresár, v ktorom budú uložené súbory webu.
- index – inštruuje Nginx, aby uprednostnil poskytovanie súborov index.php, ak sú k dispozícii na základe požiadavky.
- server_name – definuje názov bloku servera, obsahuje verejnú IP adresu alebo názov domény vášho servera.
- location/ – prvý blok location obsahuje direktívu try_files. Kontroluje existenciu súborov zodpovedajúcich požiadavke URI, ak sa nenájdu, vráti sa chyba 404.
- location ~ \.php$ – táto direktíva spracováva PHP tak, že smeruje požiadavky Nginxu cez súbor fastcgi-php.conf a súbor php7.2-fpm.sock, ktorý definuje, aký soket sa má priradiť k php-fpm. Tento príkaz kontroluje stav php-fpm, pričom verziu špecifikujeme ako 7.2, čo je verzia, ktorú máme. Uistite sa, že skontrolujete verziu, ktorú máte nainštalovanú vy:
|
1 |
sudo service php7.2-fpm status |
- location ~ /\.ht – táto direktíva spracováva súbory .htaccess, ktoré Nginx nespracováva. Direktíva deny all zabezpečuje, že návštevníkom nebude poskytnutý žiadny súbor htaccess.
Po pridaní skriptu do súboru test.com stlačte Ctrl + O a potom stlačením klávesu Enter súbor uložte. Stlačením Ctrl + X zatvorte editor.
Potom musíte povoliť blok servera zadaním nasledujúceho príkazu na vytvorenie symbolického odkazu do /etc/nginx/sites-enabled:
|
1 |
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/ |
Potom zrušte prepojenie predvoleného bloku servera zo sites-enabled zadaním nasledujúceho príkazu:
|
1 |
sudo unlink /etc/nginx/sites-enabled/default |
Otestujte svoju novú konfiguráciu zadaním nasledujúceho príkazu:
|
1 |
sudo nginx -t |
Ak je syntax v poriadku, znova načítajte Nginx pomocou nasledujúceho príkazu:
|
1 |
sudo systemctl reload nginx |
V tomto kroku bol váš LEMP stack nainštalovaný a nakonfigurovaný. V ďalšom kroku vytvoríme testovací súbor, aby sme sa uistili, že sa jednotlivé komponenty správne prepájajú.
Krok 5: Vytvorenie PHP súboru na otestovanie vášho LEMP stacku
V tomto kroku vytvoríme súbor .php a spustíme ho na serveri Nginx, aby sme skontrolovali, či funguje správne. Na kontrolu dostupných balíkov PHP použijeme globálnu funkciu phpinfo(). Zadaním nasledujúceho príkazu otvorte súbor .php v editore nano:
|
1 |
sudo nano /var/www/html/test.php |
V editore nano napíšte nasledujúci úryvok kódu:
|
1 |
<?php phpinfo(); |
Uložte a zatvorte súbor. Ak chcete navštíviť stránku, ktorú ste práve vytvorili vo svojom prehliadači, nájdite svoju doménu alebo IP adresu a prejdite na ňu nasledovne:
|
1 |
http://your_server_domain_or_IP/test.php |
Mali by ste vidieť stránku s informáciami o PHP:

Vyššie uvedená stránka ukazuje, že ste úspešne nastavili Nginx. Keďže súbor, ktorý ste vytvorili na testovanie, obsahuje podrobné informácie o vašom serveri, mali by ste ho nezabudnúť odstrániť. Zadaním nasledujúceho príkazu súbor odstránite:
|
1 |
sudo rm /var/www/html/test.php |
Ak budete v budúcnosti potrebovať otestovať svoje konfigurácie, môžete súbor kedykoľvek znova vytvoriť.
Záver
V tomto návode ste nakonfigurovali LEMP stack na vašom Ubuntu 20.04, čo je jeden z najvýkonnejších dostupných stackov na vývoj webových aplikácií. Odtiaľto by ste mali byť schopní hostovať takmer akúkoľvek webovú stránku, webové aplikácie alebo serverovú logiku pre vašu mobilnú aplikáciu. Aby ste zabezpečili, že vaša webová stránka bude poskytovať obsah prostredníctvom zabezpečeného pripojenia SSL, odporúčame vám pozrieť si náš návod na konfiguráciu SSL certifikátov na serveri Nginx.
Príjemnú prácu!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.