Hvernig á að tengja NGINX við PHP-FPM með UNIX eða TCP/IP fals


NGINX vefþjónn (sem öfugt umboð) þjónar PHP forritum í gegnum FastCGI samskiptareglur (sem stuðningur forritaþjónn). NGINX notar PHP-FPM (FastCGI Process Manager), aðra PHP FastCGI útfærslu sem keyrir í bakgrunni sem púki og hlustar á CGI beiðnir. Það kemur með aukaeiginleikum sem eru hannaðir til að knýja þunghlaðnar vefsíður eða vefforrit, en það er hægt að nota fyrir síður af hvaða stærð sem er.

PHP-FPM styður ekki aðeins uppsetningu FastCGI auðlindahópa, heldur bætir það einnig marga FastCGI innri hluti og eykur villutilkynningar, lokun handrita og margt fleira. Það býður upp á PHP djöflastýringu, ferlastjórnun, kraftmikinn fjölda ferla sem beiðnir geta komið frá, villuhaus, hraðan upphleðslustuðning og fleira.

Til að samþykkja FastCGI beiðnir frá NGINX getur PHP-FPM annað hvort hlustað á TCP/IP fals eða UNIX lén fals. Hvort heimilisfangið sem þú velur að nota er það sem NGINX notar til að tengjast (proxy beiðnir) við PHP-FPM, með fastcgi_pass tilskipuninni.

Þessi handbók útskýrir hvernig á að stilla NGINX til að þjóna PHP forritum með því að nota PHP-FPM. Það lýsir því hvenær á að nota TCP/IP fals eða UNIX lén fals til að tengja NGINX við PHP-FPM og hvers vegna.

Þessi handbók gerir ráð fyrir að þú hafir NGINX og PHP-FPM uppsett á Linux kerfinu þínu, annars sjá:

  • Hvernig á að setja upp LEMP Server á CentOS 8
  • Hvernig á að setja upp LEMP stafla PhpMyAdmin á Ubuntu 20.04 Server
  • Hvernig á að setja upp NGINX, MySQL/MariaDB og PHP á RHEL 8
  • Hvernig á að setja upp LEMP á Debian 10 Server

UNIX lén (eða IPC) innstungur eru leið til samskipta milli vinnslu (IPC) sem gerir skilvirka gagnaskipti milli ferla sem keyra á sama stýrikerfi á meðan TCP/IP (eða Internet Domain) innstungur leyfa ferlum að hafa samskipti yfir netkerfi.

Ólíkt TCP/IP fals sem auðkennir netþjón með IP tölu og gátt (t.d. 127.0.0.1:9000), geturðu tengt netþjón við UNIX lénsinnstungu með því að nota slóð skráar (t.d. /run/php-fpm/www. sock), sem er sýnilegt í skráarkerfinu.

UNIX lénsinnstunga er sérstök tegund skráa - skráar- og skráarheimildir gilda um hana (eins og raunin er með allar aðrar gerðir af UNIX skrám) og er hægt að nota til að takmarka hvaða ferla á hýsingaraðilanum getur lesið og skrifað í skrána, (og hafa þannig samskipti við bakendaþjóninn).

Þannig er UNIX lénsinnstunga örugg vegna þess að aðeins ferlar á staðnum hýsingaraðila geta notað það. TCP/IP fals gæti orðið fyrir nettengingu sem skapar öryggisáhættu nema auka öryggisráðstafanir eins og eldveggur séu innleiddar.

Mikilvægt er að nota UNIX lénsinnstungur er ekki það sama og að nota TCP/IP fals varðandi frammistöðu, nokkur próf og viðmið hafa sýnt að UNIX lénsinnstungur eru hraðari. Helsti gallinn við UNIX lénsinnstungur er að þeir eru minna skalanlegir, þeir styðja aðeins samskipti milli vinnslu innan sama stýrikerfis (OS).

Þú getur stillt heimilisfangið sem PHP-FPM hlustar á í stillingarskrá fyrir auðlindahóp. Athugaðu að með PHP-FPM geturðu keyrt nokkra hópa af ferlum með mismunandi stillingum. Sjálfgefinn hópur heitir www.

Staðsetning uppsetningarskrár auðlindalaugar fer eftir því hvernig PHP og PHP-FPM eru sett upp á Linux kerfi (hvort sem það er sjálfgefin/ein útgáfa eða margar útgáfur samtímis).

Til dæmis, á CentOS 8, með einni útgáfu, eru allar PHP stillingarskrár staðsettar í /etc skránni og sjálfgefna PHP-FPM laug (www) stillingarskráin er /etc/php-fpm.d/www.conf:

Til að skrá allar PHP stillingarskrár skaltu nota eftirfarandi ls skipun.

# ls /etc/php*

Í Ubuntu 20.04 eru PHP stillingarskrárnar staðsettar í /etc/php// skránni og sjálfgefna PHP-FPM laug (www) stillingarskrá er /etc/php//fpm/pool.d/www.conf:

$ ls /etc/php/7.4/

Stilla PHP-FPM til að hlusta á UNIX lénatengi

Til að stilla PHP-FPM til að hlusta á UNIX lénstengi skaltu opna sjálfgefna PHP-FPM laug stillingarskrána þína með uppáhalds textaritlinum þínum.

$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf	#Ubuntu/Debian
OR
# vim /etc/php-fpm.d/www.conf			#CentOS/RHEL/Fedora

Leitaðu síðan að hlustunartilskipuninni og stilltu hana á skráarslóð UNIX lénsins sem hér segir. Athugaðu að flestar uppsetningar nota UNIX lénstengi sjálfgefið.

