Miklix

როგორ დავაყენოთ ცალკე PHP-FPM აუზები NGINX-ში

გამოქვეყნებულია: 15 თებერვალი, 2025, 11:55:49 UTC
ბოლო განახლება: 12 იანვარი, 2026, 08:30:23 UTC

ამ სტატიაში განვიხილავ კონფიგურაციის ნაბიჯებს, რომლებიც საჭიროა PHP-FPM აუზების გასაშვებად და NGINX-ის მათთან FastCGI-ის საშუალებით დასაკავშირებლად, რაც ვირტუალურ მასპინძლებს შორის პროცესების გამოყოფისა და იზოლაციის საშუალებას იძლევა.


ეს გვერდი მანქანურად ითარგმნა ინგლისურიდან, რათა რაც შეიძლება მეტი ადამიანისთვის ხელმისაწვდომი ყოფილიყო. სამწუხაროდ, მანქანური თარგმანი ჯერ კიდევ არ არის სრულყოფილი ტექნოლოგია, ამიტომ შეიძლება მოხდეს შეცდომები. თუ გსურთ, შეგიძლიათ ნახოთ ორიგინალური ინგლისური ვერსია აქ:

How to Set Up Separate PHP-FPM Pools in NGINX

ამ პოსტში მოცემული ინფორმაცია ეფუძნება Ubuntu Server 14.04 x64-ზე გაშვებულ NGINX 1.4.6-სა და PHP-FPM 5.5.9-ს. შესაძლოა, ის სხვა ვერსიებისთვის მართებული იყოს ან არ იყოს. (განახლება: შემიძლია დავადასტურო, რომ Ubuntu Server 24.04-ის, PHP-FPM 8.3-ისა და NGINX 1.24.0-ის მდგომარეობით, ამ პოსტში მოცემული ყველა ინსტრუქცია კვლავ მუშაობს)

PHP-FPM-ის მრავალი შვილობილი პროცესის პულის დაყენებას მრავალი უპირატესობა აქვს ყველაფრის ერთ პულში გაშვებასთან შედარებით. რამდენიმე მთავარ უპირატესობად შეიძლება ჩაითვალოს უსაფრთხოება, გამოყოფა/იზოლაცია და რესურსების მართვა.

მიუხედავად თქვენი მოტივაციისა, ეს პოსტი დაგეხმარებათ ამაში :-)

ნაწილი 1 - ახალი PHP-FPM პულის დაყენება

პირველ რიგში, თქვენ უნდა იპოვოთ დირექტორია, სადაც PHP-FPM ინახავს თავისი აუზის კონფიგურაციებს. Ubuntu 14.04-ზე ეს არის /etc/php5/fpm/pool.d ნაგულისხმევად. იქ ალბათ უკვე არის ფაილი სახელწოდებით www.conf, რომელიც შეიცავს ნაგულისხმევი აუზის კონფიგურაციას. თუ ეს ფაილი აქამდე არ გინახავთ, დიდი შანსია, რომ გადახედოთ მას და შეცვალოთ პარამეტრები თქვენი კონფიგურაციისთვის, რადგან ნაგულისხმევი პარამეტრები განკუთვნილია საკმაოდ სუსტი სერვერისთვის, მაგრამ ახლა უბრალოდ შექმენით მისი ასლი, რათა თავიდან არ დავიწყოთ:

sudo cp www.conf mypool.conf

რა თქმა უნდა, „mypool“ შეცვალეთ იმ სახელით, რომელიც გსურთ, რომ თქვენს აუზს ერქვას.

ახლა გახსენით ახალი ფაილი nano-ს ან თქვენთვის სასურველი ტექსტური რედაქტორის გამოყენებით და შეცვალეთ იგი თქვენი მიზნის შესაბამისად. სავარაუდოდ, დაგჭირდებათ შვილობილი პროცესების ნომრების და შესაძლოა, იმ მომხმარებლისა და ჯგუფის შეცვლა, რომლის ქვეშაც მუშაობს აუზი, მაგრამ აუცილებლად უნდა შეცვალოთ ორი პარამეტრი: აუზის სახელი და სოკეტი, რომელსაც ის იყენებს, წინააღმდეგ შემთხვევაში ის კონფლიქტში შევა არსებულ აუზთან და ყველაფერი შეწყვეტს მუშაობას.

პულის სახელი ფაილის ზედა ნაწილშია, კვადრატულ ფრჩხილებში ჩასმული. ნაგულისხმევად ეს არის [www]. შეცვალეთ ეს სახელი ნებისმიერი სახელით; გირჩევთ, კონფიგურაციის ფაილს იგივე სახელი მიანიჭოთ, რაც ამ მაგალითისთვის დაარქვით [mypool]. თუ მას არ შეცვლით, როგორც ჩანს, PHP-FPM მხოლოდ პირველ კონფიგურაციის ფაილს ჩატვირთავს ამ სახელით, რაც, სავარაუდოდ, პრობლემებს შეუქმნის.

