UNIX ýa-da TCP/IP rozetkasyny ulanyp, NGINX-ni PHP-FPM-e nädip birikdirmeli


NGINX web serweri (ters proksi hökmünde) FastCGI protokolynyň üsti bilen (arka programma serweri hökmünde) PHP programmalaryna hyzmat edýär. NGINX, PHI-FPM (FastCGI Prosess Manager), alternatiw PHP FastCGI ýerine ýetirişini ulanýar, CGI haýyşlaryny diňleýär. Agyr ýüklenen web sahypalaryny ýa-da web programmalaryny işletmek üçin döredilen goşmaça aýratynlyklar bar, ýöne islendik ululykdaky saýtlar üçin ulanylyp bilner.

Diňe PHP-FPM FastCGI çeşme howuzlarynyň konfigurasiýasyny goldamak bilen çäklenmän, FastCGI içerki köp sanlysyny gowulaşdyrýar we ýalňyş hasabatlaryny, skriptleriň ýatyrylmagyny we başga-da köp zady ýokarlandyrýar. Onda PHP-ni jynlaşdyrmak, amallary dolandyrmak, haýyşlaryň gelip biläýjek köp sanly prosesi, ýalňyş sözbaşy, ýüklemäni çaltlaşdyrmak we başgalar bar.

NGINX-dan FastCGI isleglerini kabul etmek üçin PHP-FPM ýa TCP/IP rozetkasyny ýa-da UNIX domen rozetkasyny diňläp biler. Haýsy adresi ulanmagy saýlasaňyz, NGINX fastcgi_pass direktiwasyny ulanyp, PHP-FPM-e birikdirmek üçin ulanýar.

Bu gollanma, PHP-FPM ulanyp, serwer PHP programmalaryna NGINX-i nädip sazlamalydygyny düşündirýär. NGINX-ni PHP-FPM-e birikdirmek üçin TCP/IP rozetkasyny ýa-da UNIX domen rozetkasyny haçan ulanmalydygyny we sebäbini düşündirýär.

Bu gollanma, Linux ulgamyňyzda NGINX we PHP-FPM gurnalandygyny göz öňünde tutýar, ýogsam:

  • CentOS 8-de LEMP serwerini nädip gurmaly
  • Ubuntu 20.04 Serwerinde LEMP stack PhpMyAdmin nädip gurmaly
  • RHEL 8-de NGINX, MySQL/MariaDB we PHP-ni nädip gurmaly
  • LEMP-ni Debian 10 Serwerine nädip gurmaly

UNIX domeni (ýa-da IPC) rozetkalary, şol bir operasiýa ulgamynda işleýän prosesleriň arasynda netijeli maglumat alyş-çalşyna mümkinçilik berýän TCP/IP (ýa-da Internet Domain) rozetkalary ulgamyň üsti bilen aragatnaşyk saklamaga mümkinçilik berýän amallar arasyndaky aragatnaşyk serişdesidir.

Serweri IP adresi we porty (meselem, 127.0.0.1:9000) kesgitleýän TCP/IP rozetkasyndan tapawutlylykda, faýl adyny (meselem/run/php-fpm/www) ulanyp, serweri UNIX domen rozetkasyna baglap bilersiňiz. jorap), faýl ulgamynda görünýär.

UNIX domen rozetkasy aýratyn bir faýl görnüşidir - faýl we katalog rugsatlary oňa degişlidir (beýleki UNIX faýlyndaky ýaly) we öý eýesiniň haýsy amallary faýla okap we ýazyp biljekdigini çäklendirmek üçin ulanylyp bilner, (we şeýlelik bilen arka serweri bilen aragatnaşyk saklaň).

Şeýlelik bilen, UNIX domen rozetkasy ygtybarly, sebäbi ony diňe ýerli hostdaky amallar ulanyp biler. Gorag diwary ýaly goşmaça howpsuzlyk çäreleri durmuşa geçirilmese, TCP/IP rozetkasy, howpsuzlyk töwekgelçiligi döredýän internete sezewar bolup biler.

Möhümi, UNIX domen rozetkasyny ulanmak, öndürijilik meselesinde TCP/IP rozetkasyny ulanmak bilen deň däl, birnäçe synag we görkezijiler UNIX domen rozetkalarynyň has çaltdygyny subut etdi. UNIX domen rozetkalarynyň esasy kemçiligi, olaryň ulaldylyp bilinmezligi, diňe bir operasiýa ulgamynyň (OS) çäginde prosesara aragatnaşygy goldaýar.

PHP-FPM diňleýän salgysyny çeşme howuzynyň konfigurasiýa faýlynda düzüp bilersiňiz. PHP-FPM bilen dürli sazlamalar bilen birnäçe howuz işledip bilersiňiz. Adaty howuza www diýilýär.

Resurs basseýniniň konfigurasiýa faýlynyň ýerleşişi, PHP we PHP-FPM-iň Linux ulgamynda gurulmagyna baglydyr (bir wagtyň özünde birkemsiz/bir wersiýa bolsun ýa-da birnäçe wersiýa bolsun).

Mysal üçin, CentOS 8-de, ýekeje wersiýasy bilen, ähli PHP konfigurasiýa faýllary /etc katalogynda ýerleşýär we adaty PHP-FPM howuzy (www) konfigurasiýa faýly bar /etc/php-fpm.d/www.conf:

PHP konfigurasiýa faýllarynyň hemmesini sanamak üçin aşakdaky ls buýrugyny ulanyň.

# ls /etc/php*

Ubuntu 20.04-de PHP konfigurasiýa faýllary /etc/php// katalogynda we deslapky PHP-FPM howuzy (www) konfigurasiýa faýlynda ýerleşýär /etc/php/ /fpm/pool.d/www.conf :

$ ls /etc/php/7.4/

UNIX domen rozetkasynda diňlemek üçin PHP-FPM sazlamak

UNIX domen rozetkasyny diňlemek üçin PHP-FPM-i sazlamak üçin, halaýan tekst redaktoryňyzy ulanyp, adaty PHP-FPM basseýn konfigurasiýa faýlyny açyň.

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

Soňra diňlemek görkezmesini gözläň we UNIX domen rozetkasynyň faýl adyna aşakdaky ýaly düzüň. Gurnamalaryň köpüsinde UNIX domen rozetkasyny ulanýandygyny unutmaň.

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

UNIX domen rozetkasyny ulanýan bolsaňyz, NGINX web serwerinden birikmelere rugsat bermek üçin faýl üçin degişli okamak/ýazmak üçin rugsatlary bellemeli. Düzgüne görä, NGINX CentOS/RHEL/Fedora-da ulanyjy we topar nginx we Ubuntu we Debian-da www-maglumatlar hökmünde işleýär.

Şeýlelik bilen, listen.owner we listen.group parametrlerini tapyň we şoňa görä düzüň. Şeýle hem, listen.mode parametrini ulanyp, tertibi 0660 edip düzüň.

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

UNIX domen rozetka faýlyndaky rugsatlar dogry kesgitlenmedik bolsa, NGINX erbet şlýuz ýalňyşlygyny yzyna gaýtaryp biler.

TCP/IP rozetkasynda diňlemek üçin PHP-FPM sazlamak

UNIX domen rozetkasy TCP/IP rozetkasyndan has çalt bolsa-da, öňküsi has ulaldylyp bilinmez, sebäbi diňe bir OS-da prosesara aragatnaşygy goldap biler. NGINX we arka programma serweri (PHP-FPM) dürli ulgamlarda işleýän bolsa, birikmeler üçin TCP/IP rozetkasyny diňlemek üçin PHP-FPM sazlamaly bolarsyňyz.

PHP-FPM basseýn konfigurasiýa faýlynda diňlemek salgysyny aşakdaky ýaly düzüň. Saýlan portuňyzyň şol bir ulgamda başga bir proses ýa-da hyzmat tarapyndan ulanylmaýandygyna göz ýetiriň.

listen = 127.0.0.1:3000

PHP-FPM amaly serweri bilen işlemek üçin NGINX sazlamak

PHP-FPM diňleýän adresini düzeniňizden soň, wirtual serwer blok konfigurasiýa faýlynda fastcgi_pass konfigurasiýa parametrini ulanyp, NGINX-i şol salgy arkaly proksi haýyşy üçin düzmeli.

Mysal üçin, web sahypaňyz üçin konfigurasiýa faýly /etc/nginx/conf.d/example.com.conf bolsa, redaktirlemek üçin açyň.

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

.php faýllaryny gaýtadan işlemek üçin ýerleşiş blokuny gözläň we UNIX-de diňlemek üçin PHP-FPM sazlasaňyz, fastcgi_pass parametrini aşakdaky ýaly düzüň. domen rozetkasy.

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

Ora-da TCP/IP rozetkasynda diňlemek üçin PHP-FPM düzen bolsaňyz, TCP/IP adresini ulanyň. Yzky programma serweri (PHP-FPM) aýratyn serwerde işleýän bolsa (10.42.0.10 PHP-FPM FastCGI serweriniň işleýän maşynyň IP adresi bilen çalşyň).

fastcgi_pass  10.42.0.10:3000;

Üns beriň: CentOS 8-de PHP-FPM /etc/nginx/conf.d/php-fpm.conf faýlynda, php-fpm ady bilen ýokarky blokda ýokary akym serweri hökmünde kesgitlenilýär.

Howuz konfigurasiýa faýlynda diňlemek üçin düzülen PHP-FPM adresine baglylykda bu ýerde üýtgeşmeler girizip bilersiňiz. Adaty konfigurasiýa UNIX domen rozetkasyny görkezýär.

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

we sahypaňyzyň serwer blok faýlynda görkezilişi ýaly fastcgi_pass parametrini düzüň.

fastcgi_pass php-fpm;

PHP-FPM we NGINX konfigurasiýalaryna üýtgeşmeler girizeniňizden soň, konfigurasiýa sintaksisini aşakdaky ýaly dogry barlaň.

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

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

Buýruk çykyşy diňe esasy konfigurasiýa faýlyny görkezýän bolsa, beýleki konfigurasiýa faýllarynyň hemmesi goşulýar we barlanýar.

Ondan soň, systemctl buýrugyny ulanyp, üýtgeşmeleri ulanmak üçin iki hyzmaty täzeden başlamaly.

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

Anyalňyşlyklar bar bolsa, NGINX we PHP-FPM gündelik faýllaryny pişik buýrugy bilen barlap bilersiňiz.

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

Bu siziň üçin bar zat. Aşakdaky düşündiriş bölümi sorag bermek üçin ulanylyp bilner. Has giňişleýin maglumat üçin PHP-FPM resminamalaryna serediň.