როგორ დავაყენოთ ცალკე 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, რომელიც შეიცავს ნაგულისხმევი აუზის კონფიგურაციას. თუ ეს ფაილი აქამდე არ გინახავთ, დიდი შანსია, რომ გადახედოთ მას და შეცვალოთ პარამეტრები თქვენი კონფიგურაციისთვის, რადგან ნაგულისხმევი პარამეტრები განკუთვნილია საკმაოდ სუსტი სერვერისთვის, მაგრამ ახლა უბრალოდ შექმენით მისი ასლი, რათა თავიდან არ დავიწყოთ:
რა თქმა უნდა, „mypool“ შეცვალეთ იმ სახელით, რომელიც გსურთ, რომ თქვენს აუზს ერქვას.
ახლა გახსენით ახალი ფაილი nano-ს ან თქვენთვის სასურველი ტექსტური რედაქტორის გამოყენებით და შეცვალეთ იგი თქვენი მიზნის შესაბამისად. სავარაუდოდ, დაგჭირდებათ შვილობილი პროცესების ნომრების და შესაძლოა, იმ მომხმარებლისა და ჯგუფის შეცვლა, რომლის ქვეშაც მუშაობს აუზი, მაგრამ აუცილებლად უნდა შეცვალოთ ორი პარამეტრი: აუზის სახელი და სოკეტი, რომელსაც ის იყენებს, წინააღმდეგ შემთხვევაში ის კონფლიქტში შევა არსებულ აუზთან და ყველაფერი შეწყვეტს მუშაობას.
პულის სახელი ფაილის ზედა ნაწილშია, კვადრატულ ფრჩხილებში ჩასმული. ნაგულისხმევად ეს არის [www]. შეცვალეთ ეს სახელი ნებისმიერი სახელით; გირჩევთ, კონფიგურაციის ფაილს იგივე სახელი მიანიჭოთ, რაც ამ მაგალითისთვის დაარქვით [mypool]. თუ მას არ შეცვლით, როგორც ჩანს, PHP-FPM მხოლოდ პირველ კონფიგურაციის ფაილს ჩატვირთავს ამ სახელით, რაც, სავარაუდოდ, პრობლემებს შეუქმნის.
შემდეგ თქვენ უნდა შეცვალოთ სოკეტი ან მისამართი, რომელსაც უსმენთ, რომელიც განსაზღვრულია listen დირექტივით. ნაგულისხმევად, PHP-FPM იყენებს Unix სოკეტებს, ამიტომ თქვენი listen დირექტივა სავარაუდოდ ასე გამოიყურება:
შეგიძლიათ შეცვალოთ ის ნებისმიერი სასურველი სახელით, მაგრამ კიდევ ერთხელ გირჩევთ, რომ კონფიგურაციის ფაილის სახელის მსგავსი რამ გამოიყენოთ, მაგალითად, შეგიძლიათ დააყენოთ ის შემდეგნაირად:
კარგი, მაშინ შეინახეთ ფაილი და გამოდით ტექსტური რედაქტორიდან.
ნაწილი 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 nginx restart
და ვოილა, თქვენ დაასრულეთ. თუ ყველაფერი სწორად გააკეთეთ, თქვენს მიერ მოდიფიცირებული ვირტუალური ჰოსტი ახლა უნდა იყენებდეს ახალ PHP-FPM პულს და არ უნდა უზიარებდეს შვილობილ პროცესებს სხვა ვირტუალურ ჰოსტებს.
