Wstęp
Uruchomienie wydajnego serwera WWW wymaga stosu technologicznego, który łączy szybkość z oszczędnością zasobów. Choć serwer Apache obsługuje ruch w sieci od dziesięcioleci, to połączenie Nginx z PHP-FPM stało się standardem w przypadku nowoczesnych aplikacji o dużym natężeniu ruchu. Dzięki przeniesieniu przetwarzania PHP do dedykowanego menedżera procesów FastCGI, zyskujesz znaczną poprawę w zakresie zużycia pamięci oraz obsługi żądań w porównaniu do starszych metod wykonywania skryptów.
Ten przewodnik skupia się na konfiguracji stabilnego, gotowego do pracy produkcyjnej środowiska na systemie Ubuntu 26.04 LTS. Przeprowadzimy proces instalacji Nginx oraz domyślnej wersji PHP 8.5 (PHP-FPM) dostępnej w systemie, dbając o to, aby poprawnie komunikowały się ze sobą za pośrednictwem gniazd Unix. Taka konfiguracja jest idealna dla programistów hostujących dynamiczne strony na serwerach VoxiHost Premium VPS, gdzie redukcja opóźnień ma kluczowe znaczenie.
Stawiamy na czystą i minimalistyczną instalację. Unikamy rozbudowanych pakietów na rzecz oficjalnych repozytoriów, które gwarantują, że aktualizacje bezpieczeństwa są dostępne na wyciągnięcie ręki poprzez polecenie apt upgrade. Pod koniec tego poradnika będziesz dysponować funkcjonalnym serwerem WWW, zdolnym do obsługi dynamicznych treści PHP, wraz z niezbędnymi poprawkami konfiguracji pozwalającymi uniknąć typowych wąskich gardeł. Niezależnie od tego, czy migrujesz istniejącą aplikację, czy uruchamiasz nowy projekt, ta konfiguracja stanowi solidny fundament dla Twojej infrastruktury.
Wymagania wstępne
Przed rozpoczęciem instalacji należy upewnić się, że serwer spełnia podstawowe wymagania dla stabilnego środowiska produkcyjnego. Zalecamy posiadanie co najmniej 1 GB pamięci RAM oraz przynajmniej jednego dedykowanego rdzenia procesora, aby obsłużyć narzut serwera Nginx oraz procesów roboczych PHP-FPM bez spadku wydajności. Niniejszy przewodnik zakłada, że korzystasz ze świeżej instalacji systemu Ubuntu 26.04 LTS.
Konieczne jest posiadanie dostępu do konta root lub użytkownika z uprawnieniami sudo w celu wykonywania poleceń administracyjnych. Jeśli korzystasz z usługi VoxiHost Budget VPS, upewnij się, że zapora sieciowa jest poprawnie skonfigurowana, aby zezwalać na ruch przychodzący na portach 80 oraz 443. Jeśli zapora nie została jeszcze skonfigurowana, zapoznaj się z naszym przewodnikiem dotyczącym konfiguracji UFW, aby zapobiec nieautoryzowanemu dostępowi do portów zarządzania.
Należy zweryfikować, czy lista pakietów jest aktualna, a system w pełni zaktualizowany, aby uniknąć konfliktów zależności podczas procesu instalacji. Mimo że w kolejnych krokach zainstalujemy określone pakiety, posiadanie czystego i zaktualizowanego środowiska pozwala zapobiec typowym błędom niezgodności bibliotek. Upewnij się, że jesteś zalogowany na serwerze przez SSH oraz masz przygotowaną domenę lub adres IP serwera w celu przetestowania finalnej konfiguracji.
Krok 1: Instalacja Nginx i PHP-FPM
Aby rozpocząć konfigurację, należy pobrać najnowsze metadane pakietów z oficjalnych repozytoriów i zainstalować serwer WWW Nginx wraz z interpreterem PHP-FPM. Zainstalujemy domyślny pakiet php-fpm, który automatycznie zainstaluje PHP 8.5 na systemie Ubuntu 26.04 LTS (lub inną wersję, jeśli korzystasz z innej wersji systemu Ubuntu).
Uruchom poniższe polecenia, aby zainicjować instalację:
## Aktualizacja lokalnego indeksu pakietów w celu pobrania najnowszych wersji
sudo apt update
## Instalacja Nginx oraz domyślnego menedżera procesów PHP FastCGI
sudo apt install nginx php-fpm

Po zakończeniu instalacji warto sprawdzić, która wersja PHP została zainstalowana jako domyślna w systemie. Określa to dokładną nazwę usługi oraz ścieżkę do gniazda, których użyjesz w kolejnych krokach:
## Sprawdzenie zainstalowanej wersji PHP
php -v
Przykładowo, jeśli dane wyjściowe wskazują na PHP 8.5.x, nazwa Twojej usługi PHP-FPM to php8.5-fpm, a plik gniazda to php8.5-fpm.sock (w przypadku Ubuntu 24.04 LTS będzie to odpowiednio PHP 8.3.x z usługą php8.3-fpm i gniazdem php8.3-fpm.sock). Zapamiętaj tę wersję — użyjesz jej w konfiguracji Nginx w kolejnym kroku.
Krok 2: Konfiguracja bloku serwera Nginx
Domyślnie Nginx nie jest skonfigurowany do przetwarzania plików PHP. Należy zmodyfikować domyślny blok serwera, aby przekazywał żądania dotyczące plików .php do gniazda (socket) PHP-FPM. Otwórz plik konfiguracyjny za pomocą edytora tekstu:
## Otwórz domyślny plik konfiguracyjny witryny do edycji
sudo nano /etc/nginx/sites-available/default
Znajdź blok location / i upewnij się, że dyrektywa index zawiera index.php. Następnie odkomentuj lub dodaj blok location ~ \.php$ { ... }, aby obsłużyć żądania PHP. Twoja konfiguracja powinna przypominać poniższą strukturę:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
# Przekaż skrypty PHP do gniazda PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.x-fpm.sock;
}
}
Sprawdź dokładnie dyrektywę fastcgi_pass. Ścieżka /var/run/php/php8.x-fpm.sock (gdzie 8.x to Twoja wersja PHP, np. 8.5 na Ubuntu 26.04 LTS lub 8.3 na Ubuntu 24.04 LTS) musi być zgodna z rzeczywistym plikiem gniazda w Twoim systemie. W przypadku późniejszych błędów upewnij się, że numer wersji w ścieżce zgadza się z usługą php8.x-fpm, którą zweryfikowano w poprzednim kroku. Zapisz zmiany, naciskając Ctrl + O, a następnie Enter, i wyjdź za pomocą Ctrl + X.

Krok 3: Utworzenie skryptu testowego PHP i weryfikacja działania
Aby zweryfikować, czy Nginx poprawnie przekazuje żądania do procesora PHP-FPM, należy utworzyć prostą stronę informacyjną. Skrypt ten wykorzystuje funkcję phpinfo(), która wyświetla bieżącą konfigurację PHP, załadowane moduły oraz zmienne środowiskowe.
Przejdź do domyślnego katalogu głównego serwera WWW i utwórz nowy plik o nazwie info.php:
## Utwórz plik testowy w domyślnym katalogu głównym serwera WWW
sudo nano /var/www/html/info.php
Wklej do pliku następujący kod PHP:
<?php
phpinfo();
?>
Zapisz plik, naciskając Ctrl + O, a następnie Enter, i wyjdź za pomocą Ctrl + X.
Przed przetestowaniem pliku w przeglądarce należy sprawdzić konfigurację Nginx, aby upewnić się, że w poprzednim kroku nie pojawiły się błędy składniowe. Następnie zastosuj zmiany, przeładowując usługę:
## Sprawdź składnię konfiguracji
sudo nginx -t
## Zastosuj zmiany w usłudze Nginx
sudo systemctl reload nginx
Jeśli test składni zakończy się pomyślnie, otwórz przeglądarkę internetową i przejdź pod adres http://twoj_adres_ip_serwera/info.php. Powinna wyświetlić się strona ze szczegółowymi informacjami o instalacji PHP (w przypadku nowej instalacji na Ubuntu 26.04 LTS będzie to PHP 8.5). Jeśli zamiast wyrenderowanej strony widzisz surowy kod, sprawdź dokładnie, czy blok location ~ \.php$ w konfiguracji Nginx zgadza się ze ścieżką do gniazda (socket). Po potwierdzeniu, że wszystko działa poprawnie, usuń plik testowy, aby uniemożliwić nieautoryzowanym użytkownikom wgląd w wrażliwe informacje o serwerze:
## Usuń skrypt testowy w celu zachowania bezpieczeństwa
sudo rm /var/www/html/info.php

Po potwierdzeniu integracji PHP za pomocą skryptu testowego należy przeprowadzić ostateczną kontrolę usług systemowych, aby upewnić się, że zarówno Nginx, jak i PHP-FPM działają bez błędów. Uruchom poniższe polecenia, aby zweryfikować status obu demonów:
## Sprawdź status serwera WWW Nginx
sudo systemctl status nginx
## Sprawdź status usługi PHP-FPM (zastąp 8.x swoją wersją PHP)
sudo systemctl status php8.x-fpm
Upewnij się, że obie usługi wyświetlają status "active (running)". Jeśli usługa wyświetla status "failed" lub "inactive", sprawdź logi systemowe za pomocą polecenia journalctl -u nginx lub journalctl -u php8.x-fpm (zastępując 8.x swoją wersją PHP). Ponadto zaleca się okresowe sprawdzanie logów błędów Nginx w /var/log/nginx/error.log w celu szybkiego wykrywania problemów z uprawnieniami lub brakującymi modułami PHP.

Podsumowanie
Dysponujesz teraz w pełni funkcjonalnym stosem LEMP działającym na serwerze Ubuntu. Dzięki połączeniu Nginx z PHP-FPM 8.5 stworzyłeś wysokowydajną podstawę, zdolną do obsługi dynamicznego ruchu internetowego przy minimalnym obciążeniu zasobów. Niezależnie od tego, czy wdrażasz własną aplikację, czy system zarządzania treścią, ta konfiguracja zapewnia niezbędną kontrolę nad środowiskiem serwerowym.
Utrzymanie tego stosu to coś więcej niż tylko początkowa konfiguracja. W miarę rozwoju aplikacji może zajść potrzeba dostosowania procesów roboczych w konfiguracji Nginx lub dostrojenia ustawień puli PHP-FPM, aby lepiej odpowiadały przydzielonym zasobom. Jeśli kiedykolwiek zajdzie potrzeba przeprowadzenia aktualizacji systemu, pamiętaj, aby najpierw zatrzymać usługi w celu zapewnienia integralności danych:
## Bezpieczne zatrzymanie usług przed aktualizacją systemu (zastąp 8.x swoją wersją PHP)
sudo systemctl stop nginx
sudo systemctl stop php8.x-fpm
## Aktualizacja pakietów systemowych
sudo apt update && sudo apt upgrade -y
## Uruchomienie usług po aktualizacji (zastąp 8.x swoją wersją PHP)
sudo systemctl start nginx
sudo systemctl start php8.x-fpm
Dla osób zarządzających krytycznymi obciążeniami, kolejnym logicznym krokiem jest monitorowanie. Obserwuj wykorzystanie zasobów systemowych za pośrednictwem panelu VoxiHost, szczególnie jeśli skalujesz swoje środowiska Premium VPS lub Budget VPS. Regularne sprawdzanie logów oraz aktualizowanie pakietów zapewni, że Twój serwer WWW pozostanie szybki i bezpieczny przed nowymi zagrożeniami.
Jeśli zdecydujesz się na dalszą rozbudowę infrastruktury, rozważ zapoznanie się z przewodnikiem Jak skonfigurować certyfikat SSL z Let's Encrypt i Certbot na Ubuntu i Debianie: Kompletny poradnik, aby szyfrować ruch i poprawić pozycjonowanie w wyszukiwarkach.
