Späť na blog

Ako nainštalovať LEMP stack (Linux, Nginx, MySQL PHP) na Ubuntu 20.04

Ako nainštalovať LEMP stack (Linux, Nginx, MySQL PHP) na Ubuntu 20.04

Ú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:

Po aktualizácii môžete nainštalovať Nginx pomocou nasledujúceho príkazu:

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:

Ak chcete zobraziť zoznam konfigurácií aplikácií, ktoré ufw povoľuje, zadajte nasledujúci príkaz:

Nižšie je snímka obrazovky, ktorá zobrazuje výstup vyššie uvedeného príkazu:

ufw app list

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:

Na overenie, či bola zmena úspešná, zadajte nasledujúci príkaz:

check 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:

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:

nginx start page

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:

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:

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:

password strength

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:

set password

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:

mysql secure installation

Počiatočná konfigurácia zabezpečenia je dokončená.

Verziu nainštalovaného MySQL môžete skontrolovať spustením príkazu:

Tu je verzia, ktorú používame v tomto návode:

mysql version

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:

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:

mysql dbs LEMP stack

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ú:

user authentication check

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:

Po úspešnom vykonaní dopytu spustite príkaz flush privileges, aby sa zmeny prejavili okamžite:

Znova spustite príkaz select nižšie, aby ste skontrolovali, či sa zmeny prejavili:

updated user authentication check

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:

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:

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:

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:

php version

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:

Do súboru napíšte nasledujúci skript:

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:
php 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:

Potom zrušte prepojenie predvoleného bloku servera zo sites-enabled zadaním nasledujúceho príkazu:

Otestujte svoju novú konfiguráciu zadaním nasledujúceho príkazu:

Ak je syntax v poriadku, znova načítajte Nginx pomocou nasledujúceho príkazu:

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:

V editore nano napíšte nasledujúci úryvok kódu:

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:

Mali by ste vidieť stránku s informáciami o PHP:

php info page

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:

 

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!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.