Úvod
Ve světě internetu se spojuje několik technologií, které tvoří řešení umožňující uživatelům internetu přístup k dynamickému obsahu na celosvětové síti. LEMP stack je jedním z těchto řešení. Spojuje čtyři technologie, které tvoří kompletní serverové řešení pro vysoce výkonné a dynamické webové stránky. LEMP je akronym pro Linux, Nginx, MySQL a PHP. Linux je operační systém serveru. Nginx (který se vyslovuje jako Engine-X, odtud písmeno E v akronymu) je webový server. MySQL je databázový systém, který uchovává data webu a uživatelů. PHP je skriptovací jazyk na straně serveru pro dynamické zpracování.
V tomto návodu vás provedeme instalací a konfigurací LEMP stacku a ověříme, že vše běží podle očekávání. Začněme!
Krok 1: Konfigurace serveru s Ubuntu 20.04
Ubuntu 20.04 je operační systém založený na Linuxu. Existuje několik na Linuxu založených serverových operačních systémů, včetně bezplatných a prémiových. Tento průvodce se zaměřuje na Ubuntu 20.04, které je bezplatné a open-source. Tento krok řeší první požadavek v akronymu LEMP stacku, tedy L. Na svém VPS byste měli mít skutečnou instalaci Ubuntu 20.04 na svém VPS, abyste mohli pokračovat v dalších krocích. Můžete postupovat podle našeho návodu na nastavení serveru Ubuntu. Volitelně, pokud chcete tento návod sledovat na svém lokálním počítači, můžete si instalační obraz serveru Ubuntu 20.04 stáhnout přímo z webu Ubuntu. Měli byste nakonfigurovat běžného uživatele bez oprávnění root s právy sudo, protože budeme spouštět několik příkazů, které vyžadují oprávnění sudo.
Krok 2: Instalace a konfigurace serveru Nginx
Webové servery nám umožňují poskytovat obsah, jako jsou webové stránky, návštěvníkům webu. Nginx je populární webový server, který patří mezi pět nejlepších open-source webových serverů preferovaných vývojáři. Tento krok řeší druhý požadavek v LEMP stacku, E pro Nginx. Ubuntu má výchozí repozitář balíčků, ze kterého budeme získávat balíčky pro použití v tomto návodu. Ubuntu je založeno na Debianu, který ke správě balíčků používá apt nebo dpkg. Pro balíčky z výchozího repozitáře budeme používat apt.
Obecným pravidlem je, že před zahájením jakékoli instalace v systému Linux byste měli spustit příkaz pro aktualizaci. Začněte zadáním následujícího příkazu v terminálu:
|
1 |
sudo apt update |
Po aktualizaci můžete nainstalovat Nginx pomocí následujícího příkazu:
|
1 |
sudo apt install nginx |
Po dokončení instalace se Nginx spustí automaticky. Dalším krokem je konfigurace firewallu pro povolení provozu. Ubuntu používá pro konfiguraci firewallů balíček ufw (Uncomplicated Firewall). Po instalaci se Nginx zaregistruje jako služba u ufw. Ubuntu spouští službu Firewall automaticky při startu systému, ale pro jistotu zadejte následující příkaz pro její povolení:
|
1 |
sudo ufw enable |
Chcete-li zobrazit seznam konfigurací aplikací, které ufw povoluje, zadejte následující příkaz:
|
1 |
sudo ufw app list |
Níže je snímek obrazovky, který ukazuje výstup výše uvedeného příkazu:

Jak vidíte, Nginx je již u ufw zaregistrován a má tři profily, jak je vysvětleno níže:
- Nginx Full – otevírá port 80 i 443. Port 80 je pro běžný/nešifrovaný provoz, tj. HTTP. Port 443 je pro provoz šifrovaný pomocí TLS/SSL, tj. https.
- Nginx HTTP – otevírá pouze port 80 – nešifrovaný provoz.
- Nginx HTTPS – otevírá pouze port 443 – provoz šifrovaný pomocí TLS/SSL.
Ačkoli se Nginx automaticky registruje u ufw, do vašeho serveru nebude povolen žádný provoz, dokud tak sami neučiníte. Můžete se rozhodnout povolit všechny nebo jakékoli profily, nicméně je lepší povolit ten nejvíce omezující profil, který stále umožní provoz, který jste pro svůj webový server nakonfigurovali. Vzhledem k tomu, že jsme v tomto návodu nenakonfigurovali SSL, povolíme pouze provoz HTTP na portu 80. Pokud vás to zajímá, máme návod na konfiguraci SSL na serveru Nginx od Let's Encrypt pomocí nástroje Certbot.
Povolme provoz na portu 80 zadáním následujícího příkazu:
|
1 |
sudo ufw allow 'Nginx HTTP' |
Pro ověření, že změna byla úspěšná, zadejte následující příkaz:
|
1 |
sudo ufw status |

