Miklix

Különálló PHP-FPM készletek beállítása az NGINX-ben

Megjelent: 2025. február 15. 11:52:30 UTC
Utolsó frissítés: 2026. január 12. 8:29:58 UTC

Ebben a cikkben áttekintem azokat a konfigurációs lépéseket, amelyek több PHP-FPM pool futtatásához és az NGINX FastCGI-n keresztüli csatlakoztatásához szükségesek, lehetővé téve a folyamatok elválasztását és izolálását a virtuális hosztok között.


Ezt az oldalt angolból gépi fordítással készítettük, hogy minél több ember számára elérhető legyen. Sajnos a gépi fordítás még nem tökéletes technológia, ezért előfordulhatnak hibák. Ha szeretné, itt megtekintheti az eredeti angol nyelvű változatot:

How to Set Up Separate PHP-FPM Pools in NGINX

A bejegyzésben található információk az Ubuntu Server 14.04 x64 rendszeren futó NGINX 1.4.6 és PHP-FPM 5.5.9 verziókra vonatkoznak. Előfordulhat, hogy más verziókra nem. (Frissítés: Megerősíthetem, hogy az Ubuntu Server 24.04, a PHP-FPM 8.3 és az NGINX 1.24.0 verzióktól kezdve a bejegyzésben található összes utasítás továbbra is működik.)

Számos előnye van annak, ha több PHP-FPM gyermekfolyamat-poolt állítunk be, mintha mindent egy poolban futtatnánk. Néhány fontosabb közülük a biztonság, az elkülönítés/izoláció és az erőforrás-kezelés.

Bármi legyen is a motivációd, ez a poszt segíteni fog neked :-)

1. rész – Új PHP-FPM készlet beállítása

Először is meg kell találnod azt a könyvtárat, ahol a PHP-FPM tárolja a pool konfigurációit. Ubuntu 14.04 alatt ez alapértelmezés szerint a /etc/php5/fpm/pool.d. Valószínűleg már van ott egy www.conf nevű fájl, amely az alapértelmezett pool konfigurációját tartalmazza. Ha még nem nézted meg ezt a fájlt, akkor valószínűleg át kell nézned, és módosítanod kell a benne lévő beállításokat a saját konfigurációdnak megfelelően, mivel az alapértelmezett értékek egy meglehetősen gyenge szerverre vonatkoznak, de most csak készíts róla egy másolatot, hogy ne kelljen a nulláról kezdenünk:

sudo cp www.conf mypool.conf

Természetesen a „mypool” részt cseréld le arra, aminek a nevét a medencédnek szeretnéd.

Most nyisd meg az új fájlt a nano vagy bármely más szövegszerkesztő használatával, és igazítsd a célodnak megfelelően. Valószínűleg módosítanod kell a gyermekfolyamatok számát, és esetleg azt is, hogy melyik felhasználó és csoport alatt fut a pool, de a két beállítást feltétlenül meg kell változtatnod: a pool nevét és a socketet, amelyre figyel, különben ütközni fog a meglévő pool-lal, és a dolgok nem fognak működni.

Pool neve a fájl tetején található, szögletes zárójelben. Alapértelmezés szerint [www]. Módosítsd ezt bármilyen kívánt névre; azt javaslom, hogy ugyanazt az elnevezést add, mint a konfigurációs fájlnak, tehát a példa kedvéért változtasd meg [mypool]-ra. Ha nem változtatod meg, úgy tűnik, hogy a PHP-FPM csak az első ilyen nevű konfigurációs fájlt fogja betölteni, ami valószínűleg hibás lesz.

Ezután meg kell változtatnod a figyelt socketet vagy címet, amelyet a listen direktíva határoz meg. Alapértelmezés szerint a PHP-FPM Unix socketeket használ, így a listen direktívád valószínűleg így fog kinézni:

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

Bármilyen érvényes névre megváltoztathatod, de ismét azt javaslom, hogy maradj valami hasonlónál, mint a konfigurációs fájlnév, például beállíthatod így:

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

Rendben, akkor mentsd el a fájlt és lépj ki a szövegszerkesztőből.

2. rész – Az NGINX virtuális gép konfigurációjának frissítése

Most meg kell nyitnia az NGINX virtuális host fájlt a FastCGI konfigurációval, amelyet új készletre szeretne módosítani – vagy inkább csatlakozni az új sockethez.

Alapértelmezés szerint az Ubuntu 14.04-en ezek az /etc/nginx/sites-available könyvtárban tárolódnak, de máshol is definiálhatók. Valószínűleg te tudod a legjobban, hogy hol találhatók a virtuális gép konfigurációi ;-)

Nyisd meg a megfelelő konfigurációs fájlt a kedvenc szövegszerkesztődben, és keresd meg a fastcgi_pass direktívát (aminek egy helymeghatározási kontextusban kell lennie), amely a PHP-FPM socketet definiálja. Ezt az értéket úgy kell módosítanod, hogy megegyezzen az első lépésben létrehozott új PHP-FPM pool konfigurációval, tehát a példánk folytatásaként ezt a következőre kellene módosítanod:

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

Ezután mentsd el és zárd be ezt a fájlt is. Már majdnem kész vagy.

3. rész – Indítsa újra a PHP-FPM-et és az NGINX-et

Konfigurációs módosítások alkalmazásához indítsd újra a PHP-FPM-et és az NGINX-et is. Lehet, hogy elég az újraindítás az újraindítás helyett, de én kicsit kapásnak találom, attól függően, hogy mely beállítások változnak. Ebben a konkrét esetben azt szerettem volna, ha a régi PHP-FPM gyermekfolyamatok azonnal leállnak, ezért újra kellett indítanom a PHP-FPM-et, de az NGINX esetében az újraindítás elegendő lehet. Próbáld ki magad.

sudo service php5-fpm restart
sudo service nginx restart

És voilá, kész is vagy. Ha mindent jól csináltál, a módosított virtuális gépnek most az új PHP-FPM készletet kell használnia, és nem szabad megosztania a gyermekfolyamatokat más virtuális gépekkel.

Oszd meg a Bluesky-nOszd meg a FacebookonOszd meg a LinkedIn-enOszd meg a Tumblr-enOszd meg X-enOszd meg a LinkedIn-enPin a Pinteresten

Mikkel Christensen

A szerzőről

Mikkel Christensen
Mikkel a miklix.com létrehozója és tulajdonosa. Több mint 20 éves tapasztalattal rendelkezik, mint hivatásos számítógépes programozó/szoftverfejlesztő, és jelenleg teljes munkaidőben dolgozik egy nagy európai informatikai vállalatnál. Amikor nem blogol, szabadidejét érdeklődési körének, hobbijainak és tevékenységeinek széles skálájával tölti, ami bizonyos mértékig tükröződhet a weboldalon tárgyalt témák sokféleségében.