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.
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:
Ə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:
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:
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 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.