Výše uvedený výstup ze spuštění příkazu ukazuje, že provoz HTTP je nyní povolen. Zda server běží, můžete zkontrolovat přístupem na vaši doménu nebo veřejnou IP adresu serveru v prohlížeči. Pokud jste nenakonfigurovali doménové jméno a nejste si jisti veřejnou IP adresou svého serveru, můžete ji najít pomocí curl spuštěním následujícího příkazu:
|
1 |
curl -4 icanhazip.com |
Zkopírujte výstup výše uvedeného příkazu, což je vaše veřejná IP adresa, do adresního řádku prohlížeče. Po načtení stránky uvidíte výchozí úvodní stránku Nginx:

Výše uvedená stránka indikuje, že jste úspěšně nainstalovali Nginx.
Krok 3: Instalace systému pro správu databází MySQL
Správa dat je klíčovou součástí každého dynamického webu. MySQL je systém pro správu databází, který ukládá a spravuje data webu. Tento krok se stará o třetí požadavek v LEMP stacku, M. Pro instalaci MySQL zadejte následující příkaz:
|
1 |
sudo apt install mysql-server |
Po dokončení instalace MySQL ji musíte před použitím nakonfigurovat. Součástí konfigurace je zabezpečení databázového serveru. MySQL se dodává se skriptem, který vás provede zabezpečením a nastavením hesel. Následující příkaz spustí tento skript:
|
1 |
sudo mysql_secure_installation |

Skript se zeptá, zda chcete nastavit komponentu VALIDATE PASSWORD, nebo stisknout libovolné písmeno pro pokračování bez povolení této komponenty.
Komponenta VALIDATE PASSWORD je funkce, která slouží ke kontrole, zda heslo zadané pro konkrétního uživatele na vašem databázovém serveru splňuje určitá kritéria. Můžete ji nakonfigurovat tak, aby kontrolovala věci jako délku, číselné znaky, přítomnost velkých nebo malých písmen atd. Pokud není povolena, můžete si nakonfigurovat jakékoli heslo podle svého výběru. Pokud je však povolena, musíte použít heslo, které odpovídá zadaným kritériím. Její povolení může způsobit problémy s balíčky, které automaticky konfigurují přihlašovací údaje uživatelů MySQL, jako je například balíček phpMyAdmin pro Ubuntu. Zda ji povolit, či nikoli, je osobní volba. Vaše databáze je bezpečná, i když ji nepovolíte, jen se ujistěte, že používáte silná a jedinečná hesla.
Pokud jste pro povolení komponenty stiskli Y, skript vás požádá o výběr úrovně ověřování hesla:

Skript nabízí 3 úrovně ověřování hesla. Úroveň LOW vyžaduje, aby vaše heslo obsahovalo pouze 8 nebo více znaků. Úroveň MEDIUM vyžaduje, aby vaše heslo obsahovalo 8 nebo více znaků, které musí být kombinací velkých písmen, malých písmen a speciálních znaků. Úroveň STRONG vyžaduje komplexní heslo o délce 8 nebo více znaků, které musí být kombinací velkých písmen, malých písmen, speciálních znaků a slov, a nesmí být založeno na běžných slovníkových slovech, jinak se zobrazí chyby. Zvolme úroveň Low, napište 0 a stiskněte enter.
Skript vás vyzve k zadání a opětovnému zadání hesla:

Napište y a stiskněte enter pro přijetí zadaného hesla jako hesla pro uživatele root. Následné výzvy slouží ke zvýšení bezpečnosti serveru MySQL. Začíná se odstraněním výchozích anonymních uživatelů, se kterými se dodává každá instalace MySQL, zakázáním přihlášení uživatele root ze vzdáleného připojení a odstraněním testovacích databází. Poslední výzva vás požádá o opětovné načtení tabulky oprávnění, aby se příkazy projevily. U všech výzev napište y a stiskněte enter:

Počáteční konfigurace zabezpečení je dokončena.
Verzi nainstalovaného MySQL můžete zkontrolovat spuštěním příkazu:
|
1 |
sudo mysql –V |
Zde je verze, kterou používáme v tomto návodu:
![]()
V systémech Ubuntu s verzemi MySQL 5.7 a novějšími je uživatel root nakonfigurován tak, aby se ověřoval pomocí pluginu auth_socket a nikoli pomocí hesla. To zajišťuje vyšší bezpečnost, nicméně může to být problém u externích balíčků, jako je například balíček phpMyAdmin. Pokud dáváte přednost pokračování s použitím pluginu auth_socket, přejděte ke kroku 4.
Pokud se místo toho chcete připojit pomocí hesla, musíte nakonfigurovat metodu ověřování tak, aby používala mysql_native_password.
Spusťte příkazový řádek MySQL zadáním následujícího příkazu:
|
1 |
sudo mysql |
MySQL se dodává s několika výchozími databázemi. Seznam výchozích databází si můžete zobrazit zadáním následujícího dotazu do terminálu:
|
1 |
show databases; |

