NGINX-də ayrı PHP-FPM hovuzlarını necə qurmaq olar
Nəşr olundu: 15 fevral 2025 at 11:56:55 UTC
Son yeniləmə: 12 yanvar 2026 at 08:30:26 UTC
Bu məqalədə, birdən çox PHP-FPM hovuzunu işə salmaq və NGINX-i FastCGI vasitəsilə onlara qoşmaq üçün lazım olan konfiqurasiya addımlarını nəzərdən keçirirəm, bu da virtual hostlar arasında proseslərin ayrılmasına 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 üzərində işləyən NGINX 1.4.6 və PHP-FPM 5.5.9-a əsaslanır. Digər versiyalar üçün keçərli ola bilər və ya olmaya bilər. (Yeniləmə: Ubuntu Server 24.04, PHP-FPM 8.3 və NGINX 1.24.0 versiyasından etibarən bu yazıdakı bütün təlimatların hələ də işlədiyini təsdiqləyə bilərəm)
Hər şeyi eyni hovuzda işlətməkdənsə, birdən çox PHP-FPM uşaq proses hovuzu qurmağın bir sıra üstünlükləri var. Təhlükəsizlik, ayrılma/təcrid və resursların idarə edilməsi bir neçə əsas üstünlük kimi yada düşür.
Motivasiyanız nə olursa olsun, bu paylaşım sizə kömək edəcək :-)
1-ci hissə – Yeni PHP-FPM hovuzu qurun
Əvvəlcə PHP-FPM-in hovuz konfiqurasiyalarını saxladığı qovluğu tapmalısınız. Ubuntu 14.04-də bu, standart olaraq /etc/php5/fpm/pool.d-dir. Orada, ehtimal ki, standart hovuz üçün konfiqurasiyanı saxlayan www.conf adlı bir fayl var. Əgər əvvəllər həmin fayla baxmamısınızsa, çox güman ki, onu nəzərdən keçirib quraşdırmanız üçün parametrləri dəyişdirməlisiniz, çünki standart parametrlər kifayət qədər zəif server üçündür, amma indilik sıfırdan başlamaq məcburiyyətində qalmamaq üçün sadəcə bir surətini çıxarın:
Əlbəttə ki, "mypool" sözünü hovuzunuzun adının nə adlandırılmasını istədiyinizlə əvəz edin.
İndi yeni faylı nano və ya istədiyiniz mətn redaktorundan istifadə edərək açın və məqsədinizə uyğunlaşdırın. Çox güman ki, uşaq proses nömrələrini və hovuzun hansı istifadəçi və qrup altında işlədiyini tənzimləmək istəyəcəksiniz, lakin mütləq dəyişdirməli olduğunuz iki parametr hovuzun adı və dinlədiyi yuvadır, əks halda mövcud hovuzla ziddiyyət təşkil edəcək və işlər işləməyəcək.
Hovuzun adı faylın yuxarı hissəsində, kvadrat mötərizədə yerləşir. Varsayılan olaraq, bu [www]-dır. Bunu istədiyiniz kimi dəyişdirin; konfiqurasiya faylına verdiyiniz adla eyni şeyi təklif edirəm, ona görə də bu nümunə üçün onu [mypool] olaraq dəyişdirin. Əgər onu dəyişdirməsəniz, PHP-FPM yalnız bu adla ilk konfiqurasiya faylını yükləyəcək və bu, çox güman ki, işləri pozacaq.
Daha sonra dinlədiyiniz soketi və ya ünvanı dəyişdirməlisiniz, bu da dinləmə direktivi ilə müəyyən edilir. Varsayılan olaraq, PHP-FPM Unix soketlərindən istifadə edir, ona görə də dinləmə direktiviniz aşağıdakı kimi görünəcək:
İstədiyiniz etibarlı ada dəyişə bilərsiniz, amma yenə də konfiqurasiya faylının adına bənzər bir şey seçməyi məsləhət görürəm ki, məsələn, onu aşağıdakı kimi təyin edə bilərsiniz:
Yaxşı, onda faylı yadda saxla və mətn redaktorundan çıxın.
Hissə 2 – NGINX virtual host konfiqurasiyasını yeniləyin
İndi yeni bir hovuza dəyişdirmək istədiyiniz FastCGI konfiqurasiyası ilə NGINX virtual host faylını açmalısınız - daha doğrusu, yeni yuvaya qoşulmalısınız.
Ubuntu 14.04-də standart olaraq, bunlar /etc/nginx/sites-available qovluğunda saxlanılır, lakin başqa yerdə də təyin edilə bilər. Virtual host konfiqurasiyalarınızın harada yerləşdiyini yəqin ki, ən yaxşı bilirsiniz ;-)
Ən sevdiyiniz mətn redaktorunda müvafiq konfiqurasiya faylını açın və PHP-FPM soketini təyin edən fastcgi_pass direktivini (yer kontekstində olmalıdır) axtarın. Bu dəyəri birinci addımda etdiyiniz yeni PHP-FPM hovuz konfiqurasiyasına uyğun olması üçün dəyişdirməlisiniz, buna görə də nümunəmizi davam etdirərək bunu aşağıdakı kimi dəyişə bilərsiniz:
Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
Sonra həmin faylı da yadda saxla və bağlayın. Artıq demək olar ki, hazırsınız.
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, amma hansı parametrlərin dəyişdirilməsindən asılı olaraq bunun bir az çətin olduğunu düşünürəm. Xüsusi halda, köhnə PHP-FPM uşaq proseslərinin dərhal sıradan çıxmasını istəyirdim, ona görə də PHP-FPM-i yenidən başlatmaq lazım idi, lakin NGINX üçün yenidən yükləmə kifayət edə bilər. Özünüz sınayın.
sudo service nginx restart
Və budur, hazırsınız. Əgər hər şeyi düzgün etmisinizsə, dəyişdirdiyiniz virtual host artıq yeni PHP-FPM hovuzundan istifadə etməli və uşaq proseslərini digər virtual hostlarla paylaşmamalıdır.
