Menedżer procesów PHP FastCGI - PHP-FPM ⋆ ALexHost SRL

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
18.12.2024
No categories

Menedżer procesów PHP FastCGI – PHP-FPM

Wprowadzenie do PHP-FPM

PHP jest jednym z najczęściej używanych języków programowania do tworzenia stron internetowych. Jeśli chodzi o wydajną obsługę dużego ruchu, wydajność PHP może znacząco wpłynąć na ogólną szybkość i szybkość reakcji stron internetowych. W tym miejscu do gry wkracza PHP FastCGI Process Manager (PHP-FPM). PHP-FPM to powszechnie przyjęty alternatywny program obsługi PHP, który zapewnia wysokowydajną metodę wykonywania skryptów PHP.

W tym artykule omówimy, czym jest PHP-FPM, dlaczego jest niezbędny do optymalizacji wydajności serwera WWW i jak skonfigurować go dla aplikacji opartych na PHP.

Czym jest PHP-FPM?

PHP-FPM, czyli PHP FastCGI Process Manager, to implementacja FastCGI dla skryptów PHP. FastCGI to protokół używany do poprawy wydajności serwerów internetowych poprzez bardziej wydajną obsługę żądań niż standardowy CGI (Common Gateway Interface). Podczas gdy CGI tworzy nowy proces dla każdego żądania (co prowadzi do wysokiego zużycia zasobów), FastCGI utrzymuje pulę procesów roboczych gotowych do obsługi wielu żądań, zmniejszając w ten sposób narzut.

PHP-FPM dodaje warstwę zarządzania procesami do FastCGI, umożliwiając takie funkcje jak łączenie procesów, odradzanie pracowników na żądanie, łagodne zamykanie i możliwość łatwej obsługi środowisk o dużym natężeniu ruchu. Jest to obecnie de facto standardowa obsługa PHP dla wielu nowoczesnych serwerów internetowych, w tym NGINX i Apache.

Dlaczego warto używać PHP-FPM?

  1. Lepsza wydajność: PHP-FPM może obsłużyć więcej jednoczesnych żądań przy mniejszej ilości zasobów, zmniejszając obciążenie serwera i przyspieszając czas odpowiedzi. Jest to szczególnie korzystne w przypadku witryn o dużym natężeniu ruchu lub aplikacji, które doświadczają nagłych skoków ruchu.
  2. Zarządzanie procesami: PHP-FPM pozwala na precyzyjne zarządzanie procesami, dając ci kontrolę nad tym, jak PHP obsługuje żądania. Wykorzystuje pulę pracowników, którą można dostosować do oczekiwanego obciążenia, zapewniając efektywne wykorzystanie zasobów serwera.
  3. Lepsze wykorzystanie zasobów: Ponieważ PHP-FPM łączy procesy, może obsługiwać wiele żądań przy użyciu tych samych pracowników, minimalizując potrzebę ciągłego tworzenia i kończenia procesów. Poprawia to wykorzystanie pamięci i wydajność procesora.
  4. Graceful Degradation: Po odpowiednim skonfigurowaniu PHP-FPM może z wdziękiem degradować się, zmniejszając liczbę aktywnych procesów, jeśli serwer zostanie przeciążony, zapobiegając całkowitej awarii.
  5. Zaawansowane funkcje: PHP-FPM zawiera zaawansowane funkcje, takie jak slow-log do debugowania, adaptacyjne odradzanie procesów i raportowanie stanu, które zapewniają wgląd w wydajność i kondycję aplikacji PHP.

Kluczowe cechy PHP-FPM

  • Pule procesów: PHP-FPM pozwala na zdefiniowanie wielu pul procesów roboczych PHP. Każda pula może być skonfigurowana z różnymi ustawieniami, co pozwala na uruchamianie różnych aplikacji PHP o różnych wymaganiach dotyczących ruchu na tym samym serwerze.
  • Adaptacyjne uruchamianie procesów: PHP-FPM może automatycznie skalować liczbę procesów roboczych w oparciu o poziomy ruchu. Zaczyna od minimalnej liczby pracowników i może zwiększyć rozmiar puli w razie potrzeby, bez marnowania zasobów w okresach niskiego ruchu.
  • Slow Log: Funkcja slow log w PHP-FPM rejestruje żądania, które przekraczają predefiniowany czas wykonania. Pomaga to programistom zidentyfikować i rozwiązać wąskie gardła wydajności w ich kodzie PHP.
  • Strona statusu: PHP-FPM zapewnia wbudowaną stronę stanu, która dostarcza w czasie rzeczywistym informacji o stanie puli, aktywnych pracownikach, bezczynnych pracownikach i innych metrykach, które można wykorzystać do monitorowania wydajności.
  • Graceful Shutdown: PHP-FPM może z wdziękiem kończyć procesy, pozwalając na zakończenie trwających żądań przed zamknięciem. Zapobiega to nagłemu zakończeniu uruchomionych skryptów, zapewniając lepsze wrażenia użytkownika.

Jak działa PHP-FPM