listen = /run/php/php7.4-fpm.sock	#Ubuntu/Debian
OR
listen = /run/php-fpm/www.sock		#CentOS/RHEL/Fedora

Ef þú notar UNIX lénstengi þarftu líka að stilla viðeigandi les-/skrifheimildir fyrir skrána til að leyfa tengingar frá NGINX vefþjóninum. Sjálfgefið er að NGINX keyrir sem notandi og hópur nginx á CentOS/RHEL/Fedora og www-data á Ubuntu og Debian.

Svo, finndu listen.owner og listen.group færibreyturnar og stilltu þær í samræmi við það. Stilltu líka stillinguna á 0660 með listen.mode færibreytunni.

------------- On Debian and Ubuntu -------------
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

------------- On CentOS/RHEL and Fedora  -------------
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Athugaðu að ef heimildirnar á UNIX lénssocket skránni eru ekki rétt stilltar, gæti NGINX skilað slæmri gáttarvillu.

Stillir PHP-FPM til að hlusta á TCP/IP tengi

Þrátt fyrir að UNIX lénsinnstungur sé hraðari en TCP/IP fals, er sú fyrrnefnda minna stigstærð, vegna þess að hún getur aðeins stutt samskipti milli ferla á sama stýrikerfi. Ef NGINX og bakendaforritaþjónninn (PHP-FPM) eru í gangi á mismunandi kerfum, verður þú að stilla PHP-FPM til að hlusta á TCP/IP fals fyrir tengingar.

Í PHP-FPM laug stillingarskránni skaltu stilla hlusta heimilisfangið sem hér segir. Gakktu úr skugga um að gáttin sem þú hefur valið sé ekki notuð af öðru ferli eða þjónustu á sama kerfi.

listen = 127.0.0.1:3000

Stilla NGINX til að vinna með PHP-FPM forritaþjóni

Þegar þú hefur stillt heimilisfangið sem PHP-FPM hlustar á þarftu að stilla NGINX til að umboðsbeiðni á það í gegnum það heimilisfang, með því að nota fastcgi_pass stillingarfæribreytuna, í stillingarskrá fyrir sýndarþjónablokk.

Til dæmis, ef stillingarskráin fyrir vefsíðuna þína er /etc/nginx/conf.d/example.com.conf, opnaðu hana til að breyta.

# vim /etc/nginx/conf.d/example.com.conf 

Leitaðu að staðsetning blokkinni til að vinna úr .php skrám og stilltu fastcgi_pass færibreytuna sem hér segir, ef þú stilltir PHP-FPM til að hlusta á UNIX innstungu fyrir lén.

fastcgi_pass unix:/run/php/php7.4-fpm.sock	#Ubuntu/Debian
OR
fastcgi_pass unix:/run/php-fpm/www.sock		#CentOS/RHEL/Fedora

Eða notaðu TCP/IP vistfang ef þú stilltir PHP-FPM til að hlusta á TCP/IP fals. Ef bakendaforritaþjónninn (PHP-FPM) er í gangi á sérstökum netþjóni (skipta um 10.42.0.10 fyrir IP tölu vélarinnar sem PHP-FPM FastCGI miðlarinn er í gangi á).

fastcgi_pass  10.42.0.10:3000;

Mikilvægt: Á CentOS 8 er PHP-FPM skilgreint sem andstreymisþjónn í /etc/nginx/conf.d/php-fpm.conf skránni, innan andstreymisblokkar, með nafninu php-fpm.

Þú getur gert breytingar hér í samræmi við það eftir heimilisfanginu sem PHP-FPM er stillt til að hlusta á, í uppsetningarskránni fyrir sundlaugina. Sjálfgefin uppsetning bendir á UNIX lénstengi.

upstream php-fpm {
        server unix:/run/php-fpm/www.sock;
}

og í blokkaskrá síðunnar þinnar skaltu einfaldlega stilla fastcgi_pass færibreytuna eins og sýnt er.

fastcgi_pass php-fpm;

Eftir að hafa gert breytingar á PHP-FPM og NGINX stillingum, athugaðu setningafræði setningafræði þeirra á réttan hátt sem hér segir.

------------- On Debian and Ubuntu -------------
$ sudo php-fpm -t
$ sudo nginx -t

------------- On CentOS/RHEL and Fedora  -------------
# php-fpm -t
# nginx -t

Þó að skipunarúttakið sýni aðeins aðalstillingarskrána, eru allar aðrar stillingarskrár innifaldar og einnig athugaðar.

Næst þarftu að endurræsa þessar tvær þjónustur til að beita breytingunum með því að nota systemctl skipunina.

------------- On Debian and Ubuntu -------------
$ sudo systemctl restart nginx
$ sudo systemctl restart php7.4-fpm

------------- On CentOS/RHEL and Fedora  -------------
# systemctl restart nginx
# systemctl restart php-fpm

Ef þú færð einhverjar villur geturðu athugað NGINX og PHP-FPM log skrárnar með því að nota cat skipunina.

------------- On Debian and Ubuntu -------------
$ cat /var/log/nginx/error.log
$ cat /var/log/php7.4-fpm.log

------------- On CentOS/RHEL and Fedora  -------------
$ cat /var/log/nginx/error.log
$ cat /var/log/php-fpm/www-error.log

Þetta er allt sem við áttum fyrir þig. Hægt er að nota athugasemdahlutann hér að neðan til að spyrja spurninga. Fyrir frekari upplýsingar, sjá PHP-FPM skjölin.