Miklix

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

გამოქვეყნებულია: 15 თებერვალი, 2025, 11:55:49 UTC

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


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

How to Set Up Separate PHP-FPM Pools in NGINX

ამ პოსტში ინფორმაცია ეფუძნება NGINX 1.4.6 და PHP-FPM 5.5.9-ს, რომელიც მუშაობს Ubuntu Server 14.04 x64-ზე. ეს შეიძლება იყოს ან არ იყოს მოქმედი სხვა ვერსიებისთვის. (განახლება: შემიძლია დავადასტურო, რომ 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" იმით, რასაც გსურთ თქვენი აუზი დაერქვას.

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

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

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

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

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

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

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


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

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

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

გახსენით შესაბამისი კონფიგურაციის ფაილი თქვენს საყვარელ ტექსტურ რედაქტორში და მოძებნეთ 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 კორპორაციაში. როდესაც ბლოგს არ წერს, თავისუფალ დროს ატარებს ინტერესების, ჰობიებისა და აქტივობების უზარმაზარ სპექტრზე, რაც შეიძლება გარკვეულწილად აისახოს ამ ვებსაიტზე გაშუქებულ თემებზე.