PHP-FPM działa jako samodzielny serwer FastCGI, który jest zintegrowany z serwerem WWW, takim jak NGINX lub Apache, w celu obsługi skryptów PHP. Gdy przychodzi żądanie, serwer WWW przekazuje żądanie PHP do usługi PHP-FPM, która zarządza pulą procesów roboczych w celu wykonania kodu PHP i wysłania wyniku z powrotem do serwera WWW w celu dostarczenia do klienta.

Oto uproszczony schemat obsługi żądania przez PHP-FPM:

  1. Żądanie klienta: Użytkownik żąda strony internetowej zawierającej kod PHP.
  2. Serwer WWW odbiera żądanie: Serwer WWW (NGINX lub Apache) odbiera żądanie i przekazuje je do usługi PHP-FPM przy użyciu protokołu FastCGI.
  3. Proces roboczy PHP-FPM przetwarza żądanie: Jeden z procesów roboczych w puli PHP-FPM obsługuje żądanie, wykonuje skrypt PHP i zwraca dane wyjściowe.
  4. Odesłana odpowiedź: Serwer WWW odbiera dane wyjściowe i wysyła je z powrotem do klienta jako ostateczny renderowany kod HTML.

Ustawianie i konfigurowanie PHP-FPM

Krok 1: Instalacja PHP-FPM

Dla większości dystrybucji Linuksa, PHP-FPM może być zainstalowany poprzez menedżery pakietów. Oto polecenia dla popularnych systemów:

# Dla Debiana/Ubuntu
sudo apt update
sudo apt install php-fpm
# Dla CentOS/RHEL
sudo yum install php-fpm

Po zainstalowaniu można uruchomić usługę PHP-FPM:

sudo systemctl start php-fpm

Krok 2: Konfigurowanie pul PHP-FPM

Główny plik konfiguracyjny PHP-FPM znajduje się zazwyczaj w /etc/php/7.x/fpm/pool.d/ lub /etc/php-fpm.d/ w zależności od dystrybucji i wersji PHP. Każda pula jest zdefiniowana we własnym pliku, zwykle nazwanym po stronie internetowej lub aplikacji, którą obsługuje. Oto przykładowa konfiguracja puli:

[www]
user = www-data
group = www-data
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

  • pm = dynamic: Menedżer procesów może dynamicznie dostosowywać liczbę procesów roboczych w zależności od zapotrzebowania.
  • pm.max_children: Maksymalna liczba procesów podrzędnych, które mogą być tworzone w celu obsługi żądań.
  • pm.start_servers: Liczba procesów podrzędnych uruchamianych po uruchomieniu PHP-FPM.
  • pm.min_spare_servers i pm.max_spare_servers: Określają minimalną i maksymalną liczbę bezczynnych pracowników, umożliwiając PHP-FPM skalowanie zasobów w zależności od obciążenia.
  • pm.max_requests: Maksymalna liczba żądań, które może obsłużyć worker, zanim zostanie zakończony i zastąpiony. Pomaga to zapobiegać wyciekom pamięci w długo działających skryptach.

Krok 3: Konfiguracja serwera WWW do korzystania z PHP-FPM

Dla NGINX:

W pliku konfiguracyjnym NGINX (np. /etc/nginx/sites-available/example.com) skonfiguruj PHP-FPM jako obsługę PHP:

server {
listen 80;
server_name example.com;
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}

Dla Apache:

Aby włączyć PHP-FPM w Apache, upewnij się, że moduł mod_proxy_fcgi jest włączony:

sudo a2enmod proxy_fcgi setenvif

Następnie zaktualizuj konfigurację wirtualnego hosta Apache:


ServerName example.com
DocumentRoot /var/www/html

SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"

Krok 4: Testowanie konfiguracji

Po skonfigurowaniu PHP-FPM i serwera WWW, uruchom ponownie usługi, aby zastosować zmiany:

# Dla NGINX
sudo systemctl restart nginx

# Dla Apache
sudo systemctl restart apache2

Aby sprawdzić, czy PHP-FPM działa, utwórz plik phpinfo.php w katalogu głównym sieci:

?php
phpinfo();
?&gt

Odwiedź plik w przeglądarce (np. http://example. com/phpinfo.php), aby sprawdzić, czy PHP-FPM jest wymieniony jako program obsługi.

Wnioski

PHP-FPM jest niezbędnym narzędziem do optymalizacji wydajności PHP, szczególnie w przypadku witryn o dużym natężeniu ruchu. Zapewnia znaczące korzyści w porównaniu z tradycyjnymi programami obsługi PHP poprzez efektywne zarządzanie procesami, poprawę wykorzystania zasobów serwera i oferowanie zaawansowanych funkcji, takich jak adaptacyjne skalowanie procesów i powolne rejestrowanie. Konfigurując PHP-FPM zgodnie ze swoimi specyficznymi potrzebami, można zapewnić, że aplikacje PHP działają płynnie i wydajnie, nawet przy dużym obciążeniu.

Wykonując kroki opisane w tym przewodniku, powinieneś być na dobrej drodze do skonfigurowania i zoptymalizowania PHP-FPM dla swoich projektów opartych na PHP.

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills