ইউনিক্স বা টিসিপি/আইপি সকেট ব্যবহার করে কীভাবে এনজিআইএনএক্সকে পিএইচপি-এফপিএমের সাথে সংযুক্ত করবেন


এনজিআইএনএক্স ওয়েব সার্ভার (বিপরীত প্রক্সি হিসাবে) ফাস্টসিজিআই প্রোটোকলের মাধ্যমে (ব্যাকএন্ড অ্যাপ্লিকেশন সার্ভার হিসাবে) পিএইচপি অ্যাপ্লিকেশনগুলি সরবরাহ করে। এনজিআইএনএক্স পিএইচপি-এফপিএম (ফাস্টসিজিআই প্রসেসার ম্যানেজার) নিয়োগ করে, একটি বিকল্প পিএইচপি ফাস্টপিজিআই বাস্তবায়ন যা সিজিআই অনুরোধের জন্য শ্রবণ করে ডেমোন হিসাবে পটভূমিতে চলে runs এটি ভারী লোডযুক্ত ওয়েবসাইট বা ওয়েব অ্যাপ্লিকেশনগুলিকে শক্তিশালী করার জন্য ডিজাইন করা অতিরিক্ত বৈশিষ্ট্যগুলির সাথে আসে তবে এটি কোনও আকারের সাইটের জন্য ব্যবহার করা যেতে পারে।

পিএইচপি-এফপিএম কেবলমাত্র ফাস্টসিজিআই রিসোর্স পুলগুলির কনফিগারেশনকে সমর্থন করে না, তবে এটি ফাস্টসিজিআই ইন্টার্নালগুলির অনেকগুলি উন্নতি করে এবং ত্রুটি প্রতিবেদন, স্ক্রিপ্ট সমাপ্তি এবং আরও অনেক কিছু বাড়িয়ে তোলে। এটিতে পিএইচপি ডেমোনাইজেশন, প্রক্রিয়া পরিচালনা, একটি গতিশীল সংখ্যক প্রক্রিয়া রয়েছে যা থেকে অনুরোধগুলি আসতে পারে, ত্রুটির শিরোনাম, ত্বরিত আপলোড সমর্থন এবং আরও অনেক কিছু।

এনজিআইএনএক্সের ফাস্টসিজিআই অনুরোধগুলি গ্রহণ করতে, পিএইচপি-এফপিএম হয় কোনও টিসিপি/আইপি সকেট বা ইউনিক্স ডোমেন সকেটে শুনতে পারে। আপনি যে কোনও ঠিকানাটি ব্যবহার করার জন্য চয়ন করেন এনজিআইএনএক্স ফাস্টসিগি_পাস নির্দেশ ব্যবহার করে পিএইচপি-এফপিএমের সাথে সংযোগ করতে (প্রক্সি অনুরোধগুলি) ব্যবহার করে।

এই গাইডটি ব্যাখ্যা করে যে কীভাবে পিএইচপি-এফপিএম ব্যবহার করে সার্ভার পিএইচপি অ্যাপ্লিকেশনগুলিতে এনজিআইএনএক্স কনফিগার করতে হয়। এনজিআইএনএক্সকে পিএইচপি-এফপিএমের সাথে সংযুক্ত করতে কখন একটি টিসিপি/আইপি সকেট বা ইউনিক্স ডোমেন সকেট ব্যবহার করবেন এবং তা কেন তা বর্ণনা করে।

এই গাইডটি ধরেছে যে আপনি আপনার লিনাক্স সিস্টেমে এনজিআইএনএক্স এবং পিএইচপি-এফপিএম ইনস্টল করেছেন, অন্যথায়, দেখুন:

  • CentOS 8
  • এ কীভাবে এলইএমপি সার্ভার ইনস্টল করবেন
  • উবুন্টু 20.04 সার্ভারে কীভাবে এলইএমপি স্ট্যাক পিএইচপিএমইএডমিন ইনস্টল করবেন
  • কীভাবে এনজিআইএনএক্স, মাইএসকিউএল/মারিয়াডিবি এবং পিএইচপি RHEL 8 এ ইনস্টল করবেন
  • ডেবিয়ান 10 সার্ভারে কীভাবে এলইএমপি ইনস্টল করবেন

ইউএনআইএক্স ডোমেন (বা আইপিসি) সকেটগুলি আন্ত-প্রক্রিয়া যোগাযোগের একটি মাধ্যম (আইপিসি) যা একই অপারেটিং সিস্টেমে চলমান প্রক্রিয়াগুলির মধ্যে দক্ষ ডেটা এক্সচেঞ্জের অনুমতি দেয় যখন টিসিপি/আইপি (বা ইন্টারনেট ডোমেন) সকেটগুলি কোনও নেটওয়ার্কের মাধ্যমে যোগাযোগের জন্য প্রক্রিয়াগুলিকে অনুমতি দেয়।

