Bii o ṣe le sopọ NGINX si PHP-FPM Lilo UNIX tabi TCP/IP Socket


Olupin wẹẹbu NGINX (bi aṣoju aṣoju) n ṣe awọn ohun elo PHP nipasẹ ilana FastCGI (gẹgẹbi olupin ohun elo atilẹyin). NGINX lo PHP-FPM (Oluṣakoso ilana FastCGI), yiyan PHP FastCGI imuse ti o ṣiṣẹ ni abẹlẹ bi daemon, n tẹtisi awọn ibeere CGI. O wa pẹlu awọn ẹya afikun ti a ṣe apẹrẹ fun agbara awọn oju opo wẹẹbu ti o wuwo tabi awọn ohun elo wẹẹbu, ṣugbọn o le ṣee lo fun awọn aaye ti iwọn eyikeyi.

Kii ṣe nikan ni PHP-FPM ṣe atilẹyin iṣeto ti awọn adagun orisun omi FastCGI, ṣugbọn o tun ṣe ilọsiwaju pupọ ninu awọn inu inu FastCGI ati mu alekun iroyin aṣiṣe, ipari iwe afọwọkọ, ati pupọ siwaju sii. O ṣe ẹya eṣu PHP, iṣakoso ilana, nọmba agbara ti awọn ilana lati eyiti awọn ibeere le ti wa, akọle aṣiṣe, atilẹyin ikojọpọ onikiakia, ati diẹ sii.

Lati gba awọn ibeere FastCGI lati NGINX, PHP-FPM le boya tẹtisi lori iho TCP/IP tabi apo iho agbegbe UNIX. Eyikeyi adirẹsi ti o yan lati lo ni ohun ti NGINX nlo lati sopọ (awọn ibeere aṣoju) si PHP-FPM, ni lilo ilana fastcgi_pass .

Itọsọna yii ṣalaye bii o ṣe le tunto NGINX si olupin awọn ohun elo PHP nipa lilo PHP-FPM. O ṣe apejuwe nigbawo lati lo iho TCP/IP tabi iho iho agbegbe UNIX lati sopọ NGINX si PHP-FPM ati idi ti.

Itọsọna yii dawọle pe o ni NGINX ati PHP-FPM ti fi sori ẹrọ lori eto Linux rẹ, bibẹkọ, wo:

  • Bii o ṣe le Fi Server Server LEMP sori CentOS 8
  • Bii a ṣe le Fi akopọ LEMP sii PhpMyAdmin ni Ubuntu 20.04 Server Bii a ṣe le Fi NGINX, MySQL/MariaDB, ati PHP sori RHEL 8
  • Bii o ṣe le Fi sori ẹrọ LEMP lori Debian 10 Server

Awọn ipilẹ UNIX (tabi IPC) jẹ awọn ọna ti ibaraẹnisọrọ laarin ilana (IPC) eyiti o gba laaye paṣipaarọ data daradara laarin awọn ilana ti n ṣiṣẹ lori ẹrọ iṣiṣẹ kanna lakoko ti awọn soso TCP/IP (tabi Intanẹẹti Intanẹẹti) gba awọn ilana laaye lati ṣe ibaraẹnisọrọ lori nẹtiwọọki kan.

Ko dabi iho TCP/IP ti o ṣe idanimọ olupin kan nipasẹ adirẹsi IP ati ibudo (fun apẹẹrẹ 127.0.0.1:9000), o le sopọ olupin kan si iho apo agbegbe UNIX nipa lilo orukọ ọna faili kan (fun apẹẹrẹ/ṣiṣe/php-fpm/www. sock), eyiti o han ni eto faili.

Opo iho ibugbe UNIX jẹ iru faili pataki kan - faili ati awọn igbanilaaye itọsọna ni o kan si (bi o ti jẹ ọran pẹlu eyikeyi iru faili UNIX miiran) ati pe a le lo lati ni ihamọ iru awọn ilana lori agbalejo le ka ati kọ si faili naa, (ati bayi ṣe ibasọrọ pẹlu olupin ẹhin).

