NGINX में अलग PHP-FPM पूल कैसे सेट करें
प्रकाशित: 15 फ़रवरी 2025 को 11:53:17 am UTC बजे
आखरी अपडेट: 12 जनवरी 2026 को 8:30:11 am UTC बजे
इस आर्टिकल में, मैं कई PHP-FPM पूल चलाने और FastCGI के ज़रिए उनसे NGINX कनेक्ट करने के लिए ज़रूरी कॉन्फ़िगरेशन स्टेप्स के बारे में बताऊँगा, जिससे वर्चुअल होस्ट के बीच प्रोसेस सेपरेशन और आइसोलेशन हो सके।
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” को उस नाम से बदलें जो आप अपने पूल को देना चाहते हैं।
अब नैनो या अपनी पसंद के किसी भी टेक्स्ट एडिटर का इस्तेमाल करके नई फ़ाइल खोलें और अपने मकसद के हिसाब से इसे एडजस्ट करें। आप शायद चाइल्ड प्रोसेस नंबर और शायद यह भी बदलना चाहेंगे कि पूल किस यूज़र और ग्रुप के तहत चलता है, लेकिन दो सेटिंग्स जो आपको ज़रूर बदलनी होंगी, वे हैं पूल का नाम और वह सॉकेट जिसे वह सुन रहा है, नहीं तो यह मौजूदा पूल के साथ कॉन्फ़्लिक्ट करेगा और चीज़ें काम करना बंद कर देंगी।
पूल का नाम फ़ाइल के ऊपर, स्क्वायर ब्रैकेट में है। डिफ़ॉल्ट रूप से यह [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 पूल का इस्तेमाल करेगा और किसी दूसरे वर्चुअल होस्ट के साथ चाइल्ड प्रोसेस शेयर नहीं करेगा।
