Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Administracja Linux System operacyjny

Jak zainstalować stos Linux, Nginx, MySQL, PHP (LEMP) na Ubuntu: Kompletny przewodnik

Stos LEMP — akronim od Linux, Nginx, MySQL i PHP — to jedna z najczęściej stosowanych konfiguracji serwerów internetowych do zasilania dynamicznych stron internetowych i wysokowydajnych aplikacji webowych. Łącząc solidną stabilność Linux, błyskawiczną szybkość Nginx, solidne możliwości zarządzania danymi MySQL i wszechstronność PHP, stos LEMP zapewnia potężne, skalowalne i efektywne pod względem zasobów środowisko hostingowe.

Niezależnie od tego, czy wdrażasz osobisty blog, stronę biznesową czy złożoną aplikację korporacyjną, prawidłowo skonfigurowany stos LEMP zapewnia lepszą skalowalność, szybsze czasy ładowania stron i efektywne zarządzanie pamięcią — szczególnie w warunkach dużego ruchu.

Jeśli potrzebujesz niezawodnej podstawy do uruchomienia tego stosu, VPS Hosting AlexHost zapewnia wysokowydajne serwery wirtualne oparte na Linux z pełnym dostępem root, dając Ci pełną kontrolę nad każdym komponentem Twojego środowiska LEMP. Połącz to z Certyfikatem SSL, aby zabezpieczyć swoją aplikację od pierwszego dnia.

W tym kompleksowym przewodniku przeprowadzimy Cię przez każdy krok instalacji i konfiguracji pełnego stosu LEMP na serwerze Ubuntu — od przygotowania systemu do testowania Twojego aktywnego środowiska PHP.

1. Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz następujące elementy:

  • Serwer z systemem Ubuntu 18.04, 20.04 lub 22.04 LTS
  • Konto użytkownika z uprawnieniami sudo
  • Dostęp SSH lub bezpośredni dostęp do terminala serwera
  • Zarejestrowaną nazwę domeny (opcjonalnie, ale zalecane dla wdrożeń produkcyjnych — możesz ją zarejestrować za pośrednictwem Rejestracji Domen AlexHost)

> Wskazówka Pro: Dla czystego, izolowanego środowiska z gwarantowanymi zasobami, plan Hosting VPS jest idealnym punktem wyjścia dla każdego wdrożenia LEMP.

2. Aktualizuj swój system

Przed zainstalowaniem jakichkolwiek pakietów, kluczowe jest odświeżenie indeksu pakietów i zastosowanie wszystkich oczekujących aktualizacji. Zapewnia to pracę z najnowszymi, najbezpieczniejszymi wersjami całego oprogramowania.

Otwórz terminal i uruchom:

sudo apt update && sudo apt upgrade -y

Ta komenda aktualizuje lokalną bazę danych pakietów i uaktualnia wszystkie zainstalowane pakiety do ich najnowszych dostępnych wersji.

3. Zainstaluj Nginx

Nginx (wymawiane “engine-x”) to wysokowydajny, oparty na zdarzeniach serwer WWW i odwrotny proxy. W przeciwieństwie do Apache, Nginx obsługuje jednoczesne połączenia przy minimalnym zużyciu pamięci, co czyni go preferowanym wyborem dla środowisk o wysokim ruchu.

Krok 1: Zainstaluj Nginx

sudo apt install nginx -y

Krok 2: Uruchom i włącz Nginx

Po instalacji uruchom usługę Nginx i skonfiguruj ją do automatycznego uruchamiania przy starcie systemu:

sudo systemctl start nginx
sudo systemctl enable nginx

Krok 3: Sprawdź, czy Nginx działa

Sprawdź status usługi, aby potwierdzić, że Nginx jest aktywny:

sudo systemctl status nginx

Powinieneś zobaczyć dane wyjściowe wskazujące, że usługa jest aktywna (uruchomiona). Możesz również otworzyć przeglądarkę internetową i przejść do adresu IP serwera:

http://your_server_ip

Jeśli Nginx działa prawidłowo, zostaniesz powitany domyślną stroną “Welcome to nginx!”.

Krok 4: Skonfiguruj zaporę (jeśli dotyczy)

Jeśli masz włączoną zaporę UFW (Uncomplicated Firewall), zezwól na ruch HTTP i HTTPS:

sudo ufw allow 'Nginx Full'
sudo ufw status

4. Zainstaluj MySQL

MySQL to potężny, otwartoźródłowy relacyjny system zarządzania bazami danych (RDBMS), który stanowi podstawę danych dla większości dynamicznych aplikacji internetowych, w tym WordPress, Joomla i niestandardowych aplikacji PHP.

Krok 1: Zainstaluj serwer MySQL

sudo apt install mysql-server -y

Krok 2: Zabezpiecz instalację MySQL

Po zainstalowaniu uruchom wbudowany skrypt wzmacniania bezpieczeństwa. Ten skrypt pomaga ustawić silne hasło root, usunąć użytkowników anonimowych, wyłączyć zdalne logowanie root i usunąć testową bazę danych:

sudo mysql_secure_installation

Zostaniesz poproszony o odpowiedź na serię pytań. Zalecane odpowiedzi dla serwera produkcyjnego to:

PytanieZalecana odpowiedź
Skonfigurować komponent VALIDATE PASSWORD?Tak
Poziom polityki walidacji hasła2 (STRONG)
Usunąć użytkowników anonimowych?Tak
Zabronić zdalnemu logowaniu root?Tak
Usunąć testową bazę danych?Tak
Przeładować tabele uprawnień?Tak

Krok 3: Sprawdź, czy MySQL jest uruchomiony

sudo systemctl status mysql

Krok 4: Zaloguj się do MySQL (opcjonalna weryfikacja)

sudo mysql -u root -p

Wpisz hasło root po wyświetleniu monitu. Wpisz exit aby opuścić powłokę MySQL.

5. Zainstaluj PHP

PHP (Hypertext Preprocessor) to język skryptowy po stronie serwera, który przetwarza zawartość dynamiczną i komunikuje się z MySQL, aby serwować strony internetowe oparte na danych. Podczas korzystania z Nginx, PHP jest obsługiwany przez PHP-FPM (FastCGI Process Manager), który przetwarza żądania PHP niezależnie od serwera internetowego w celu poprawy wydajności.

Krok 1: Zainstaluj PHP-FPM i rozszerzenie MySQL

sudo apt install php-fpm php-mysql -y

Możesz również zainstalować powszechnie używane rozszerzenia PHP dla szerszej kompatybilności aplikacji:

sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -y

Krok 2: Skonfiguruj PHP-FPM dla bezpieczeństwa

Otwórz plik konfiguracyjny PHP-FPM. Zastąp 8.1 zainstalowaną wersją PHP (sprawdź za pomocą php -v):

sudo nano /etc/php/8.1/fpm/php.ini

Zlokalizuj dyrektywę cgi.fix_pathinfo i ustaw ją na 0 aby zapobiec krytycznej luce w zabezpieczeniach:

cgi.fix_pathinfo=0

> Dlaczego to jest ważne: Jeśli cgi.fix_pathinfo jest ustawione na 1, PHP będzie próbować wykonać najbliższy plik, który może znaleźć, jeśli żądany plik PHP nie istnieje. To zachowanie może być wykorzystane przez atakujących do wykonania dowolnego kodu.

Zapisz i zamknij plik (Ctrl+X, następnie Y, następnie Enter).

Krok 3: Uruchom ponownie PHP-FPM

Zastosuj zmiany konfiguracji, uruchamiając ponownie usługę PHP-FPM:

sudo systemctl restart php8.1-fpm

6. Konfiguracja Nginx do przetwarzania PHP

Domyślnie Nginx nie wie, jak obsługiwać pliki PHP. Musisz utworzyć blok serwera (odpowiednik wirtualnego hosta Apache w Nginx), który instruuje Nginx, aby przekazywał żądania PHP do PHP-FPM do przetworzenia.

Krok 1: Utwórz katalog główny witryny

Utwórz katalog, w którym będą przechowywane pliki Twojej witryny:

sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domain

Zastąp your_domain swoją rzeczywistą nazwą domeny lub opisową nazwą projektu.

Krok 2: Utwórz nowy blok serwera Nginx

Utwórz nowy plik konfiguracyjny Nginx dla Twojej witryny:

sudo nano /etc/nginx/sites-available/your_domain

Dodaj następujący blok konfiguracyjny. Uważnie przeczytaj komentarze wbudowane — wyjaśniają, co robi każda dyrektywa:

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;  # Replace with your domain or server IP

    root /var/www/your_domain;                # Document root — where your files live
    index index.php index.html index.htm;     # Default files to serve

    # Handle all requests; return 404 if file not found
    location / {
        try_files $uri $uri/ =404;
    }

    # Pass PHP scripts to PHP-FPM for processing
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # Adjust PHP version as needed
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Deny access to hidden files (e.g., .htaccess)
    location ~ /.ht {
        deny all;
    }
}

> Ważne: Zastąp your_domain swoją rzeczywistą nazwą domeny i dostosuj php8.1-fpm.sock do zainstalowanej wersji PHP.

Krok 3: Włącz blok serwera

Utwórz dowiązanie symboliczne z sites-available do sites-enabled w celu aktywacji konfiguracji:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Aby uniknąć potencjalnego problemu z pamięcią hash bucket, dobrą praktyką jest otwarcie głównej konfiguracji Nginx i upewnienie się, że dyrektywa server_names_hash_bucket_size jest odkomentowana:

sudo nano /etc/nginx/nginx.conf

Znajdź i odkomentuj:

server_names_hash_bucket_size 64;

Krok 4: Przetestuj konfigurację Nginx

Przed ponownym uruchomieniem Nginx zawsze przetestuj konfigurację pod kątem błędów składni:

