Stos LEMP to nowoczesny, wysokowydajnościowy fundament dla milionów stron internetowych na całym świecie. Jest to akronim reprezentujący cztery krytyczne kawałki oprogramowania wymagane do hostowania dynamicznych, opartych na bazie danych aplikacji (jak WordPress czy Laravel).
LEMP oznacza cztery komponenty:
- Linux: System operacyjny (Ubuntu lub Debian).
- ENginx (wymawiane Engine-X): Błyskawiczny szybki serwer WWW.
- MariaDB: Społecznościowy, wysoko zoptymalizowany fork MySQL, który jest standardem na nowoczesnych dystrybucjach Linuksa.
- PHP: Język skryptowy po stronie serwera obsługujący logikę backendową.
W porównaniu do starszego stosu LAMP (Apache), LEMP jest wysoko faworyzowany w środowiskach obsługujących duży, współbieżny ruch dzięki asynchronicznej architekturze Nginx.
Krok 1: Zainstaluj Nginx (Serwer WWW)
Najpierw zaktualizuj swój lokalny indeks pakietów aby zapewnić pobranie najnowszych poprawek bezpieczeństwa.
sudo apt update
sudo apt upgrade -y
Teraz zainstaluj serwer WWW Nginx (pakiet nosi się nginx na systemach Debian/Ubuntu):

sudo apt install nginx -y
Jeśli śledziłeś nasz Przewodnik Konfiguracji Zapory UFW, musisz zezwolić na ruch Nginx przez swoją zaporę. Otwórz zarówno HTTP (Port 80) jak i HTTPS (Port 443):
sudo ufw allow 'Nginx Full'
Możesz zweryfikować że Nginx działa wpisując adres IP swojego serwera do ulubionej przeglądarki (http://your_server_ip). Powinieneś zobaczyć domyślną stronę "Witaj w nginx!".
Krok 2: Zainstaluj MariaDB (Baza danych)
Teraz gdy masz serwer WWW, potrzebujesz systemu bazy danych do przechowywania i zarządzania danymi aplikacji. MariaDB to wysoko zoptymalizowany, w pełni opensource'owy fork MySQL, który jest standardem na większości nowoczesnych dystrybucji Linuksa.
Zainstaluj serwer MariaDB:

sudo apt install mariadb-server mariadb-client -y
Po zakończeniu instalacji, baza danych działa ale jest całkowicie niezabezpieczona. Musisz ją zablokować używając wbudowany skrypt bezpieczeństwa:

sudo mysql_secure_installation
Zostaniesz poproszony o serię pytań aby skonfigurować profil bezpieczeństwa:
- Wtyczka Validate Password: Wpisz
yjeśli chcesz aby MariaDB aktywnie blokowała słabe hasła, lubnaby pominąć. - Usuń użytkowników anonimowych: Wpisz
y. - Zabroń logowanie root zdalnie: Wpisz
y(root powinien mieć dostęp do bazy danych tylko z wewnątrz serwera). - Usuń bazę danych testową: Wpisz
y. - Przeładuj tabele uprawnień: Wpisz
y.
Twoja baza danych jest teraz bezpieczna.
Krok 3: Zainstaluj PHP (Język przetwarzania)
Nginx jest niesamowicie szybki w serwowaniu statycznych plików (HTML, obrazy, CSS), ale nie może przetwarzać kod dynamiczny PHP w sposób natywny jak Apache. Aby to zrobić, potrzebujemy zainstalować PHP-FPM (FastCGI Process Manager) wraz z rozszerzeniem MySQL.
Zainstaluj PHP8 z FPM i rozszerzeniem MySQL:

sudo apt install php-fpm php-mysql -y
Uwaga: W zależności od dokładnej wersji Debiana/Ubuntu,
aptautomatycznie zainstaluje poprawną wersję PHP (np.,php8.1-fpmlubphp8.3-fpm). Zapamiętaj jaką wersję instalujesz, ponieważ będziesz jej potrzebować w następnym kroku.
Krok 4: Skonfiguruj Nginx aby używał PHP
Musimy jawnie powiedzieć Nginx jak obsługiwać pliki PHP. Zrobimy to edytując domyślny blok serwera Nginx.
Otwórz domyślną konfigurację bloku serwera w edytorze nano:

sudo nano /etc/nginx/sites-available/default
Znajdź dyrektywę index i dodaj index.php na samym początku listy:
# Dodaj index.php przed index.html
index index.php index.html index.htm index.nginx-debian.html;
Następnie przewiń w dół do sekcji location ~ \.php$ i odkomentuj (usuń #) istniejące linie tak aby wyglądało tak:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
Ważne: Upewnij się że ścieżka
fastcgi_passpasuje do wersji PHP którą zainstalowałeś w Kroku 3! Jeśli zainstalowałeśphp8.1-fpm, użyjphp8.1-fpm.sock.
Zapisz plik i wyjdź.
Przetestuj konfigurację Nginx pod kątem błędów składni przed włączeniem strony:

sudo nginx -t
Jeśli zgłasza "syntax is ok", przeładuj Nginx aby zastosować zmiany:
sudo systemctl reload nginx
Krok 5: Przetestuj stos LEMP
Aby udowodnić że Nginx pomyślnie przekazuje pliki PHP do PHP-FPM, stworzymy klasyczny skrypt informacyjny PHP.
Utwórz nowy plik w głównym katalogu WWW:

sudo nano /var/www/html/info.php
Wklej standardową funkcję inicjalizacyjną PHP:
<?php
phpinfo();
?>
Zapisz plik i wyjdź.
Otwórz przeglądarkę i nawiguj do: http://your_server_ip/info.php

Powinieneś zobaczyć ogromną, szczegółową tabelę fioletowo-szarą opisującą dokładną konfigurację twojego serwera. To dowód że twój kompletny stos LEMP działa idealnie!
Krytyczne ostrzeżenie bezpieczeństwa: Strona
info.phpujawnia niezwykle szczegółowe informacje o konfiguracji twojego serwera. Pozostawienie tego pliku publicznie jest masowym ryzykiem bezpieczeństwa. Gdy potwierdzisz że wszystko działa, usuń plik natychmiast:
sudo rm /var/www/html/info.php
Gratulacje! Pomyślnie zbudowałeś sprawdzony, przetestowany i solidny fundament do hostowania dynamicznych aplikacji na Linuksie. Czy masz ciężki sklep e-commerce, forum czy blog o dużym ruchu gotowy do uruchomienia? Połącz swój nowy stos LEMP z jednym z naszych środowisk Premium VPS, zainstaluj bezpłatne SSL przez Let's Encrypt i wdróż swoją ostateczną aplikację do świata.