Miklix

NGINX-də ayrı PHP-FPM hovuzlarını necə qurmaq olar

Nəşr olundu: 15 fevral 2025 at 11:56:55 UTC

Bu yazıda mən bir neçə PHP-FPM hovuzunu işə salmaq və NGINX-i onlara FastCGI vasitəsilə qoşmaq üçün lazım olan konfiqurasiya addımlarını nəzərdən keçirirəm ki, bu da virtual hostlar arasında prosesin ayrılması və təcrid olunmasına imkan verir.


Bu səhifə mümkün qədər çox insan üçün əlçatan olması üçün ingilis dilindən maşın tərcümə edilib. Təəssüf ki, maşın tərcüməsi hələ mükəmməl texnologiya deyil, ona görə də səhvlər baş verə bilər. İstəyirsinizsə, orijinal ingilis versiyasına buradan baxa bilərsiniz:

How to Set Up Separate PHP-FPM Pools in NGINX

Bu yazıdakı məlumat Ubuntu Server 14.04 x64-də işləyən NGINX 1.4.6 və PHP-FPM 5.5.9-a əsaslanır. Digər versiyalar üçün keçərli və ya olmaya bilər. (Yeniləmə: Mən təsdiq edə bilərəm ki, Ubuntu Server 24.04, PHP-FPM 8.3 və NGINX 1.24.0-dan etibarən bu yazıdakı bütün təlimatlar hələ də işləyir)

Hər şeyi eyni hovuzda işlətməkdənsə, çoxsaylı PHP-FPM uşaq proses hovuzlarının qurulmasının bir sıra üstünlükləri var. Təhlükəsizlik, ayırma/izolyasiya və resursların idarə edilməsi bir neçə əsas kimi ağla gəlir.

Motivasiyanızın nə olmasından asılı olmayaraq, bu yazı sizə bunu etməyə kömək edəcək :-)


Hissə 1 – Yeni PHP-FPM hovuzunu qurun

Əvvəlcə PHP-FPM-in hovuz konfiqurasiyalarını saxladığı kataloqu tapmalısınız. Ubuntu 14.04-də bu, defolt olaraq /etc/php5/fpm/pool.d-dir. Çox güman ki, artıq www.conf adlı bir fayl var, o, standart hovuz üçün konfiqurasiyanı saxlayır. Əgər o fayla baxmamısınızsa, ehtimal ki, onu nəzərdən keçirməli və quraşdırmanız üçün içindəki parametrləri dəyişdirməlisiniz, çünki defoltlar kifayət qədər zəif server üçündir, lakin indi sadəcə onun surətini çıxarın ki, sıfırdan başlamağa ehtiyac qalmasın:

sudo cp www.conf mypool.conf

Əlbəttə ki, "mypool" sözünü hovuzunuzun adlandırılmasını istədiyiniz hər şeylə əvəz edin.

İndi nano və ya istədiyiniz mətn redaktorundan istifadə edərək yeni faylı açın və onu məqsədinizə uyğunlaşdırın. Yəqin ki, siz uşaq proseslərinin nömrələrini və ehtimal ki, hovuzun hansı istifadəçi və qrupun altında işlədiyini dəyişmək istəyəcəksiniz, lakin mütləq dəyişməli olduğunuz iki parametr hovuzun adı və onun dinlədiyi yuvadır, əks halda o, mövcud hovuzla ziddiyyət təşkil edəcək və işlər dayanacaq.

Hovuzun adı faylın yuxarı hissəsinə yaxındır və kvadrat mötərizə içərisindədir. Varsayılan olaraq [www] . Bunu istədiyinizə dəyişdirin; Konfiqurasiya faylını adlandırdığınızla eyni şeyi təklif edirəm, buna görə də bu nümunə üçün onu [mypool] olaraq dəyişdirin. Əgər siz onu dəyişdirməsəniz, görünür ki, PHP-FPM yalnız ilk konfiqurasiya faylını həmin adla yükləyəcək ki, bu da hər şeyi poza bilər.