sudo nginx -t

Jeśli dane wyjściowe pokazują:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Możesz przystąpić dalej.

Krok 5: Uruchom ponownie Nginx

Zastosuj wszystkie zmiany, uruchamiając ponownie usługę Nginx:

sudo systemctl restart nginx

7. Utwórz i przetestuj plik PHP Info

Aby potwierdzić, że Nginx prawidłowo przekazuje żądania PHP do PHP-FPM, utwórz prosty plik testowy PHP w katalogu głównym dokumentów.

Krok 1: Utwórz plik PHP Info

sudo nano /var/www/your_domain/info.php

Dodaj następującą zawartość:

<?php
phpinfo();
?>

Zapisz i zamknij plik.

Krok 2: Uzyskaj dostęp do strony PHP Info

Otwórz przeglądarkę internetową i przejdź do:

http://your_domain/info.php

Lub, jeśli nie skonfigurowałeś jeszcze domeny:

http://your_server_ip/info.php

Powinieneś zobaczyć stronę informacji PHP — szczegółowy przegląd instalacji PHP, załadowanych modułów, wartości konfiguracyjnych i zmiennych środowiskowych. To potwierdza, że wszystkie trzy komponenty (Nginx, PHP-FPM i MySQL) pracują razem prawidłowo.

Krok 3: Usuń plik PHP Info (Krytyczny krok bezpieczeństwa)

Po potwierdzeniu, że wszystko działa, usuń plik info.php natychmiast. Ten plik ujawnia wrażliwe szczegóły konfiguracji serwera, które mogą być wykorzystane przez złośliwych aktorów:

sudo rm /var/www/your_domain/info.php

8. Następne kroki: Wzmocnij i zoptymalizuj stos LEMP

Mając stos LEMP uruchomiony i działający, rozważ następujące dodatkowe kroki, aby przygotować serwer do produkcji:

Włącz HTTPS za pomocą bezpłatnego certyfikatu SSL

Zabezpiecz swoją witrynę szyfrowaniem TLS/SSL przy użyciu Certbot i Let’s Encrypt:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domain

Alternatywnie, zapoznaj się z Certyfikatami SSL AlexHost dla premium, komercyjnie zweryfikowanych certyfikatów, które zapewniają wyższe poziomy zaufania dla aplikacji biznesowych i e-commerce.

Zoptymalizuj wydajność Nginx

Dodaj następujące dyrektywy do konfiguracji Nginx, aby poprawić wydajność:

# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;

# Enable browser caching for static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

Skonfiguruj dedykowanego użytkownika MySQL

Unikaj używania konta root MySQL dla swoich aplikacji. Utwórz dedykowanego użytkownika bazy danych z ograniczonymi uprawnieniami:

CREATE DATABASE your_app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;

Rozważ panel sterowania dla łatwiejszego zarządzania

Jeśli wolisz graficzny interfejs do zarządzania stosem LEMP, hostami wirtualnymi Nginx, bazami danych i kontami e-mail, rozważ wdrożenie panelu sterowania. AlexHost oferuje VPS z cPanel i szereg innych Paneli sterowania VPS, aby uprościć administrację serwerem bez poświęcania wydajności lub kontroli.

9. Podsumowanie

Pomyślnie zainstalowałeś i skonfigurowałeś kompletny stos LEMP (Linux, Nginx, MySQL, PHP) na swoim serwerze Ubuntu. Oto krótkie podsumowanie tego, co osiągnąłeś:

  • Nginx zainstalowany, uruchomiony i skonfigurowany jako serwer WWW
  • MySQL zainstalowany i zabezpieczony za pomocą skryptu hartowania
  • PHP-FPM zainstalowany z konfiguracją skoncentrowaną na bezpieczeństwie
  • Blok serwera Nginx skonfigurowany do kierowania żądań PHP do PHP-FPM
  • Przetwarzanie PHP zweryfikowane za pośrednictwem strony testowej phpinfo()

Ten stos zapewnia gotową do produkcji podstawę do hostowania praktycznie dowolnej aplikacji opartej na PHP — od WordPress i Laravel po platformy zbudowane na zamówienie. Kombinacja architektury sterowanej zdarzeniami Nginx i zarządzania procesami PHP-FPM sprawia, że jest szczególnie dobrze dostosowany do obciążeń o wysokiej współbieżności.

Aby uzyskać najlepszą wydajność i niezawodność, hostuj swój stos LEMP w dedykowanym środowisku Linux. Plany VPS Hosting AlexHost oferują magazyn wspierany przez SSD, gwarantowaną RAM, pełny dostęp root i wsparcie techniczne 24/7 — wszystko, czego potrzebujesz do uruchomienia szybkiej, bezpiecznej i skalowalnej aplikacji internetowej.

Pamiętaj, aby regularnie aktualizować wszystkie komponenty, monitorować dzienniki serwera i wdrażać zaporę sieciową oraz system wykrywania włamań w ramach bieżącej postawy bezpieczeństwa.