কোনও টিসিপি/আইপি সকেটের বিপরীতে যা কোনও আইপি ঠিকানা এবং পোর্ট (যেমন 127.0.0.1:9000) দ্বারা সার্ভার সনাক্ত করে, আপনি কোনও ইউএনআইএক্স ডোমেন সকেটে কোনও ফাইলের পথের নাম ব্যবহার করে (যেমন/চালান/পিএইচপি-এফপিএম/www) কোনও সার্ভারকে আবদ্ধ করতে পারেন। sock), যা ফাইল সিস্টেমে দৃশ্যমান।

একটি ইউএনআইএক্স ডোমেন সকেট হল একটি বিশেষ ধরণের ফাইল - ফাইল এবং ডিরেক্টরি অনুমতিগুলি এটিতে প্রয়োগ হয় (যেমন অন্য কোনও ইউএনআইএক্স ফাইলের ক্ষেত্রে হয়) এবং হোস্টের কোন প্রক্রিয়া ফাইলটি পড়তে এবং লিখতে পারে তা সীমাবদ্ধ করতে ব্যবহার করা যেতে পারে, (এবং এইভাবে ব্যাকএন্ড সার্ভারের সাথে যোগাযোগ করে)।

এইভাবে, একটি ইউনিক্স ডোমেন সকেট সুরক্ষিত কারণ কেবল স্থানীয় হোস্টের প্রক্রিয়াগুলি এটি ব্যবহার করতে পারে। ফায়ারওয়ালের মতো অতিরিক্ত সুরক্ষা ব্যবস্থাগুলি বাস্তবায়ন না করা হলে একটি টিসিপি/আইপি সকেট ইন্টারনেটের সামনে সুরক্ষিত ঝুঁকি তৈরি করতে পারে।

গুরুত্বপূর্ণভাবে, ইউএনআইএক্স ডোমেন সকেট ব্যবহারের ক্ষেত্রে পারফরম্যান্স সম্পর্কিত টিসিপি/আইপি সকেট ব্যবহার করার মতো নয়, বেশ কয়েকটি পরীক্ষা এবং মানদণ্ড ইউনিক্স ডোমেন সকেটকে দ্রুত প্রমাণিত করেছে। ইউএনআইএক্স ডোমেন সকেটের প্রধান অপূর্ণতা হ'ল এগুলি কম স্কেলযোগ্য, তারা কেবল একই অপারেটিং সিস্টেমের (ওএস) মধ্যে আন্ত-প্রক্রিয়া যোগাযোগকে সমর্থন করে।

আপনি রিসোর্স পুল কনফিগারেশন ফাইলে পিএইচপি-এফপিএম শোনার ঠিকানাটি কনফিগার করতে পারেন। নোট করুন যে পিএইচপি-এফপিএম দিয়ে আপনি বিভিন্ন সেটিংস সহ বেশ কয়েকটি পুল প্রক্রিয়া চালাতে পারেন। ডিফল্ট পুলটিকে www বলা হয়।

রিসোর্স পুল কনফিগারেশন ফাইলের অবস্থান কোনও লিনাক্স সিস্টেমে পিএইচপি এবং পিএইচপি-এফপিএম ইনস্টল করার উপর নির্ভর করে (এটি কোনও ডিফল্ট/একক সংস্করণ বা একাধিক সংস্করণ কিনা)।

উদাহরণস্বরূপ, CentOS 8 এ, একটি একক সংস্করণ সহ, সমস্ত পিএইচপি কনফিগারেশন ফাইলগুলি /etc ডিরেক্টরিতে অবস্থিত এবং ডিফল্ট পিএইচপি-এফপিএম পুল (www) কনফিগারেশন ফাইলটি রয়েছে /etc/php-fpm.d/www.conf:

সমস্ত পিএইচপি কনফিগারেশন ফাইলের তালিকা করতে, নীচের ls কমান্ডটি ব্যবহার করুন।

# ls /etc/php*

উবুন্টু ২০.০৪-তে, পিএইচপি কনফিগারেশন ফাইলগুলি /etc/php// ডিরেক্টরিতে এবং ডিফল্ট পিএইচপি-এফপিএম পুল (www) কনফিগারেশন ফাইলে অবস্থিত /ইত্যাদি/পিএইচপি/ /fpm/pool.d/www.conf :