Databáze s názvem mysql ukládá několik konfigurací souvisejících s MySQL. Tato databáze obsahuje tabulku s názvem users, která obsahuje podrobnosti o uživatelích a metodu ověřování pro každého z nich. Můžeme použít SQL dotazy k načtení, změně a odstranění informací z tabulky. Zadejte do terminálu následující dotaz, abyste získali podrobnosti o tom, jakou metodu ověřování jednotliví uživatelé používají:
|
1 |
SELECT user, authentication_string, plugin, host FROM mysql.user; |

Výše uvedený výstup ukazuje, že uživatel root se ve skutečnosti ověřuje pomocí pluginu auth_socket. Chcete-li změnit metodu ověřování pro uživatele root, zadejte do terminálu následující příkaz. Nezapomeňte jej změnit tak, aby odpovídal síle hesla pro střední úroveň, kterou jsme nastavili v předchozím kroku, jinak dojde k chybě:
|
1 |
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypassword'; |
Jakmile se dotaz úspěšně provede, spusťte příkaz flush privileges, aby se změny projevily okamžitě:
|
1 |
FLUSH PRIVILEGES; |
Znovu spusťte níže uvedený příkaz select a zkontrolujte, zda se změny projevily:
|
1 |
SELECT user,authentication_string,plugin,host FROM mysql.user; |

Z výstupu vyplývá, že uživatel root se nyní bude ověřovat pomocí mysql_native_password. Příkazový řádek mysql můžete ukončit zadáním exit a stisknutím klávesy enter.
Můžete se zkusit přihlásit pomocí nastaveného hesla zadáním následujícího příkazu:
|
1 |
mysql -u root –p |
Výzva vás požádá o zadání hesla. Pokud se shoduje, zobrazí se příkazový řádek MySQL. Úspěšně jste nastavili server s MySQL. Dále ukončete příkazový řádek MySQL.
Krok 4: Instalace PHP a nastavení Nginx pro použití PHP procesoru
PHP je zkratka pro PHP: Hypertext Preprocessor. Je to široce používaný open-source skriptovací jazyk na straně serveru pro webové stránky a webové aplikace. PHP se stará o čtvrtý požadavek v LEMP stacku. PHP pomáhá při generování dynamického obsahu na webových stránkách. Může být použito jako prostředník mezi vašimi webovými stránkami a databázovým systémem. Čte data z databáze a prezentuje je návštěvníkům vašeho webu. Dále může vkládat, aktualizovat a mazat data z databáze.
Nginx postrádá nativní pluginy pro zpracování PHP jako jiné webové servery, takže musíte nainstalovat php-fpm, aby se požadavky z Nginx předávaly k vyřízení do PHP. Nejprve přidejte repozitář Ubuntu universe, který obsahuje bezplatný a open-source software spravovaný komunitou Ubuntu. Zadejte do terminálu následující příkaz:
|
1 |
sudo add-apt-repository universe |
Poté nainstalujte balíček php-fpm společně s pomocným balíčkem php-mysql, který umožní PHP komunikovat s MySQL, pomocí následujícího příkazu:
|
1 |
sudo apt install php-fpm php-mysql |
V době psaní této příručky je verze PHP nainstalovaná výše uvedeným příkazem 7.2.24. Proto se nainstaluje balíček php-fpm7.2. Mějte to na paměti při aktualizaci bloků serveru a ujistěte se, že zadáváte správnou verzi, jinak se vaše stránka nenačte.
Verzi PHP můžete zkontrolovat zadáním následujícího příkazu:
|
1 |
php -v |

