Miklix

Erillisten PHP-FPM-poolien määrittäminen NGINX:ssä

Julkaistu: 15. helmikuuta 2025 klo 11.49.36 UTC
Viimeksi päivitetty: 12. tammikuuta 2026 klo 8.29.56 UTC

Tässä artikkelissa käyn läpi konfigurointivaiheet, joita tarvitaan useiden PHP-FPM-poolien suorittamiseen ja NGINX:n yhdistämiseen niihin FastCGI:n kautta, mikä mahdollistaa prosessien erottelun ja eristämisen virtuaalisten isäntien välillä.


Tämä sivu on käännetty koneellisesti englannista, jotta se olisi mahdollisimman monen ihmisen saatavilla. Valitettavasti konekääntäminen ei ole vielä täydellistä tekniikkaa, joten virheitä voi esiintyä. Voit halutessasi tarkastella alkuperäistä englanninkielistä versiota täällä:

How to Set Up Separate PHP-FPM Pools in NGINX

Tämän viestin tiedot perustuvat NGINX 1.4.6:een ja PHP-FPM 5.5.9:ään, jotka toimivat Ubuntu Server 14.04 x64 -käyttöjärjestelmässä. Tiedot eivät välttämättä päde muihin versioihin. (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-aliprosessipoolien perustamisessa on useita etuja sen sijaan, että kaikki suoritettaisiin samassa poolissa. Tärkeimpinä niistä mieleen tulevat tietoturva, erottelu/eristys ja resurssienhallinta.

Motivaationne olipa mikä tahansa, tämä postaus auttaa teitä siinä :-)

Osa 1 – Uuden PHP-FPM-poolin määrittäminen

Ensin sinun on löydettävä hakemisto, johon PHP-FPM tallentaa pool-määritykset. Ubuntu 14.04:ssä tämä on oletusarvoisesti /etc/php5/fpm/pool.d. Siellä on luultavasti jo tiedosto nimeltä www.conf, joka sisältää oletuspoolin määritykset. Jos et ole aiemmin katsonut kyseistä tiedostoa, kannattaa ehkä käydä se läpi ja muokata siinä olevia asetuksia omaan kokoonpanoosi sopiviksi, koska oletusasetukset on tarkoitettu melko alitehoiselle palvelimelle. Toistaiseksi kannattaa kuitenkin tehdä kopio tiedostosta, jotta meidän ei tarvitse aloittaa alusta:

sudo cp www.conf mypool.conf

Korvaa tietenkin ”mypool” millä tahansa haluamallasi nimellä altaallesi.

Avaa nyt uusi tiedosto käyttämällä nanoa tai mitä tahansa muuta tekstieditoria ja säädä sitä tarkoitukseesi sopivaksi. Haluat luultavasti muokata aliprosessien numeroita ja mahdollisesti sitä, minkä käyttäjän ja ryhmän alaisuudessa pool toimii, mutta kaksi asetusta, jotka sinun on ehdottomasti muutettava, ovat poolin nimi ja soketti, jota se kuuntelee, muuten se on ristiriidassa olemassa olevan poolin kanssa ja asiat lakkaavat toimimasta.

Poolin nimi on tiedoston yläosassa hakasulkeissa. Oletusarvoisesti se on [www]. Muuta tämä haluamaksesi; ehdotan samaa nimeä kuin asetustiedostolle, joten tässä esimerkissä vaihda se muotoon [mypool]. Jos et muuta sitä, näyttää siltä, että PHP-FPM lataa vain ensimmäisen kyseisen nimen mukaisen asetustiedoston, mikä todennäköisesti rikkoo järjestelmän.

Sinun on sitten muutettava kuuntelemaasi sokettia tai osoitetta, joka määritellään listen-direktiivissä. Oletusarvoisesti PHP-FPM käyttää Unix-socketteja, joten listen-direktiivisi näyttää todennäköisesti tältä:

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

Voit muuttaa sen haluamaasi kelvolliseen nimeen, mutta jälleen kerran suosittelen pysymään jossain samankaltaisessa kuin määritystiedoston nimi, joten voit esimerkiksi asettaa sen muotoon:

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

Okei, tallenna tiedosto ja poistu tekstieditorista.

Osa 2 – Päivitä NGINX-virtuaalipalvelimen kokoonpano

Nyt sinun on avattava NGINX-virtuaalikoneen tiedosto FastCGI-kokoonpanolla, jonka haluat muuttaa uuteen pooliin – tai pikemminkin muodostaa yhteyden uuteen sokettiin.

Oletusarvoisesti Ubuntu 14.04:ssä nämä tallennetaan kansioon /etc/nginx/sites-available, mutta ne voidaan määrittää myös muualle. Todennäköisesti tiedät parhaiten, missä virtuaalikoneen määritykset sijaitsevat ;-)

Avaa asiaankuuluva asetustiedosto suosikkitekstieditorissasi ja etsi fastcgi_pass-direktiivi (jonka on oltava sijaintikontekstissa), joka määrittää PHP-FPM-socketin. Sinun on muutettava tätä arvoa vastaamaan vaiheessa yksi tekemääsi uutta PHP-FPM-poolin kokoonpanoa, joten esimerkkiämme jatkamalla muuttaisit tämän muotoon:

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

Tallenna ja sulje sitten myös kyseinen tiedosto. Olet melkein valmis.

Osa 3 – Käynnistä PHP-FPM ja NGINX uudelleen

Jotta tekemäsi määritysmuutokset tulevat voimaan, käynnistä sekä PHP-FPM että NGINX uudelleen. Uudelleenkäynnistys voi riittää pelkän uudelleenkäynnistyksen sijaan, mutta minusta se on hieman kaoottinen prosessi riippuen muutetuista asetuksista. Tässä tapauksessa halusin vanhojen PHP-FPM:n lapsiprosessien kuolevan heti, joten PHP-FPM:n uudelleenkäynnistys oli tarpeen, mutta NGINX:lle uudelleenkäynnistys saattaa riittää. Kokeile itse.

sudo service php5-fpm restart
sudo service nginx restart

Ja voilà, olet valmis. Jos teit kaiken oikein, muokkaamasi virtuaalikoneen pitäisi nyt käyttää uutta PHP-FPM-poolia eikä jakaa lapsiprosesseja minkään muun virtuaalikoneen kanssa.

Jaa BlueskyssäJaa FacebookissaJaa LinkedInissäJaa TumblrissaJaa X:ssäJaa LinkedInissäPin Pinterestissä

Mikkel Christensen

Kirjoittajasta

Mikkel Christensen
Mikkel on miklix.com-sivuston luoja ja omistaja. Hänellä on yli 20 vuoden kokemus ammattimaisena tietokoneohjelmoijana/ohjelmistokehittäjänä, ja tällä hetkellä hän työskentelee kokopäiväisesti suuressa eurooppalaisessa IT-yrityksessä. Kun hän ei ole bloggaamassa, hän käyttää vapaa-aikaansa monenlaisiin kiinnostuksen kohteisiin, harrastuksiin ja aktiviteetteihin, mikä saattaa jossain määrin heijastua tällä verkkosivustolla käsiteltävien aiheiden moninaisuuteen.