এনজিআইএনএক্সে পৃথক পিএইচপি-এফপিএম পুল কীভাবে সেট আপ করবেন
প্রকাশিত: ১৫ ফেব্রুয়ারী, ২০২৫ এ ১১:৫৪:৩৭ AM UTC
সর্বশেষ আপডেট: ১২ জানুয়ারী, ২০২৬ এ ৮:৩০:১৫ AM UTC
এই প্রবন্ধে, আমি একাধিক PHP-FPM পুল চালানোর জন্য এবং FastCGI এর মাধ্যমে NGINX-কে তাদের সাথে সংযুক্ত করার জন্য প্রয়োজনীয় কনফিগারেশন পদক্ষেপগুলি নিয়ে আলোচনা করব, যা ভার্চুয়াল হোস্টগুলির মধ্যে প্রক্রিয়া পৃথকীকরণ এবং বিচ্ছিন্নকরণকে অনুমতি দেয়।
How to Set Up Separate PHP-FPM Pools in NGINX
এই পোস্টের তথ্যগুলি উবুন্টু সার্ভার ১৪.০৪ x৬৪-তে চলমান NGINX ১.৪.৬ এবং PHP-FPM ৫.৫.৯-এর উপর ভিত্তি করে তৈরি। এটি অন্যান্য সংস্করণের জন্য বৈধ হতে পারে আবার নাও হতে পারে। (আপডেট: আমি নিশ্চিত করতে পারি যে উবুন্টু সার্ভার ২৪.০৪, PHP-FPM ৮.৩ এবং NGINX ১.২৪.০-এর জন্য, এই পোস্টের সমস্ত নির্দেশাবলী এখনও কাজ করে)
একই পুলে সবকিছু চালানোর পরিবর্তে একাধিক PHP-FPM চাইল্ড প্রসেস পুল স্থাপনের অনেক সুবিধা রয়েছে। নিরাপত্তা, বিচ্ছেদ/বিচ্ছিন্নতা এবং রিসোর্স ম্যানেজমেন্ট কয়েকটি প্রধান সুবিধা হিসেবে মনে আসে।
আপনার প্রেরণা যাই হোক না কেন, এই পোস্টটি আপনাকে এটি করতে সাহায্য করবে :-)
পর্ব ১ – একটি নতুন PHP-FPM পুল সেট আপ করা
প্রথমে, আপনাকে সেই ডিরেক্টরিটি খুঁজে বের করতে হবে যেখানে PHP-FPM তার পুল কনফিগারেশন সংরক্ষণ করে। উবুন্টু 14.04 এ, এটি ডিফল্টরূপে /etc/php5/fpm/pool.d। সম্ভবত সেখানে ইতিমধ্যেই www.conf নামে একটি ফাইল রয়েছে, যা ডিফল্ট পুলের কনফিগারেশন ধারণ করে। যদি আপনি আগে সেই ফাইলটি না দেখে থাকেন তবে সম্ভবত আপনার এটি পরীক্ষা করে আপনার সেটআপের জন্য সেটিংস পরিবর্তন করা উচিত কারণ ডিফল্টগুলি মোটামুটি কম শক্তিসম্পন্ন সার্ভারের জন্য, তবে আপাতত এটির একটি অনুলিপি তৈরি করুন যাতে আমাদের স্ক্র্যাচ থেকে শুরু করতে না হয়:
অবশ্যই, "mypool" এর পরিবর্তে আপনার পুলের নাম যা রাখতে চান তা দিন।
এখন ন্যানো অথবা আপনার পছন্দের যেকোনো টেক্সট এডিটর ব্যবহার করে নতুন ফাইলটি খুলুন এবং আপনার উদ্দেশ্য অনুসারে এটি সামঞ্জস্য করুন। আপনি সম্ভবত চাইল্ড প্রসেস নম্বর এবং সম্ভবত কোন ব্যবহারকারী এবং গ্রুপের অধীনে পুলটি চলছে তা পরিবর্তন করতে চাইবেন, তবে আপনাকে অবশ্যই দুটি সেটিংস পরিবর্তন করতে হবে তা হল পুলের নাম এবং এটি যে সকেটটি শুনছে তা, অন্যথায় এটি বিদ্যমান পুলের সাথে সাংঘর্ষিক হবে এবং জিনিসগুলি কাজ করা বন্ধ করে দেবে।
পুলের নামটি ফাইলের উপরের দিকে, বর্গাকার বন্ধনীতে আবদ্ধ। ডিফল্টরূপে এটি [www]। আপনি যা চান তা পরিবর্তন করুন; আমি কনফিগারেশন ফাইলের নামকরণের মতোই এটি করার পরামর্শ দিচ্ছি, তাই এই উদাহরণের জন্য এটি [mypool] করুন। আপনি যদি এটি পরিবর্তন না করেন, তাহলে মনে হচ্ছে PHP-FPM শুধুমাত্র সেই নামের প্রথম কনফিগারেশন ফাইলটি লোড করবে, যা সম্ভবত জিনিসগুলি নষ্ট করবে।
এরপর আপনাকে যে সকেট বা ঠিকানাটি শুনছেন তা পরিবর্তন করতে হবে, যা listen directive দ্বারা সংজ্ঞায়িত করা হয়। ডিফল্টরূপে, PHP-FPM Unix sockets ব্যবহার করে তাই আপনার listen directive সম্ভবত এইরকম দেখাবে:
আপনি এটিকে আপনার পছন্দের যেকোনো বৈধ নামে পরিবর্তন করতে পারেন, তবে আবারও, আমি কনফিগারেশন ফাইলের নামের অনুরূপ কিছু ব্যবহার করার পরামর্শ দিচ্ছি, যাতে আপনি এটিকে এখানে সেট করতে পারেন:
ঠিক আছে, তাহলে ফাইলটি সংরক্ষণ করুন এবং টেক্সট এডিটর থেকে প্রস্থান করুন।
পার্ট ২ – NGINX ভার্চুয়াল হোস্ট কনফিগারেশন আপডেট করুন
এখন আপনাকে NGINX ভার্চুয়াল হোস্ট ফাইলটি খুলতে হবে যার FastCGI কনফিগারেশনটি আপনি একটি নতুন পুলে পরিবর্তন করতে চান - অথবা বরং, নতুন সকেটে সংযোগ করুন।
উবুন্টু ১৪.০৪-এ ডিফল্টরূপে, এগুলি /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 পুল ব্যবহার করবে এবং অন্য কোনও ভার্চুয়াল হোস্টের সাথে চাইল্ড প্রসেস শেয়ার করবে না।