$ ls /etc/php/7.4/

ইউনিক্স ডোমেন সকেটে শুনতে পিএইচপি-এফপিএম কনফিগার করছে

ইউএনআইএক্স ডোমেন সকেটে শুনতে পিএইচপি-এফপিএম কনফিগার করতে, আপনার প্রিয় পাঠ্য সম্পাদকটি ব্যবহার করে আপনার ডিফল্ট পিএইচপি-এফপিএম পুল কনফিগারেশন ফাইলটি খুলুন।

$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf	#Ubuntu/Debian
OR
# vim /etc/php-fpm.d/www.conf			#CentOS/RHEL/Fedora

তারপরে শোনার নির্দেশিকাটি সন্ধান করুন এবং নীচে ইউএনএক্স ডোমেন সকেটের ফাইলের নামতে সেট করুন। নোট করুন যে বেশিরভাগ ইনস্টলেশন ডিফল্টরূপে একটি ইউএনআইএক্স ডোমেন সকেট ব্যবহার করে।

listen = /run/php/php7.4-fpm.sock	#Ubuntu/Debian
OR
listen = /run/php-fpm/www.sock		#CentOS/RHEL/Fedora

আপনি যদি ইউএনআইএক্স ডোমেন সকেট ব্যবহার করেন তবে এনজিআইএনএক্স ওয়েব সার্ভারের সংযোগের অনুমতি দেওয়ার জন্য আপনাকে ফাইলের জন্য উপযুক্ত পড়ার/লেখার অনুমতিগুলিও সেট করতে হবে। ডিফল্টরূপে, এনজিআইএনএক্স সেন্টস/আরএইচএল/ফেডোরায় এবং উবুন্টু এবং ডেবিয়ানের www-ডেটা হিসাবে ব্যবহারকারী এবং গ্রুপ এনজিঞ্জ হিসাবে কাজ করে।

সুতরাং, শোনো। এছাড়াও, <ڪوড> শোনো.মোড প্যারামিটারটি ব্যবহার করে মোডটি 0660 এ সেট করুন।

------------- On Debian and Ubuntu -------------
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

------------- On CentOS/RHEL and Fedora  -------------
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

নোট করুন যে ইউনিক্স ডোমেন সকেট ফাইলে অনুমতিগুলি সঠিকভাবে সেট না করা থাকলে এনজিআইএনএক্স একটি খারাপ গেটওয়ে ত্রুটি ফিরে আসতে পারে।

টিসিপি/আইপি সকেটে শুনতে পিএইচপি-এফপিএম কনফিগার করছে

যদিও একটি ইউএনআইএক্স ডোমেন সকেট টিসিপি/আইপি সকেটের চেয়ে দ্রুত, তবে পূর্ববর্তীটি কম কম পরিমাণে স্কেলযোগ্য, কারণ এটি কেবল একই ওএসে আন্ত-প্রক্রিয়া যোগাযোগকে সমর্থন করতে পারে। যদি এনজিআইএনএক্স এবং ব্যাকএন্ড অ্যাপ্লিকেশন সার্ভার (পিএইচপি-এফপিএম) বিভিন্ন সিস্টেমে চলছে, সংযোগের জন্য আপনাকে টিসিপি/আইপি সকেট শুনতে পিএইচপি-এফপিএম কনফিগার করতে হবে।

পিএইচপি-এফপিএম পুল কনফিগারেশন ফাইলে, নীচে শোনো ঠিকানা সেট করুন। আপনি যে পোর্টটি চয়ন করেছেন সেটি একই সিস্টেমে অন্য কোনও প্রক্রিয়া বা পরিষেবা ব্যবহার করছে না তা নিশ্চিত করুন।

listen = 127.0.0.1:3000

পিএইচপি-এফপিএম অ্যাপ্লিকেশন সার্ভারের সাথে কাজ করার জন্য এনজিআইএনএক্স কনফিগার করছে

একবার আপনি ঠিকানাটি কনফিগার করে পিএইচপি-এফপিএম শোনার পরে, আপনাকে ভার্চুয়াল সার্ভার ব্লক কনফিগারেশন ফাইলের fastcgi_pass কনফিগারেশন প্যারামিটার ব্যবহার করে সেই ঠিকানার মাধ্যমে প্রক্সির অনুরোধের জন্য NGINX কনফিগার করতে হবে।

উদাহরণস্বরূপ, যদি আপনার ওয়েবসাইটের কনফিগারেশন ফাইলটি /etc/nginx/conf.d/example.com.conf হয়, সম্পাদনার জন্য এটি খুলুন।

# vim /etc/nginx/conf.d/example.com.conf 

.php ফাইলগুলি প্রক্রিয়াকরণের জন্য অবস্থান ব্লকটি সন্ধান করুন এবং <ইউএনএএক্স-তে শুনতে কোনও পিএইচপি-এফপিএম কনফিগার করেছেন যদি নীচে ফাস্টcgi_pass প্যারামিটার সেট করুন ডোমেন সকেট

fastcgi_pass unix:/run/php/php7.4-fpm.sock	#Ubuntu/Debian
OR
fastcgi_pass unix:/run/php-fpm/www.sock		#CentOS/RHEL/Fedora

অথবা আপনি যদি কোনও টিসিপি/আইপি সকেটে শুনতে পিএইচপি-এফপিএম কনফিগার করেন তবে টিসিপি/আইপি ঠিকানা ব্যবহার করুন। যদি ব্যাকএন্ড অ্যাপ্লিকেশন সার্ভার (পিএইচপি-এফপিএম) পৃথক সার্ভারে চলছে (পিএইচপি-এফপিএম ফাস্টসিজিআই সার্ভার চলছে এমন মেশিনের আইপি ঠিকানার সাথে 10.42.0.10 প্রতিস্থাপন করুন)।

fastcgi_pass  10.42.0.10:3000;

গুরুত্বপূর্ণ: সেন্টোস 8-এ, পিএইচপি-এফপিএম পিএইচপি-এফপিএম নামের একটি আপস্ট্রিম ব্লকের মধ্যে /etc/nginx/conf.d/php-fpm.conf ফাইলে একটি আপস্ট্রিম সার্ভার হিসাবে সংজ্ঞায়িত করা হয়েছে।

পুল কনফিগারেশন ফাইলে পিএইচপি-এফপিএম শুনতে পারা কনফিগার করা ঠিকানার উপর নির্ভর করে আপনি এখানে পরিবর্তন করতে পারেন। ডিফল্ট কনফিগারেশনটি ইউএনআইএক্স ডোমেন সকেটে নির্দেশ করে।

upstream php-fpm {
        server unix:/run/php-fpm/www.sock;
}

এবং আপনার সাইটের সার্ভার ব্লক ফাইলটিতে, দেখানো হয়েছে এমনভাবে fastcgi_pass পরামিতিটি সেট করুন।

fastcgi_pass php-fpm;

পিএইচপি-এফপিএম এবং এনজিআইএনএক্স কনফিগারেশনগুলিতে পরিবর্তন করার পরে, নীচের হিসাবে যথাযথতার জন্য তাদের কনফিগারেশন বাক্য গঠনটি পরীক্ষা করুন।

------------- On Debian and Ubuntu -------------
$ sudo php-fpm -t
$ sudo nginx -t

------------- On CentOS/RHEL and Fedora  -------------
# php-fpm -t
# nginx -t

কমান্ড আউটপুটটি কেবলমাত্র প্রধান কনফিগারেশন ফাইল দেখায়, অন্যান্য সমস্ত কনফিগারেশন ফাইলও অন্তর্ভুক্ত এবং পরীক্ষা করা হয়।

এরপরে, সিস্টেমটিটিএল কমান্ডটি ব্যবহার করে পরিবর্তনগুলি প্রয়োগ করতে আপনাকে দুটি পরিষেবা পুনরায় চালু করতে হবে।

------------- On Debian and Ubuntu -------------
$ sudo systemctl restart nginx
$ sudo systemctl restart php7.4-fpm

------------- On CentOS/RHEL and Fedora  -------------
# systemctl restart nginx
# systemctl restart php-fpm

আপনি যদি কোনও ত্রুটি পান তবে আপনি বিড়াল কমান্ডটি ব্যবহার করে এনজিআইএনএক্স এবং পিএইচপি-এফপিএম লগ ফাইলগুলি পরীক্ষা করতে পারেন।

------------- On Debian and Ubuntu -------------
$ cat /var/log/nginx/error.log
$ cat /var/log/php7.4-fpm.log

------------- On CentOS/RHEL and Fedora  -------------
$ cat /var/log/nginx/error.log
$ cat /var/log/php-fpm/www-error.log

আমাদের জন্য এটিই ছিল। নীচের মন্তব্য বিভাগটি প্রশ্ন জিজ্ঞাসা করতে ব্যবহার করা যেতে পারে। আরও তথ্যের জন্য, পিএইচপি-এফপিএম ডকুমেন্টেশন দেখুন।