NGINX में अलग PHP-FPM पूल कैसे सेट करें
प्रकाशित: 15 फ़रवरी 2025 को 11:53:17 am UTC बजे
इस लेख में, मैं कई PHP-FPM पूल चलाने और FastCGI के माध्यम से NGINX को उनसे जोड़ने के लिए आवश्यक कॉन्फ़िगरेशन चरणों पर चर्चा करूंगा, जिससे वर्चुअल होस्ट के बीच प्रक्रिया पृथक्करण और अलगाव की अनुमति मिलती है।
How to Set Up Separate PHP-FPM Pools in NGINX
इस पोस्ट में दी गई जानकारी Ubuntu सर्वर 14.04 x64 पर चलने वाले NGINX 1.4.6 और PHP-FPM 5.5.9 पर आधारित है। यह अन्य संस्करणों के लिए मान्य हो भी सकता है और नहीं भी। (अपडेट: मैं पुष्टि कर सकता हूँ कि Ubuntu सर्वर 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 नामक एक फ़ाइल है, जो डिफ़ॉल्ट पूल के लिए कॉन्फ़िगरेशन रखती है। यदि आपने पहले उस फ़ाइल को नहीं देखा है, तो संभावना है कि आपको इसे देखना चाहिए और अपने सेटअप के लिए इसमें सेटिंग्स को बदलना चाहिए क्योंकि डिफ़ॉल्ट एक काफी कमज़ोर सर्वर के लिए हैं, लेकिन अभी के लिए बस इसकी एक कॉपी बना लें ताकि हमें स्क्रैच से शुरू न करना पड़े:
बेशक, "माईपूल" को उस नाम से बदलें जो आप अपने पूल को देना चाहते हैं।
अब नैनो या जो भी टेक्स्ट एडिटर आपको पसंद हो उसका उपयोग करके नई फ़ाइल खोलें और इसे अपने उद्देश्य के अनुसार समायोजित करें। आप शायद चाइल्ड प्रोसेस नंबर और संभवतः पूल किस उपयोगकर्ता और समूह के अंतर्गत चलता है, उसमें बदलाव करना चाहेंगे, लेकिन दो सेटिंग्स जिन्हें आपको बिल्कुल बदलना होगा, वे हैं पूल का नाम और वह सॉकेट जिसे वह सुन रहा है, अन्यथा यह मौजूदा पूल के साथ संघर्ष करेगा और चीजें काम करना बंद कर देंगी।
पूल का नाम फ़ाइल के शीर्ष के पास है, जो वर्गाकार कोष्ठकों में संलग्न है। डिफ़ॉल्ट रूप से यह [www] है। इसे आप जो चाहें बदल सकते हैं; मैं वही सुझाव देता हूं जो आपने कॉन्फ़िगरेशन फ़ाइल का नाम दिया है, इसलिए इस उदाहरण के लिए इसे [mypool] में बदल दें। यदि आप इसे नहीं बदलते हैं, तो ऐसा लगता है कि PHP-FPM केवल उस नाम के साथ पहली कॉन्फ़िगरेशन फ़ाइल लोड करेगा, जिससे चीज़ें टूटने की संभावना है।
फिर आपको उस सॉकेट या पते को बदलने की ज़रूरत है जिसे आप सुन रहे हैं, जिसे listen निर्देश द्वारा परिभाषित किया गया है। डिफ़ॉल्ट रूप से, PHP-FPM Unix सॉकेट का उपयोग करता है इसलिए आपका listen निर्देश संभवतः इस तरह दिखेगा:
आप इसे अपनी इच्छानुसार किसी भी वैध नाम में बदल सकते हैं, लेकिन पुनः, मैं कॉन्फ़िगरेशन फ़ाइल नाम के समान कुछ रखने का सुझाव देता हूँ, अतः आप उदाहरण के लिए इसे इस प्रकार सेट कर सकते हैं:
ठीक है, फ़ाइल को सेव करें और टेक्स्ट एडिटर से बाहर निकलें।
भाग 2 – NGINX वर्चुअल होस्ट कॉन्फ़िगरेशन अपडेट करें
अब आपको NGINX वर्चुअल होस्ट फ़ाइल को FastCGI कॉन्फ़िगरेशन के साथ खोलना होगा जिसे आप नए पूल में बदलना चाहते हैं - या बल्कि, नए सॉकेट से कनेक्ट करना चाहते हैं।
डिफ़ॉल्ट रूप से Ubuntu 14.04 पर, ये /etc/nginx/sites-available के अंतर्गत संग्रहीत होते हैं, लेकिन इन्हें कहीं और भी परिभाषित किया जा सकता है। आप शायद सबसे अच्छी तरह जानते हैं कि आपके वर्चुअल होस्ट कॉन्फ़िगरेशन कहाँ स्थित हैं ;-)
अपने पसंदीदा टेक्स्ट एडिटर में संबंधित कॉन्फ़िगरेशन फ़ाइल खोलें और PHP-FPM सॉकेट को परिभाषित करने वाले fastcgi_pass निर्देश (जो किसी स्थान संदर्भ में होना चाहिए) को देखें। आपको इस मान को बदलना होगा ताकि यह आपके द्वारा चरण एक के तहत बनाए गए नए PHP-FPM पूल कॉन्फ़िगरेशन से मेल खाए, इसलिए हमारे उदाहरण को जारी रखते हुए आप इसे इस प्रकार बदलेंगे:
fastcgi_pass यूनिक्स:/var/run/php5-fpm-mypool.sock;
फिर उस फ़ाइल को भी सेव करके बंद कर दें। अब आपका काम लगभग पूरा हो चुका है।
भाग 3 – PHP-FPM और NGINX को पुनः आरंभ करें
आपके द्वारा किए गए कॉन्फ़िगरेशन परिवर्तनों को लागू करने के लिए, PHP-FPM और NGINX दोनों को पुनः आरंभ करें। पुनः आरंभ करने के बजाय पुनः लोड करना पर्याप्त हो सकता है, लेकिन मुझे लगता है कि यह थोड़ा हिट और मिस है, यह इस बात पर निर्भर करता है कि कौन सी सेटिंग बदली गई है। विशेष मामले में, मैं चाहता था कि पुरानी PHP-FPM चाइल्ड प्रक्रियाएँ तुरंत खत्म हो जाएँ, इसलिए PHP-FPM को पुनः आरंभ करना आवश्यक था, लेकिन NGINX के लिए पुनः लोड करना पर्याप्त हो सकता है। इसे स्वयं आज़माएँ।
sudo service nginx restart
और बस, आपका काम हो गया। अगर आपने सब कुछ सही तरीके से किया है, तो आपके द्वारा संशोधित वर्चुअल होस्ट अब नए PHP-FPM पूल का उपयोग करेगा और किसी अन्य वर्चुअल होस्ट के साथ चाइल्ड प्रोसेस को साझा नहीं करेगा।