V tomto okamžiku jsou již nainstalovány všechny součásti balíku LEMP. Dalším krokem je konfigurace Nginx tak, aby směroval požadavky na PHP procesor. V Nginx se konfigurace provádí v rámci bloků serveru. Bloky serveru jsou ekvivalentem virtuálních hostitelů (virtual hosts) v Apache. Další informace naleznete v našem návodu na téma bloků serveru v Nginx.
Pro účely tohoto návodu vytvoříme blok serveru pro doménu test.com se stejným názvem, přičemž si můžete zvolit libovolný název podle svého uvážení. Bloky serveru se nacházejí v adresáři /etc/nginx/sites-available/. K vytvoření souboru bloku serveru použijte nano zadáním následujícího příkazu:
|
1 |
sudo nano /etc/nginx/sites-available/test.com |
Do souboru zapište následující 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; } } |
Zde je stručný popis toho, co jednotlivé direktivy dělají:
- listen – definuje port, na kterém bude Nginx naslouchat. Port 80 je výchozí port, nicméně pokud byste měli nastavené SSL, zadali byste 443.
- root – obsahuje adresář, ve kterém budou uloženy soubory webu.
- index – instruuje Nginx, aby při požadavku upřednostnil poskytování souborů index.php, pokud jsou k dispozici.
- server_name – definuje název bloku serveru, obsahuje veřejnou IP adresu nebo doménové jméno vašeho serveru.
- location/ – první blok location obsahuje direktivu try_files. Kontroluje existenci souborů odpovídajících požadavku URI, a pokud nejsou nalezeny, vrátí chybu 404.
- location ~ \.php$ – tato direktiva zpracovává PHP tím, že směruje požadavky Nginx přes soubor fastcgi-php.conf a soubor php7.2-fpm.sock, který definuje, jaký soket se má přidružit k php-fpm. Tento příkaz kontroluje stav php-fpm, přičemž specifikujeme verzi 7.2, kterou máme nainstalovanou. Ujistěte se, že provedete kontrolu pro verzi, kterou máte vy:
|
1 |
sudo service php7.2-fpm status |
- location ~ /\.ht – tato direktiva zpracovává soubory .htaccess, které Nginx nezpracovává. Direktiva deny all zajišťuje, že návštěvníkům nebude poskytnut žádný soubor htaccess.
Po přidání skriptu do souboru test.com stiskněte Ctrl + O a poté stisknutím klávesy Enter soubor uložte. Stisknutím Ctrl + X editor zavřete.
Poté musíte blok serveru povolit zadáním následujícího příkazu, který vytvoří symbolický odkaz do adresáře /etc/nginx/sites-enabled:
|
1 |
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/ |
Poté zrušte propojení výchozího bloku serveru ze složky sites-enabled zadáním následujícího příkazu:
|
1 |
sudo unlink /etc/nginx/sites-enabled/default |
Otestujte svou novou konfiguraci zadáním následujícího příkazu:
|
1 |
sudo nginx -t |
Pokud je syntaxe v pořádku, načtěte znovu Nginx pomocí následujícího příkazu:
|
1 |
sudo systemctl reload nginx |
V tomto kroku byl váš LEMP stack nainstalován a nakonfigurován. V dalším kroku vytvoříme testovací soubor, abychom se ujistili, že se různé komponenty správně propojují.
Krok 5: Vytvoření PHP souboru pro otestování vašeho LEMP stacku
V tomto kroku vytvoříme soubor .php a spustíme jej na serveru Nginx, abychom ověřili, zda běží správně. K ověření dostupných balíčků PHP použijeme globální funkci phpinfo(). Zadáním následujícího příkazu otevřete soubor .php v editoru nano:
|
1 |
sudo nano /var/www/html/test.php |
V editoru nano zadejte následující fragment kódu:
|
1 |
<?php phpinfo(); |
Uložte a zavřete soubor. Chcete-li navštívit stránku, kterou jste právě vytvořili, ve svém prohlížeči, najděte svou doménu nebo IP adresu a přejděte na ni následovně:
|
1 |
http://your_server_domain_or_IP/test.php |
Měli byste vidět stránku s informacemi o PHP:

Výše uvedená stránka ukazuje, že jste úspěšně nastavili Nginx. Vzhledem k tomu, že soubor, který jste vytvořili pro testování, obsahuje podrobné informace o vašem serveru, měli byste jej nezapomenout odstranit. Pro odstranění souboru zadejte následující příkaz:
|
1 |
sudo rm /var/www/html/test.php |
Pokud budete v budoucnu potřebovat otestovat své konfigurace, můžete soubor kdykoli znovu vytvořit.
Závěr
V tomto návodu jste nakonfigurovali LEMP stack na svém Ubuntu 20.04, což je jeden z nejvýkonnějších dostupných stacků pro vývoj webových aplikací. Odtud byste měli být schopni hostovat téměř jakýkoli web, webové aplikace nebo serverovou logiku pro vaši mobilní aplikaci. Chcete-li zajistit, aby váš web poskytoval obsah prostřednictvím zabezpečeného připojení SSL, doporučujeme vám podívat se na náš návod na konfiguraci SSL certifikátů na serveru Nginx.
Přejeme příjemnou práci s počítačem!
Komentáře
Zatím žádné komentáře. Buďte první.