NGINX मा छुट्टै PHP-FPM पूलहरू कसरी सेट अप गर्ने
प्रकाशित: २०२५ फेब्रुअरी १५: ११:५६:३६ 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 चाइल्ड प्रोसेस पूलहरू सेटअप गर्नुका धेरै फाइदाहरू छन्। सुरक्षा, पृथकीकरण/पृथकीकरण र स्रोत व्यवस्थापन केही प्रमुख फाइदाहरूको रूपमा दिमागमा आउँछन्।
तपाईंको प्रेरणा जेसुकै भए पनि, यो पोस्टले तपाईंलाई त्यसो गर्न मद्दत गर्नेछ :-)
भाग १ – नयाँ PHP-FPM पूल सेटअप गर्नुहोस्
पहिला, तपाईंले PHP-FPM ले आफ्नो पूल कन्फिगरेसनहरू भण्डारण गर्ने डाइरेक्टरी पत्ता लगाउनु पर्छ। Ubuntu 14.04 मा, यो पूर्वनिर्धारित रूपमा /etc/php5/fpm/pool.d हो। त्यहाँ सम्भवतः पहिले नै www.conf नामक फाइल छ, जसले पूर्वनिर्धारित पूलको कन्फिगरेसन राख्छ। यदि तपाईंले पहिले त्यो फाइल हेर्नुभएको छैन भने, सम्भावना छ कि तपाईंले यसलाई मार्फत जानुपर्छ र आफ्नो सेटअपको लागि यसमा सेटिङहरू ट्वीक गर्नुपर्छ किनकि पूर्वनिर्धारितहरू एकदमै कम पावर भएको सर्भरको लागि हुन्, तर अहिलेको लागि यसको प्रतिलिपि बनाउनुहोस् ताकि हामीले स्क्र्याचबाट सुरु गर्नु नपरोस्:
अवश्य पनि, "mypool" लाई तपाईंले आफ्नो पूललाई जे नाम दिन चाहनुहुन्छ त्यही नामले बदल्नुहोस्।
अब न्यानो वा तपाईंले चाहनुभएको कुनै पनि टेक्स्ट एडिटर प्रयोग गरेर नयाँ फाइल खोल्नुहोस् र आफ्नो उद्देश्य अनुरूप समायोजन गर्नुहोस्। तपाईंले सम्भवतः चाइल्ड प्रोसेस नम्बरहरू र सम्भवतः कुन प्रयोगकर्ता र समूह अन्तर्गत पूल चल्छ भनेर समायोजन गर्न चाहनुहुन्छ, तर तपाईंले बिल्कुल परिवर्तन गर्नुपर्ने दुई सेटिङहरू पूलको नाम र यसले सुनिरहेको सकेट हुन्, अन्यथा यो अवस्थित पूलसँग द्वन्द्वमा पर्नेछ र चीजहरूले काम गर्न बन्द गर्नेछन्।
पूलको नाम फाइलको माथिल्लो भागमा छ, वर्ग कोष्ठकमा बन्द गरिएको छ। पूर्वनिर्धारित रूपमा यो [www] हो। यसलाई तपाईंले चाहेको जस्तो परिवर्तन गर्नुहोस्; म तपाईंले कन्फिगरेसन फाइलको नाम दिए जस्तै सुझाव दिन्छु, त्यसैले यस उदाहरणको लागि यसलाई [mypool] मा परिवर्तन गर्नुहोस्। यदि तपाईंले यसलाई परिवर्तन गर्नुभएन भने, यस्तो देखिन्छ कि PHP-FPM ले त्यो नाम भएको पहिलो कन्फिगरेसन फाइल मात्र लोड गर्नेछ, जसले चीजहरू बिग्रने सम्भावना हुन्छ।
त्यसपछि तपाईंले सुन्नु भएको सकेट वा ठेगाना परिवर्तन गर्नुपर्नेछ, जुन सुन्न निर्देशनद्वारा परिभाषित गरिएको छ। पूर्वनिर्धारित रूपमा, PHP-FPM ले युनिक्स सकेटहरू प्रयोग गर्दछ त्यसैले तपाईंको सुन्न निर्देशन सम्भवतः यस्तो देखिनेछ:
तपाईंले यसलाई जुनसुकै मान्य नाममा परिवर्तन गर्न सक्नुहुन्छ, तर फेरि, म कन्फिगरेसन फाइलनाम जस्तै केहिसँग टाँस्न सुझाव दिन्छु, त्यसैले तपाईंले उदाहरणका लागि यसलाई सेट गर्न सक्नुहुन्छ:
ठीक छ, त्यसपछि, फाइल बचत गर्नुहोस् र टेक्स्ट एडिटरबाट बाहिर निस्कनुहोस्।
भाग २ - NGINX भर्चुअल होस्ट कन्फिगरेसन अपडेट गर्नुहोस्
अब तपाईंले NGINX भर्चुअल होस्ट फाइल खोल्न आवश्यक छ जुन FastCGI कन्फिगरेसनलाई तपाईंले नयाँ पूलमा परिवर्तन गर्न चाहनुहुन्छ - वा बरु, नयाँ सकेटमा जडान गर्नुहोस्।
Ubuntu १४.०४ मा पूर्वनिर्धारित रूपमा, यी /etc/nginx/sites-available अन्तर्गत भण्डारण गरिएका छन्, तर अन्यत्र पनि परिभाषित गर्न सकिन्छ। तपाईंको भर्चुअल होस्ट कन्फिगरेसनहरू कहाँ अवस्थित छन् भन्ने कुरा तपाईंलाई राम्रोसँग थाहा छ ;-)
तपाईंको मनपर्ने टेक्स्ट एडिटरमा सान्दर्भिक कन्फिगरेसन फाइल खोल्नुहोस् र PHP-FPM सकेट परिभाषित गर्ने fastcgi_pass निर्देशिका (जुन स्थान सन्दर्भमा हुनुपर्छ) खोज्नुहोस्। तपाईंले यो मान परिवर्तन गर्नुपर्छ ताकि यो तपाईंले पहिलो चरण अन्तर्गत बनाउनुभएको नयाँ PHP-FPM पूल कन्फिगरेसनसँग मेल खान्छ, त्यसैले हाम्रो उदाहरण जारी राख्दै तपाईंले यसलाई निम्नमा परिवर्तन गर्नुहुनेछ:
fastcgi_pass युनिक्स:/var/run/php5-fpm-mypool.sock;
त्यसपछि त्यो फाइल पनि सेभ गर्नुहोस् र बन्द गर्नुहोस्। अब तपाईंको काम लगभग सकियो।
भाग ३ – PHP-FPM र NGINX पुन: सुरु गर्नुहोस्
तपाईंले गर्नुभएका कन्फिगरेसन परिवर्तनहरू लागू गर्न, PHP-FPM र NGINX दुवै पुन: सुरु गर्नुहोस्। पुन: सुरु गर्नुको सट्टा पुन: लोड गर्न पर्याप्त हुन सक्छ , तर कुन सेटिङहरू परिवर्तन गरिएका छन् भन्ने आधारमा मलाई यो अलि हिट एण्ड मिस भएको लाग्छ। विशेष अवस्थामा, म पुरानो PHP-FPM चाइल्ड प्रक्रियाहरू तुरुन्तै मरेको चाहन्थें, त्यसैले PHP-FPM पुन: सुरु गर्नु आवश्यक थियो, तर NGINX को लागि पुन: लोड पर्याप्त हुन सक्छ। यसलाई आफैं प्रयास गर्नुहोस्।
sudo service nginx restart
अनि भोइला, तपाईंले काम सक्नुभयो। यदि तपाईंले सबै कुरा सही तरिकाले गर्नुभयो भने, तपाईंले परिमार्जन गर्नुभएको भर्चुअल होस्टले अब नयाँ PHP-FPM पूल प्रयोग गरिरहेको हुनुपर्छ र कुनै पनि अन्य भर्चुअल होस्टहरूसँग चाइल्ड प्रक्रियाहरू साझा गर्नु हुँदैन।