შემდეგ თქვენ უნდა შეცვალოთ სოკეტი ან მისამართი, რომელსაც უსმენთ, რომელიც განსაზღვრულია listen დირექტივით. ნაგულისხმევად, PHP-FPM იყენებს Unix სოკეტებს, ამიტომ თქვენი listen დირექტივა სავარაუდოდ ასე გამოიყურება:

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

შეგიძლიათ შეცვალოთ ის ნებისმიერი სასურველი სახელით, მაგრამ კიდევ ერთხელ გირჩევთ, რომ კონფიგურაციის ფაილის სახელის მსგავსი რამ გამოიყენოთ, მაგალითად, შეგიძლიათ დააყენოთ ის შემდეგნაირად:

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

კარგი, მაშინ შეინახეთ ფაილი და გამოდით ტექსტური რედაქტორიდან.

ნაწილი 2 - NGINX ვირტუალური მასპინძლის კონფიგურაციის განახლება

ახლა თქვენ უნდა გახსნათ NGINX ვირტუალური ჰოსტის ფაილი FastCGI კონფიგურაციით, რომლის შეცვლაც გსურთ ახალ პულზე - უფრო სწორად, ახალ სოკეტთან დაკავშირება.

Ubuntu 14.04-ზე ნაგულისხმევად, ეს პარამეტრები ინახება /etc/nginx/sites-available ფაილში, თუმცა მათი განსაზღვრა სხვაგანაც შეიძლება. ალბათ ყველაზე უკეთ იცით, სად მდებარეობს თქვენი ვირტუალური ჰოსტის კონფიგურაციები ;-)

გახსენით შესაბამისი კონფიგურაციის ფაილი თქვენს საყვარელ ტექსტურ რედაქტორში და მოძებნეთ fastcgi_pass დირექტივა (რომელიც უნდა იყოს მდებარეობის კონტექსტში), რომელიც განსაზღვრავს PHP-FPM სოკეტს. თქვენ უნდა შეცვალოთ ეს მნიშვნელობა ისე, რომ ის შეესაბამებოდეს პირველ ეტაპზე შექმნილ PHP-FPM პულის ახალ კონფიგურაციას, ამიტომ ჩვენი მაგალითის გაგრძელებით, თქვენ შეცვლით ამას შემდეგნაირად:

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

შემდეგ შეინახეთ და დახურეთ ეს ფაილიც. თითქმის დაასრულეთ.

ნაწილი 3 - PHP-FPM-ის და NGINX-ის გადატვირთვა

კონფიგურაციის ცვლილებების გამოსაყენებლად, გადატვირთეთ როგორც PHP-FPM, ასევე NGINX. შესაძლოა, გადატვირთვის ნაცვლად გადატვირთვა საკმარისი იყოს, მაგრამ მე ვფიქრობ, რომ ეს ცოტა არაეფექტურია, იმისდა მიხედვით, თუ რომელი პარამეტრებია შეცვლილი. კონკრეტულ შემთხვევაში, მინდოდა, რომ ძველი PHP-FPM შვილობილი პროცესები მაშინვე გაჩერებულიყო, ამიტომ PHP-FPM-ის გადატვირთვა იყო საჭირო, მაგრამ NGINX-ისთვის გადატვირთვა შეიძლება საკმარისი იყოს. სცადეთ თავად.

sudo service php5-fpm restart
sudo service nginx restart

და ვოილა, თქვენ დაასრულეთ. თუ ყველაფერი სწორად გააკეთეთ, თქვენს მიერ მოდიფიცირებული ვირტუალური ჰოსტი ახლა უნდა იყენებდეს ახალ PHP-FPM პულს და არ უნდა უზიარებდეს შვილობილ პროცესებს სხვა ვირტუალურ ჰოსტებს.

გააზიარე Bluesky-ზეგააზიარეთ Facebook-ზეგააზიარეთ LinkedIn-ზეგააზიარეთ Tumblr-ზეგააზიარეთ X-ზეგააზიარეთ LinkedIn-ზეPinterest-ზე დამაგრება

მიკელ კრისტენსენი

ავტორის შესახებ

მიკელ კრისტენსენი
მაიკლ არის miklix.com-ის შემქმნელი და მფლობელი. მას აქვს 20 წელზე მეტი გამოცდილება, როგორც პროფესიონალი კომპიუტერული პროგრამისტი/პროგრამული უზრუნველყოფის შემქმნელი და ამჟამად მუშაობს სრულ განაკვეთზე დიდ ევროპულ IT კორპორაციაში. როდესაც ბლოგს არ წერს, თავისუფალ დროს ატარებს ინტერესების, ჰობიებისა და აქტივობების უზარმაზარ სპექტრზე, რაც შეიძლება გარკვეულწილად აისახოს ამ ვებსაიტზე გაშუქებულ თემებზე.