Ni ọna yii, iho ibugbe UNIX kan ni aabo nitori awọn ilana nikan lori agbalejo agbegbe le lo. A le fi iho TCP/IP han si intanẹẹti ti o nwu eewu aabo ayafi ti a ba gbe awọn igbese aabo aabo bii ogiriina sii.

Pataki, lilo iho apo-iwọle UNIX kii ṣe bakanna pẹlu lilo iho TCP/IP nipa iṣẹ, ọpọlọpọ awọn idanwo ati awọn aṣepari ti fihan awọn ibudoko agbegbe UNIX lati yara. Aṣayan akọkọ ti awọn sockets ibugbe UNIX ni pe wọn ko ni iwọn to pọ, wọn nikan ṣe atilẹyin ibaraẹnisọrọ kariaye laarin ẹrọ ṣiṣe kanna (OS).

O le tunto adirẹsi naa PHP-FPM ngbọ ni inu faili iṣeto iṣeto adagun-odo kan. Akiyesi pe pẹlu PHP-FPM, o le ṣiṣe awọn adagun-omi pupọ ti awọn ilana pẹlu awọn eto oriṣiriṣi. A pe adagun-odo aiyipada www .

Ipo ti faili iṣeto iṣeto adagun orisun omi da lori ọna ti a fi PHP ati PHP-FPM sori ẹrọ ẹrọ Linux (boya o jẹ aiyipada/ẹyọkan ẹya tabi awọn ẹya pupọ nigbakanna).

Fun apẹẹrẹ, lori CentOS 8, pẹlu ẹyọkan, gbogbo awọn faili iṣeto PHP wa ni itọsọna /ati be be lo ati aiyipada PHP-FPM pool (www) faili iṣeto ni /etc/php-fpm.d/www.conf:

Lati ṣe atokọ gbogbo awọn faili iṣeto PHP, lo pipaṣẹ ls atẹle.

# ls /etc/php*

Lori Ubuntu 20.04, awọn faili iṣeto PHP wa ni /etc/php// ati aiyipada PHP-FPM pool (www) faili iṣeto ni jẹ /ati be be/php/ /fpm/pool.d/www.conf :

$ ls /etc/php/7.4/

Tito leto PHP-FPM lati Gbọ lori Socket Domain UNIX

Lati tunto PHP-FPM lati tẹtisi lori iho ibugbe UNIX, ṣii aiyipada faili iṣeto PHP-FPM adagun rẹ, ni lilo olootu ọrọ ayanfẹ rẹ.

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

Lẹhinna wa fun itọnisọna tẹtisi ki o ṣeto si orukọ faili faili ti iho ibugbe UNIX bi atẹle. Akiyesi pe ọpọlọpọ awọn fifi sori ẹrọ lo iho apo agbegbe UNIX nipasẹ aiyipada.

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

Ti o ba lo iho ibugbe UNIX, o tun nilo lati ṣeto awọn igbanilaaye kika/kikọ ti o yẹ fun faili naa, lati gba awọn asopọ lati ọdọ olupin wẹẹbu NGINX. Nipa aiyipada, NGINX n ṣiṣẹ bi olumulo ati nginx ẹgbẹ lori CentOS/RHEL/Fedora ati www-data lori Ubuntu ati Debian.

Nitorinaa, wa awọn koodu olutẹtisi ati tẹẹrẹ.group awọn ipilẹ ki o ṣeto wọn ni ibamu. Paapaa, ṣeto ipo si 0660 nipa lilo paramita listen.mode .

------------- 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

Akiyesi pe ti awọn igbanilaaye lori faili iho ibugbe UNIX ko ba ṣeto ni deede, NGINX le da aṣiṣe ẹnu-ọna buburu pada.

