15%

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
01.11.2024
1 +1

Tryby PHP na VPS: mod_php vs FastCGI vs PHP-FPM — Kompletny Przewodnik

PHP napędza ponad 80% wszystkich stron internetowych, jednak jedna z najczęściej pomijanych decyzji dotyczących wydajności to wybór odpowiedniego trybu wykonywania PHP. Wybranie złego trybu skutkuje powolnymi czasami ładowania, nadmiernym zużyciem RAM-u i awariami serwera podczas skoków ruchu. Wybranie właściwego trybu pozwala aplikacji skalować się bez wysiłku, nawet pod dużym obciążeniem współbieżnym.

Ten przewodnik omawia wszystkie trzy główne tryby wykonywania PHP — mod_php, FastCGI i PHP-FPM — z rzeczywistym kontekstem wydajności, przykładami konfiguracji i jasnymi rekomendacjami dla różnych przypadków użycia. Niezależnie od tego, czy prowadzisz osobisty blog czy platformę e-commerce o wysokim ruchu, zrozumienie tych trybów jest fundamentalne dla maksymalnego wykorzystania środowiska serwera.

Spis treści

  1. Czym są tryby wykonywania PHP?
  2. mod_php — klasyczny moduł Apache
  3. FastCGI — oddzielenie PHP od serwera WWW
  4. PHP-FPM — nowoczesny standard wysokiej wydajności
  5. Porównanie obok siebie
  6. Jak skonfigurować PHP-FPM na VPS (Ubuntu/Debian)
  7. PHP-FPM z Nginx
  8. PHP-FPM z Apache
  9. Dostrajanie puli PHP-FPM do produkcji
  10. Który tryb PHP wybrać?
  11. Podsumowanie