Daha sonra dinləmək direktivi ilə müəyyən edilmiş, dinlədiyiniz rozetka və ya ünvanı dəyişdirməlisiniz. Varsayılan olaraq, PHP-FPM Unix yuvalarından istifadə edir, ona görə də dinləmə direktiviniz yəqin ki, belə görünəcək:

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

Siz onu istədiyiniz hər hansı etibarlı ada dəyişdirə bilərsiniz, lakin yenə də konfiqurasiya faylının adına oxşar bir şeylə yapışmağı təklif edirəm, buna görə də məsələn, onu təyin edə bilərsiniz:

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

Yaxşı, faylı yadda saxlayın və mətn redaktorundan çıxın.


Hissə 2 – NGINX virtual host konfiqurasiyasını yeniləyin

İndi NGINX virtual host faylını yeni hovuza dəyişmək istədiyiniz FastCGI konfiqurasiyası ilə açmalısınız – daha doğrusu, yeni rozetkaya qoşulun.

Ubuntu 14.04-də defolt olaraq, bunlar /etc/nginx/sites-available altında saxlanılır, lakin başqa yerdə də müəyyən edilə bilər. Yəqin ki, virtual host konfiqurasiyalarınızın harada yerləşdiyini yaxşı bilirsiniz ;-)

Sevimli mətn redaktorunuzda müvafiq konfiqurasiya faylını açın və PHP-FPM yuvasını təyin edən fastcgi_pass direktivini (yer kontekstində olmalıdır) axtarın. Siz bu dəyəri elə dəyişməlisiniz ki, o, birinci addımda etdiyiniz yeni PHP-FPM hovuz konfiqurasiyasına uyğun olsun, buna görə də nümunəmizi davam etdirərək bunu dəyişdirəcəksiniz:

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

Sonra həmin faylı da saxlayıb bağlayın. Artıq demək olar ki, bitirdiniz.


3-cü hissə – PHP-FPM və NGINX-i yenidən başladın

Etdiyiniz konfiqurasiya dəyişikliklərini tətbiq etmək üçün həm PHP-FPM, həm də NGINX-i yenidən başladın. Yenidən başlatmaq əvəzinə yenidən yükləmək kifayət ola bilər , lakin hansı parametrlərin dəyişdirilməsindən asılı olaraq bir az vurulmuş və əldən verilmiş olduğunu düşünürəm. Xüsusi halda, mən köhnə PHP-FPM uşaq proseslərinin dərhal ölməsini istədim, ona görə də PHP-FPM-i yenidən işə salmaq lazım idi, lakin NGINX üçün yenidən yükləmə kifayət ola bilər. Özünüz üçün cəhd edin.

sudo service php5-fpm restart
sudo service nginx restart

Və voila, bitirdin. Hər şeyi düzgün etmisinizsə, dəyişdirdiyiniz virtual host indi yeni PHP-FPM hovuzundan istifadə etməli və uşaq proseslərini hər hansı digər virtual hostlarla paylaşmamalıdır.

Bluesky-də paylaşınFacebookda paylaşLinkedIn-də paylaşınTumblr-da paylaşınX-də paylaşınLinkedIn-də paylaşınPinterest-də Pin

Mikkel Bang Christensen

Müəllif haqqında

Mikkel Bang Christensen
Mikkel miklix.com saytının yaradıcısı və sahibidir. O, peşəkar kompüter proqramçısı/proqram təminatı tərtibatçısı kimi 20 ildən artıq təcrübəyə malikdir və hazırda böyük Avropa İT korporasiyasında tam iş günü işləyir. Bloq yazmayanda o, boş vaxtını geniş çeşidli maraqlara, hobbilərə və fəaliyyətlərə sərf edir ki, bu da müəyyən dərəcədə bu veb-saytda əhatə olunan müxtəlif mövzularda əks oluna bilər.