Blog / Baza Wiedzy

Jak skonfigurować stos LEMP (Linux, Nginx, MariaDB, PHP) na Ubuntu i Debian

4 min czytania
VoxiHost Team
Jak skonfigurować stos LEMP (Linux, Nginx, MariaDB, PHP) na Ubuntu i Debian

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

Uruchamianie sudo apt install nginx -y na Ubuntu lub Debian aby rozpocząć instalację stosu LEMP

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:

Uruchamianie sudo apt install mariadb-server mariadb-client -y na Ubuntu lub Debian aby zainstalować MariaDB jako część stosu LEMP

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:

Uruchamianie sudo mysql_secure_installation na Ubuntu aby zabezpieczyć instalację MariaDB usuwając użytkowników anonimowych, wyłączając zdalne logowanie root i przeładowując tabele uprawnień

sudo mysql_secure_installation

Zostaniesz poproszony o serię pytań aby skonfigurować profil bezpieczeństwa:

  1. Wtyczka Validate Password: Wpisz y jeśli chcesz aby MariaDB aktywnie blokowała słabe hasła, lub n aby pominąć.
  2. Usuń użytkowników anonimowych: Wpisz y.
  3. Zabroń logowanie root zdalnie: Wpisz y (root powinien mieć dostęp do bazy danych tylko z wewnątrz serwera).
  4. Usuń bazę danych testową: Wpisz y.
  5. 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:

Uruchamianie sudo apt install php-fpm php-mysql -y na Ubuntu lub Debian aby zainstalować PHP8 z FPM i rozszerzenie MySQL jako część stosu LEMP

sudo apt install php-fpm php-mysql -y

Uwaga: W zależności od dokładnej wersji Debiana/Ubuntu, apt automatycznie zainstaluje poprawną wersję PHP (np., php8.1-fpm lub php8.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:

Tworzenie nowego pliku konfiguracyjnego bloku serwera Nginx w sites-available dla niestandardowej domeny w konfiguracji stosu LEMP na Ubuntu

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_pass pasuje do wersji PHP którą zainstalowałeś w Kroku 3! Jeśli zainstalowałeś php8.1-fpm, użyj php8.1-fpm.sock.

Zapisz plik i wyjdź.

Przetestuj konfigurację Nginx pod kątem błędów składni przed włączeniem strony:

Uruchamianie sudo nginx -t aby przetestować konfigurację bloku serwera Nginx pod kątem błędów składni przed włączeniem strony LEMP na Ubuntu

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:

Tworzenie pliku testowego info.php w /var/www/html za pomocą edytora nano w celu zweryfikowania komunikacji między Nginx a PHP-FPM w konfiguracji stosu LEMP

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

Strona phpinfo() wyświetlająca się w przeglądarce potwierdzająca że Nginx i PHP-FPM komunikują się poprawnie w konfiguracji stosu LEMP na Ubuntu

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.php ujawnia 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.

Języki