Miklix

Jak skonfigurować oddzielne pule PHP-FPM w NGINX

Opublikowano: 15 lutego 2025 11:52:50 UTC

W tym artykule omówię kroki konfiguracji niezbędne do uruchomienia wielu pul PHP-FPM i połączenia z nimi NGINX za pośrednictwem FastCGI, co pozwala na rozdzielenie procesów i izolację między hostami wirtualnymi.


Ta strona została przetłumaczona maszynowo z języka angielskiego, aby była dostępna dla jak największej liczby osób. Niestety, tłumaczenie maszynowe nie jest jeszcze dopracowaną technologią, więc mogą wystąpić błędy. Jeśli wolisz, możesz wyświetlić oryginalną angielską wersję tutaj:

How to Set Up Separate PHP-FPM Pools in NGINX

Informacje w tym poście odnoszą się do NGINX 1.4.6 i PHP-FPM 5.5.9 działających na Ubuntu Server 14.04 x64. Mogą być lub nie być ważne dla innych wersji. (Aktualizacja: Mogę potwierdzić, że w Ubuntu Server 24.04, PHP-FPM 8.3 i NGINX 1.24.0 wszystkie instrukcje w tym poście nadal działają)

Istnieje szereg zalet konfigurowania wielu pul procesów potomnych PHP-FPM zamiast uruchamiania wszystkiego w tej samej puli. Bezpieczeństwo, separacja/izolacja i zarządzanie zasobami przychodzą na myśl jako kilka głównych.

Niezależnie od tego, jaka jest Twoja motywacja, ten post pomoże Ci ją osiągnąć :-)


Część 1 – Konfigurowanie nowego puli PHP-FPM

Najpierw musisz zlokalizować katalog, w którym PHP-FPM przechowuje konfiguracje puli. W Ubuntu 14.04 jest to domyślnie /etc/php5/fpm/pool.d. Prawdopodobnie jest tam już plik o nazwie www.conf , który zawiera konfigurację domyślnej puli. Jeśli wcześniej nie przeglądałeś tego pliku, prawdopodobnie powinieneś go przejrzeć i dostosować ustawienia do swojej konfiguracji, ponieważ domyślne ustawienia są przeznaczone dla dość niedostatecznie wydajnego serwera, ale na razie zrób jego kopię, abyśmy nie musieli zaczynać od zera:

sudo cp www.conf mypool.conf

Oczywiście zamień „mypool” na nazwę, którą chcesz nadać puli.

Teraz otwórz nowy plik za pomocą nano lub dowolnego innego edytora tekstu, który wolisz i dostosuj go do swoich potrzeb. Prawdopodobnie będziesz chciał zmienić numery procesów potomnych i ewentualnie użytkownika i grupę, pod którą działa pula, ale dwa ustawienia, które musisz bezwzględnie zmienić, to nazwa puli i gniazdo, którego nasłuchuje, w przeciwnym razie będzie kolidować z istniejącą pulą i wszystko przestanie działać.

Nazwa puli znajduje się na górze pliku, ujęta w nawiasy kwadratowe. Domyślnie jest to [www] . Zmień to na cokolwiek chcesz; proponuję nazwę taką samą, jaką nadałeś plikowi konfiguracyjnemu, więc na potrzeby tego przykładu zmień ją na [mypool] . Jeśli jej nie zmienisz, wygląda na to, że PHP-FPM załaduje tylko pierwszy plik konfiguracyjny o tej nazwie, co prawdopodobnie wszystko zepsuje.

Następnie musisz zmienić gniazdo lub adres, którego słuchasz, co jest zdefiniowane przez dyrektywę listen . Domyślnie PHP-FPM używa gniazd Unix, więc Twoja dyrektywa listen prawdopodobnie będzie wyglądać tak:

listen = /var/run/php5-fpm.sock

Możesz zmienić ją na dowolną inną, prawidłową nazwę, ale ponownie sugeruję pozostanie przy czymś podobnym do nazwy pliku konfiguracyjnego, więc możesz na przykład ustawić ją tak:

listen = /var/run/php5-fpm-mypool.sock

Dobrze, zapisz plik i wyjdź z edytora tekstu.


Część 2 – Aktualizacja konfiguracji wirtualnego hosta NGINX

Teraz musisz otworzyć plik wirtualnego hosta NGINX z konfiguracją FastCGI, którą chcesz zmienić na nową pulę – lub raczej połączyć się z nowym gniazdem.

Domyślnie w Ubuntu 14.04 są one przechowywane w /etc/nginx/sites-available, ale można je również zdefiniować gdzie indziej. Prawdopodobnie najlepiej wiesz, gdzie znajdują się konfiguracje Twojego wirtualnego hosta ;-)

Otwórz odpowiedni plik konfiguracyjny w swoim ulubionym edytorze tekstu i poszukaj dyrektywy fastcgi_pass (która musi być w kontekście lokalizacji) definiującej gniazdo PHP-FPM. Musisz zmienić tę wartość, aby pasowała do nowej konfiguracji puli PHP-FPM, którą utworzyłeś w kroku pierwszym, więc kontynuując nasz przykład, zmienisz to na:

fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;

Następnie zapisz i zamknij również ten plik. Już prawie skończyłeś.


Część 3 – Ponowne uruchomienie PHP-FPM i NGINX

Aby zastosować zmiany konfiguracji, uruchom ponownie PHP-FPM i NGINX. Może wystarczyć ponowne załadowanie zamiast restartu , ale uważam, że jest to trochę niepewne, w zależności od tego, które ustawienia zostały zmienione. W konkretnym przypadku chciałem, aby stare procesy potomne PHP-FPM umarły od razu, więc konieczne było ponowne uruchomienie PHP-FPM, ale w przypadku NGINX ponowne załadowanie może być wystarczające. Wypróbuj to sam.

sudo service php5-fpm restart
sudo service nginx restart

I voila, gotowe. Jeśli wszystko zrobiłeś poprawnie, wirtualny host, który zmodyfikowałeś, powinien teraz używać nowej puli PHP-FPM i nie współdzielić procesów potomnych z żadnym innym wirtualnym hostem.

Udostępnij na BlueskyUdostępnij na FacebookuUdostępnij na LinkedInUdostępnij na TumblrUdostępnij na XUdostępnij na LinkedInPrzypnij na Pintereście

Mikkel Bang Christensen

O autorze

Mikkel Bang Christensen
Mikkel jest twórcą i właścicielem miklix.com. Ma ponad 20-letnie doświadczenie jako profesjonalny programista komputerowy / programista oprogramowania i jest obecnie zatrudniony na pełny etat w dużej europejskiej korporacji IT. Kiedy nie bloguje, poświęca swój wolny czas na szeroki wachlarz zainteresowań, hobby i aktywności, co może w pewnym stopniu znaleźć odzwierciedlenie w różnorodności tematów poruszanych na tej stronie.