Erillisten PHP-FPM-poolien määrittäminen NGINX:ssä
Julkaistu: 15. helmikuuta 2025 klo 11.49.36 UTC
Tässä artikkelissa käyn läpi määritysvaiheet, joita tarvitaan useiden PHP-FPM-poolien suorittamiseen ja NGINX:n yhdistämiseen niihin FastCGI:n kautta, mikä mahdollistaa prosessien erottamisen ja eristämisen virtuaalisten isäntien välillä.
How to Set Up Separate PHP-FPM Pools in NGINX
Tämän viestin tiedot perustuvat NGINX 1.4.6- ja PHP-FPM 5.5.9 -versioihin, jotka toimivat Ubuntu Server 14.04 x64 -versiossa. Se voi tai ei välttämättä ole voimassa muille versioille. (Päivitys: Voin vahvistaa, että Ubuntu Server 24.04:stä, PHP-FPM 8.3:sta ja NGINX 1.24.0:sta lähtien kaikki tämän viestin ohjeet toimivat edelleen)
Useiden PHP-FPM-lapsiprosessipoolien määrittämisessä on useita etuja sen sijaan, että kaikki suoritettaisiin samassa poolissa. Turvallisuus, erottaminen/eristys ja resurssien hallinta tulevat mieleen muutamina tärkeimpänä.
Riippumatta motivaatiostasi, tämä viesti auttaa sinua tekemään sen :-)
Osa 1 – Luo uusi PHP-FPM-varasto
Ensin sinun on löydettävä hakemisto, johon PHP-FPM tallentaa poolikokoonpanonsa. Ubuntu 14.04:ssä tämä on oletuksena /etc/php5/fpm/pool.d. Siellä on luultavasti jo tiedosto nimeltä www.conf , joka sisältää oletusvarannon asetukset. Jos et ole katsonut tiedostoa aiemmin, sinun kannattaa todennäköisesti käydä se läpi ja säätää sen asetuksia asetuksiasi varten, koska oletusasetukset ovat melko alitehoiselle palvelimelle, mutta toistaiseksi tee siitä kopio, jotta meidän ei tarvitse aloittaa tyhjästä:
Tietenkin, korvaa "mypool" millä tahansa nimellä allas.
Avaa nyt uusi tiedosto nanolla tai millä tahansa tekstieditorilla ja säädä se tarkoitukseen sopivaksi. Haluat luultavasti säätää alatason prosessinumeroita ja mahdollisesti sitä, minkä käyttäjän ja ryhmän alla pool toimii, mutta kaksi asetusta, jotka sinun on ehdottomasti muutettava, ovat poolin nimi ja liitäntä, jota se kuuntelee, muuten se on ristiriidassa olemassa olevan poolin kanssa ja asiat lakkaavat toimimasta.
Altaan nimi on lähellä tiedoston yläosaa hakasulkeissa. Oletuksena se on [www] . Muuta tämä mihin tahansa haluat; Ehdotan samaa kuin annoit määritystiedoston nimeksi, joten muuta tämän esimerkin vuoksi se muotoon [mypool] . Jos et muuta sitä, näyttää siltä, että PHP-FPM lataa vain ensimmäisen määritystiedoston tällä nimellä, mikä todennäköisesti rikkoo asioita.
Sitten sinun on vaihdettava kuuntelemaasi liitäntää tai osoitetta, joka on määritelty kuunteluohjeessa . Oletusarvoisesti PHP-FPM käyttää Unix-socketteja, joten kuunteluohjeesi näyttää todennäköisesti tältä:
Voit vaihtaa sen mihin tahansa kelvolliseen nimeen, mutta jälleen kerran, ehdotan, että käytät jotain, joka on samankaltainen kuin asetustiedoston nimi, jotta voit esimerkiksi asettaa sen seuraavasti:
Selvä, tallenna tiedosto ja poistu tekstieditorista.
Osa 2 – Päivitä NGINX-virtuaaliisäntäkokoonpano
Nyt sinun on avattava NGINX-virtuaaliisäntätiedosto FastCGI-kokoonpanolla, jonka haluat muuttaa uuteen pooliin – tai pikemminkin muodostaa yhteys uuteen pistorasiaan.
Oletusarvoisesti Ubuntu 14.04:ssä ne on tallennettu hakemistoon /etc/nginx/sites-available, mutta ne voidaan määrittää myös muualle. Tiedät luultavasti parhaiten missä virtuaaliisäntäkokoonpanosi sijaitsevat ;-)
Avaa asiaankuuluva asetustiedosto suosikkitekstieditorissasi ja etsi PHP-FPM-liittimen määrittävä fastcgi_pass -direktiivi (jonka on oltava sijaintikontekstissa). Sinun on muutettava tämä arvo niin, että se vastaa vaiheessa yksi tekemääsi uutta PHP-FPM-varastokokoonpanoa, joten jatkamalla esimerkkiämme muuttaisit tämän seuraavasti:
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Tallenna ja sulje sitten myös tiedosto. Olet melkein valmis nyt.
Osa 3 – Käynnistä PHP-FPM ja NGINX uudelleen
Ota tekemäsi kokoonpanomuutokset käyttöön käynnistämällä sekä PHP-FPM että NGINX uudelleen. Saattaa riittää, että lataat uudelleen uudelleenkäynnistyksen sijaan, mutta mielestäni se on hieman osuma, riippuen siitä, mitä asetuksia muutetaan. Erityistapauksessa halusin, että vanhat PHP-FPM-lapsiprosessit kuolevat heti, joten PHP-FPM uudelleenkäynnistys oli tarpeen, mutta NGINX:lle uudelleenlataus saattaa riittää. Kokeile sitä itse.
sudo service nginx restart
Ja voila, olet valmis. Jos teit kaiken oikein, muokkaamasi virtuaalisen isännän pitäisi nyt käyttää uutta PHP-FPM-varastoa eikä jakaa aliprosesseja muiden virtuaalisten isäntien kanssa.