Tito leto PHP-FPM lati Gbọ lori Socket TCP/IP

Biotilẹjẹpe iho ibugbe UNIX kan yara ju iho TCP/IP lọ, iṣaaju ko kere si iwọn, nitori o le ṣe atilẹyin nikan ibaraẹnisọrọ kariaye lori OS kanna. Ti NGINX ati olupin ohun elo ẹhin (PHP-FPM) nṣiṣẹ lori awọn ọna oriṣiriṣi, iwọ yoo ni lati tunto PHP-FPM lati tẹtisi lori iho TCP/IP fun awọn isopọ.

Ninu faili iṣeto adagun PHP-FPM, ṣeto adirẹsi gbọ bi atẹle. Rii daju pe ibudo ti o ti yan ko lo nipasẹ ilana tabi iṣẹ miiran lori eto kanna.

listen = 127.0.0.1:3000

Tito leto NGINX lati Ṣiṣẹ pẹlu Olupin Ohun elo PHP-FPM

Lọgan ti o ba tunto adirẹsi naa PHP-FPM tẹtisi si, o nilo lati tunto NGINX si ibeere aṣoju si rẹ nipasẹ adirẹsi yẹn, ni lilo paramita iṣeto fastcgi_pass , ni faili iṣeto iṣeto bulọọki olupin.

Fun apẹẹrẹ, ti faili iṣeto fun oju opo wẹẹbu rẹ jẹ /etc/nginx/conf.d/example.com.conf, ṣii fun ṣiṣatunkọ.

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

Wa fun ipo Àkọsílẹ fun sisẹ .php awọn faili ki o ṣeto paramita fastcgi_pass bi atẹle, ti o ba tunto PHP-FPM lati tẹtisi UNIX kan iho ìkápá.

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

Tabi lo adirẹsi TCP/IP kan ti o ba tunto PHP-FPM lati tẹtisi lori iho TCP/IP kan. Ti olupin ohun elo ẹhin (PHP-FPM) nṣiṣẹ lori olupin ọtọtọ (rọpo 10.42.0.10 pẹlu adiresi IP ti ẹrọ lori eyiti olupin PHP-FPM FastCGI nṣiṣẹ).

fastcgi_pass  10.42.0.10:3000;

Pataki: Lori CentOS 8, PHP-FPM ti wa ni asọye bi olupin oke ni faili /etc/nginx/conf.d/php-fpm.conf, laarin idena iloke kan, pẹlu orukọ php-fpm.

O le ṣe awọn ayipada nibi ni ibamu da adirẹsi ti a tunto PHP-FPM lati gbọ, ni faili iṣeto adagun-odo. Iṣeto ni aiyipada tọka si apo-aṣẹ aaye UNIX kan.

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

ati ninu faili idiwọ olupin rẹ ti aaye rẹ, ṣeto ni irọrun fastcgi_pass paramita bi o ti han.

fastcgi_pass php-fpm;

Lẹhin ṣiṣe awọn ayipada si awọn atunto PHP-FPM ati NGINX, ṣayẹwo sintasi iṣeto wọn fun atunṣe bi atẹle.

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

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

Lakoko ti o wu aṣẹ n fihan faili iṣeto akọkọ, gbogbo awọn faili iṣeto miiran miiran wa pẹlu ati ṣayẹwo daradara.

Nigbamii ti, o nilo lati tun bẹrẹ awọn iṣẹ meji lati lo awọn ayipada, ni lilo aṣẹ systemctl.

------------- 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

Ti o ba gba awọn aṣiṣe eyikeyi, o le ṣayẹwo awọn faili log NGINX ati PHP-FPM nipa lilo aṣẹ ologbo.

------------- 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

Iyẹn ni gbogbo ohun ti a ni fun ọ. Abala asọye ni isalẹ le ṣee lo lati beere awọn ibeere. Fun alaye diẹ sii, wo iwe PHP-FPM.