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

Optymalizacja wydajności PHP dzięki PHP-FPM na AlexHost VPS

Dlaczego warto korzystać z PHP-FPM na AlexHost? PHP-FPM (FastCGI Process Manager) turbodoładowuje strony internetowe oparte na PHP, takie jak WordPress lub Laravel, zapewniając szybsze czasy reakcji i efektywne wykorzystanie zasobów. VPS AlexHost, z pamięcią masową NVMe, pełnym dostępem root i ochroną DDoS, jest idealną platformą do uruchamiania PHP-FPM, zapewniając, że Twoje aplikacje z łatwością poradzą sobie z dużym ruchem. W tym przewodniku opisano, czym jest PHP-FPM, dlaczego zmienia zasady gry i jak skonfigurować go na serwerze VPS AlexHost.

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 dużego 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 odesłania wyniku z powrotem do serwera WWW w celu dostarczenia do klienta. Oto uproszczony sposób 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

W większości dystrybucji Linuksa PHP-FPM można zainstalować za pomocą menedżerów pakietów. Oto polecenia dla popularnych systemów: ###ATP_NOTR_1_CODE_TAG_NOTR_ATP## Po zainstalowaniu można uruchomić usługę PHP-FPM

###ATP_NOTR_2_CODE_TAG_NOTR_ATP##

Krok 2: Konfiguracja puli 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 = dynamiczny: 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) ustaw PHP-FPM jako obsługę PHP: ###ATP_NOTR_5_CODE_TAG_NOTR_ATP##

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

###ATP_NOTR_7_CODE_TAG_NOTR_ATP##

Krok 4: Testowanie konfiguracji

Po skonfigurowaniu PHP-FPM i serwera WWW uruchom ponownie usługi, aby zastosować zmiany: ###ATP_NOTR_8_CODE_TAG_NOTR_ATP## ###ATP_NOTR_9_CODE_TAG_NOTR_ATP## Aby sprawdzić, czy PHP-FPM działa, utwórz plik phpinfo.php w katalogu głównym sieci: ###ATP_NOTR_10_CODE_TAG_NOTR_ATP## Odwiedź plik w przeglądarce (np, http://example.com/phpinfo.php), aby sprawdzić, czy PHP-FPM jest wymieniony jako program obsługi

Wnioski: Doładuj PHP z AlexHost i PHP-FPM

PHP-FPM przekształca aplikacje PHP w wysokowydajne maszyny, a VPS AlexHost z NVMe zapewnia ich płynne działanie przy dużych obciążeniach. Zainstaluj PHP-FPM, skonfiguruj pule i zintegruj z NGINX lub Apache, aby uzyskać szybkie i bezpieczne strony internetowe. Monitoruj za pomocą stron stanu, debuguj za pomocą powolnych dzienników i twórz kopie zapasowe konfiguracji dla bezpieczeństwa. Dzięki dostępowi do roota i wsparciu AlexHost Twoje projekty PHP są nie do powstrzymania – zacznij kodować i skaluj bez wysiłku!

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

Użyj kodu przy kasie:

Skills

Похожие записи не найдены.