Czym są tryby wykonywania PHP? {#what-are-php-execution-modes}

Tryb wykonywania PHP określa, jak serwer WWW interpretuje i uruchamia skrypty PHP. Określa relację między procesem serwera WWW (Apache, Nginx, LiteSpeed) a interpreterem PHP — konkretnie, czy współdzielą ten sam proces, komunikują się za pośrednictwem protokołu, czy działają jako całkowicie oddzielne usługi zarządzane.

Trzy główne tryby to:

TrybArchitekturaNajlepsze dla
mod_phpPHP osadzony w ApacheProste środowiska współdzielone
FastCGIPHP jako oddzielny procesWitryny o średnim ruchu
PHP-FPMZarządzane pule procesów PHPAplikacje produkcyjne o wysokim ruchu

Wybór właściwego trybu bezpośrednio wpływa na użycie pamięci, przepustowość żądań, izolację i skalowalność. W środowisku VPS Hosting, gdzie zasoby są dedykowane i konfigurowalne, masz pełną swobodę wdrożenia dowolnego trybu, który najlepiej pasuje do Twojego obciążenia.

mod_php — klasyczny moduł Apache {#mod_php}

Czym jest mod_php?

mod_php to moduł Apache, który osadza interpreter PHP bezpośrednio w procesie serwera WWW Apache. Jest to najstarsza i historycznie najczęstsza metoda uruchamiania PHP.

Jak działa mod_php

Gdy Apache otrzyma żądanie dla pliku PHP, obsługuje wykonanie wewnętrznie — żaden proces zewnętrzny nie jest uruchamiany, nie dochodzi do komunikacji przez gniazdo. PHP żyje wewnątrz samego Apache.

Charakterystyka wydajności

Dla witryn o niskim ruchu i środowisk programistycznych mod_php działa wystarczająco dobrze. Ponieważ PHP jest już załadowany do pamięci Apache, nie ma narzutu spawania procesów na żądanie.

Jednak ta architektura ma krytyczną wadę: każdy proces roboczy Apache zawiera pełny interpreter PHP w pamięci, niezależnie od tego, czy obsługuje plik PHP czy statyczny zasób, taki jak obraz lub plik CSS.

Wady mod_php

  • Wysokie zużycie pamięci: Każdy proces roboczy Apache (nawet te obsługujące pliki statyczne) przechowuje pełne środowisko uruchomieniowe PHP w RAM-ie.
  • Brak izolacji między witrynami: Wszystkie hosty wirtualne współdzielą ten sam proces PHP i kontekst użytkownika, co stanowi zagrożenie bezpieczeństwa na serwerach wielodostępnych.
  • Ograniczona elastyczność konfiguracji: Nie możesz uruchamiać różnych wersji PHP dla różnych hostów wirtualnych bez znaczących obejść.
  • Niezgodny z Nginx: mod_php jest wyłączny dla Apache; nie można go używać z Nginx lub LiteSpeed.
  • Słaba skalowalność pod obciążeniem: Przy wysokiej współbieżności wyczerpanie pamięci staje się rzeczywistym zagrożeniem.

Kiedy używać mod_php

  • Lokalne środowiska programistyczne
  • Bardzo niskoruchu osobiste witryny
  • Starsze aplikacje, gdzie rekonfiguracja nie jest możliwa

FastCGI — oddzielenie PHP od serwera WWW {#fastcgi}

Czym jest FastCGI?

FastCGI to protokół, który pozwala serwerowi WWW komunikować się z zewnętrznym procesem PHP, zamiast osadzać PHP wewnątrz siebie. Jest to znaczna poprawa architektoniczna w stosunku do mod_php.

Jak działa FastCGI

Serwer WWW (Apache lub Nginx) przekazuje żądania PHP do trwałego procesu FastCGI za pośrednictwem gniazda Unix lub portu TCP. Proces PHP obsługuje wykonanie i zwraca wynik.

Kluczowe słowo tutaj to trwały: w przeciwieństwie do CGI (oryginalnego protokołu), procesy FastCGI pozostają aktywne między żądaniami, eliminując narzut spawania nowego procesu dla każdego pojedynczego żądania.

Charakterystyka wydajności

FastCGI znacznie zmniejsza narzut pamięci w porównaniu z mod_php, ponieważ żądania plików statycznych są obsługiwane całkowicie przez serwer WWW bez zaangażowania PHP. Procesy PHP są wywoływane tylko wtedy, gdy są rzeczywiście potrzebne.

Wady FastCGI

  • Złożoność konfiguracji: Wymaga dodatkowej konfiguracji w porównaniu z mod_php, w tym konfiguracji gniazda lub portu.
  • Ograniczone zarządzanie procesami: Podstawowy FastCGI brakuje zaawansowanych funkcji zarządzania pulą potrzebnych w środowiskach produkcyjnych.
  • Zastąpiony przez PHP-FPM: W większości nowoczesnych wdrożeń PHP-FPM (zbudowany na FastCGI) jest preferowany zamiast podstawowych implementacji FastCGI.

Kiedy używać FastCGI

  • Witryny o średnim ruchu
  • Środowiska, gdzie PHP-FPM nie jest dostępny
  • Przejściowe konfiguracje migrujące z mod_php

PHP-FPM — nowoczesny standard wysokiej wydajności {#php-fpm}

Czym jest PHP-FPM?

PHP-FPM (FastCGI Process Manager) to zaawansowana, bogata w funkcje implementacja protokołu FastCGI. Jest to de facto standard uruchamiania PHP w środowiskach produkcyjnych i jest zalecanym trybem dla każdej poważnej aplikacji internetowej.

Jak działa PHP-FPM

PHP-FPM zarządza pulą procesów roboczych PHP. Serwer WWW przekazuje żądania PHP do PHP-FPM za pośrednictwem gniazda Unix lub połączenia TCP. PHP-FPM dynamicznie zarządza liczbą aktywnych procesów roboczych na podstawie bieżącego ruchu, uruchamiając nowych pracowników pod obciążeniem i zwalniając ich w okresach spokojnych.

Kluczowe zalety PHP-FPM

#### 1. Dynamiczne zarządzanie procesami

PHP-FPM obsługuje wiele strategii zarządzania procesami:

  • static: Stała liczba procesów roboczych (przewidywalna, dobra dla wysokiego ruchu)
  • dynamic: Pracownicy skalują się między minimum a maksimum na podstawie popytu
  • ondemand: Pracownicy są uruchamiani tylko wtedy, gdy przychodzą żądania (efektywne pamięciowo dla niskiego ruchu)

#### 2. Konfiguracja dla każdej puli

Każda aplikacja lub host wirtualny może mieć własną pulę PHP-FPM z niezależnymi ustawieniami:

  • Oddzielny użytkownik/grupa Unix (ulepszona izolacja bezpieczeństwa)
  • Inna wersja PHP dla każdej puli
  • Niestandardowe wartości php.ini dla każdej aplikacji
  • Indywidualne limity zasobów

#### 3. Rejestrowanie powolnych żądań

PHP-FPM może rejestrować żądania, które przekraczają zdefiniowany próg czasu wykonania, co jest nieocenione do identyfikowania wąskich gardeł wydajności.

#### 4. Efektywność zasobów

Ponieważ procesy PHP są zarządzane oddzielnie od serwera WWW, zasoby statyczne są obsługiwane bez żadnego narzutu PHP. Pamięć jest zużywana tylko przez aktywnych pracowników PHP.

#### 5. Kompatybilność

PHP-FPM bezproblemowo współpracuje z Nginx, Apache (za pośrednictwem mod_proxy_fcgi) i LiteSpeed. W połączeniu z Nginx lub LiteSpeed zyski wydajności są znaczne — często cytowane jako 5–10x szybciej pod obciążeniem współbieżnym w porównaniu z mod_php z Apache.

Porównanie obok siebie {#comparison}

Funkcjamod_phpFastCGIPHP-FPM
ArchitekturaOsadzony w ApacheProces zewnętrznyZarządzana pula procesów
Efektywność pamięciNiskaŚredniaWysoka
Narzut plików statycznychWysokiNiskiNiski
Obsługa współbieżnych żądańSłabaDobraDoskonała
Wersja PHP dla każdej witrynyNieOgraniczonaTak
Izolacja bezpieczeństwaSłabaŚredniaDoskonała
Kompatybilność z NginxNieTakTak
Złożoność konfiguracjiNiskaŚredniaŚrednia
Gotowość do produkcjiNieCzęściowaTak
Rejestrowanie powolnych żądańNieNieTak

Jak skonfigurować PHP-FPM na VPS (Ubuntu/Debian) {#setup}

Poniższe instrukcje dotyczą Ubuntu 22.04 LTS i Debian 11/12. Jeśli uruchamiasz aplikację na planie VPS Hosting, będziesz mieć pełny dostęp root do wykonania tych poleceń.

Krok 1: Zaktualizuj system i zainstaluj PHP-FPM

Aby zainstalować konkretną wersję PHP (np. PHP 8.2):

Krok 2: Sprawdź, czy PHP-FPM jest uruchomiony

Powinieneś zobaczyć php-fpm w danych wyjściowych. Jeśli nie, uruchom i włącz go:

Krok 3: Potwierdź ścieżkę gniazda

PHP-FPM komunikuje się za pośrednictwem gniazda Unix. Sprawdź jego lokalizację:

PHP-FPM z Nginx {#nginx}

Nginx jest najczęstszym serwerem WWW sparowanym z PHP-FPM i z dobrego powodu — architektura oparta na zdarzeniach Nginx bez blokowania doskonale uzupełnia model puli procesów PHP-FPM.

Zainstaluj Nginx

Skonfiguruj blok serwera Nginx

Edytuj plik konfiguracji Twojej witryny:

Dodaj następującą konfigurację:

Włącz witrynę i uruchom ponownie Nginx

PHP-FPM z Apache {#apache}

Jeśli wolisz Apache — lub jeśli Twoja aplikacja opiera się na plikach .htaccess — możesz nadal używać PHP-FPM za pośrednictwem modułu mod_proxy_fcgi Apache.

Włącz wymagane moduły Apache

Skonfiguruj host wirtualny Apache

Włącz witrynę i uruchom ponownie Apache

Dostrajanie puli PHP-FPM do produkcji {#tuning}

Domyślna konfiguracja puli PHP-FPM jest konserwatywna i odpowiednia dla programowania. W przypadku obciążeń produkcyjnych powinieneś dostroić ustawienia puli na podstawie dostępnego RAM-u serwera i oczekiwanego ruchu.

Zlokalizuj plik konfiguracji puli

Kluczowe parametry do dostrojenia

Obliczanie max_children

Praktyczna formuła dla środowisk dynamicznych:

Aby znaleźć średni rozmiar procesu PHP:

Na typowej witrynie WordPress każdy pracownik PHP-FPM zużywa około 30–60 MB. Na VPS z 2 GB RAM (pozostawiając ~1,5 GB dla PHP po narzucie systemu operacyjnego) możesz bezpiecznie uruchamiać 25–50 pracowników.

Zastosuj zmiany

Który tryb PHP wybrać? {#which-to-choose}

Oto praktyczny przewodnik decyzyjny:

Wybierz mod_php jeśli:

  • Uruchamiasz lokalne środowisko programistyczne
  • Masz bardzo prostą, niskoruchu witrynę ze statyczną zawartością
  • Jesteś na starszym hostingu współdzielonym bez innych opcji

Wybierz FastCGI jeśli:

  • Jesteś na witrynie o średnim ruchu i PHP-FPM jest niedostępny
  • Migrujesz z mod_php i potrzebujesz kroku pośredniego

Wybierz PHP-FPM jeśli:

  • Uruchamiasz dowolną aplikację produkcyjną
  • Musisz obsługiwać wiele wersji PHP na tym samym serwerze
  • Uruchamiasz WordPress, Laravel, Symfony, Magento lub dowolny nowoczesny framework PHP
  • Chcesz izolacji bezpieczeństwa dla każdej aplikacji
  • Używasz Nginx (PHP-FPM jest jedyną realną opcją)
  • Potrzebujesz skalowalności pod obciążeniem współbieżnym

W zdecydowanej większości przypadków produkcyjnych PHP-FPM jest wyraźnym zwycięzcą. Jest to standardowa konfiguracja na nowoczesnych platformach hostingowych zarządzanych i to właśnie powinieneś uruchamiać na każdym samodzielnie zarządzanym VPS.

Jeśli zarządzasz wieloma witrynami i chcesz graficzny interfejs do obsługi przełączania trybu PHP, zarządzania pulą procesów i konfiguracji hostów wirtualnych bez ręcznego edytowania plików konfiguracyjnych, rozważ VPS z cPanel — EasyApache 4 cPanel pozwala przełączać procedury obsługi PHP dla każdej domeny za pomocą kilku kliknięć.

Alternatywnie, zapoznaj się z pełnym zakresem paneli sterowania VPS, aby znaleźć interfejs zarządzania, który najlepiej pasuje do Twojego przepływu pracy.

Zabezpieczanie aplikacji PHP poza trybem wykonywania

Wyb

15%

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