এসো নিজে করি – এঞ্জিনএক্সের সাথে পিএইচপি এফপিএম ফাস্টসিজিআই মডিউল ইন্টিগ্রেশন

আমরা এর আগের পর্বে দেখেছিলাম কিভাবে এঞ্জিনএক্স ইনস্টল, আপগ্রেড এবং কনফিগার করতে হয়, এবং কিভাবে স্ট্যাটিক ফাইল সার্ভ করতে হয়। এই পর্বে আমরা আলোচনা করবো কিভাবে আমরা এঞ্জিনএক্সের মাধ্যমে পিএইচপি ফাইল সার্ভ করতে হয়।

গত পর্বের শেষে আমাদের ডিফল্ট সার্ভার ব্লক ফাইলটি (/etc/nginx/sites-available/default) দেখতে ছিল নিচের মত। আমরা আজকেও এই ফাইলটি নিয়ে কাজ করব।

server {
	#listen   80; ## listen for ipv4; this line is default and implied
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

	root /usr/share/nginx/www;
	index index.html index.htm;

	# Make site accessible from http://localhost/
	server_name exampledomain.com;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ /index.html;
		# Uncomment to enable naxsi on this location
		# include /etc/nginx/naxsi.rules
	}
}

গত পর্বের শেষে আমাদের ডিফল্ট সার্ভার ব্লক ফাইলটি (/etc/nginx/sites-available/default) দেখতে ছিল নিচের মত। আমরা আজকেও এই ফাইলটি নিয়ে কাজ করব। তবে সার্ভার ব্লক নিয়ে কাজ করার আগে চলুন পিএইচপির ফাস্টসিজিআই মডিউল ইনস্টল করে ফেলি।

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

apt-get install php5-fpm

উপরের কমান্ডটি ফেল করলে আমাদের ম্যানুয়ালী এপিটির সোর্স লিস্ট ফাইল এডিট করতে হবে।

ডেবিয়ান ৭ এর ক্ষেত্রে

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all
deb http://packages.dotdeb.org wheezy-php54 all
deb-src http://packages.dotdeb.org wheezy-php54 all

ডেবিয়ান ৬ এর ক্ষেত্রে

deb http://packages.dotdeb.org squeezy all
deb-src http://packages.dotdeb.org squeezy all
deb http://packages.dotdeb.org squeezy-php54 all
deb-src http://packages.dotdeb.org squeezy-php54 all

এবার /etc/apt/sources.list ফাইলটি সেভ করে টার্মিনালে চলে আসুন। এখন যেটা করতে হবে সেটা হল ডেবিয়ান কে বলে দিতে হবে যে আমাদের সদ্য যোগ করা রিপোজিটরী গুলো ট্রাস্টেবল। সেটার জন্য ডটডেবের সিগনেচার কি ডাউনলোড করে এপিটি প্যাকেজ ম্যানেজারে যোগ করে দিতে হবে। এর জন্য টার্মিনালে নিচের কমান্ড গুলো দিন

wget http://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
rm dotdeb.gpg

এরপরের কাজ খুব সহজ। টার্মিনালে শুধু কমান্ড দিন নিচের মত, ব্যাস আপনার এঞ্জিনএক্স লেটেস্ট ভার্সনে আপগ্রেড হয়ে যাবে

apt-get update
apt-get install php5-fpm

পিএইচপি এফপিএম কনফিগার করা

যেহেতু আমাদের সার্ভারে পিএইচপি এফপিএম মডিউল ইনস্টল করা হয়ে গেছে, এখন প্রয়োজন এনজিনএক্সের সাথে সেটা কনফিগার করা। এজন্য প্রথমে /etc/php5/fpm/pool.d/www.conf ফাইল টি আপনার পছন্দের এডিটর দিয়ে ওপেন করুন। বাই ডিফল্ট /etc/php5/fpm/pool.d/www.conf ফাইলের কনটেন্ট থাকবে এরকম। অনেক লম্বা বলে হেস্টবিনের সাহায্য নেয়া হল, তবে সিনট্যাক্স হাইলাইট করা আছে বলে বুঝতে অসুবিধা হওয়ার কথা না।

এই ফাইলে খুব গুরুত্বপূর্ন একটি লাইন হল ৩৩ নম্বর লাইনটি। এখানে নিচের মত করে বলা আছে যে পিএইচপি এফপিএম মডিউল একটি ইউনিক্স সকেটের মাধ্যমে সবার সাথে কম্যুনিকেট করবে

listen = /var/run/php5-fpm.sock

কিছু কিছু ক্ষেত্রে (রিপোজিটরী ভেদে) এখানে ইউনিক্স সকেটের বদলে নিচের মত টিসিপি পোর্ট বলে দেয়া থাকতে পারে। সেক্ষেত্রে আমরা এই লাইনটি চেঞ্জ করে ইউনিক্স সকেট বসিয়ে নেব

listen = 127.0.0.1:9000

এই http://www.conf ফাইলটি পিএইচপির বিভিন্ন প্যারামিটার কনফিগার করার জন্য খুব ইম্পর্ট্যান্ট একটা এন্ট্রি পয়েন্ট। আমরা পরবর্তী আর্টিকেলে দেখব কিভাবে এখানে বিভিন্ন প্যারামিটার পরিবর্তন করার মাধ্যমে হাই কনকারেন্সি/হাই ট্রাফিক সাইট সার্ভ করতে পারি

এঞ্জিনএক্সের সাথে পিএইচপি-এফপিএমের ইন্টিগ্রেশন

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

location ~ \.php$ {
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	fastcgi_pass unix:/var/run/php5-fpm.sock;
	fastcgi_index index.php;
	include fastcgi_params;
}

ঠিক মত যোগ করা হলে আমাদের পুরো সার্ভার ব্লক (/etc/nginx/sites-available/default ফাইলের কন্টেন্ট হবে নিচের মত

server {
	#listen   80; ## listen for ipv4; this line is default and implied
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

	root /usr/share/nginx/www;
	index index.html index.htm;

	# Make site accessible from http://localhost/
	server_name exampledomain.com;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ /index.html;
		# Uncomment to enable naxsi on this location
		# include /etc/nginx/naxsi.rules
	}

	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;
	}

}

এবার এঞ্জিনএক্স এবং পিএইচপি এফপিএম সার্ভিস দুটো রিস্টার্ট করা লাগবে। আগে পিএইচপি এফপিএম এবং এরপর এনজিনএক্স রিস্টার্ট করুন

service php5-fpm restart
service nginx restart

সবকিছু কি ঠিক মত কাজ করছে?

সবকিছু কনফিগার করা শেষ। এখন আমাদের চেক করতে হবে সবকিছু ঠিক মত কাজ করছে কিনা। আপনার ডোমেইনের ডকুমেন্ট রুটে (এই আর্টিকেলের ক্ষেত্রে /usr/share/nginx/www ফোল্ডার) নতুন একটি ফাইল তৈরী করুন info.php নামে। সেই ফাইলে নিচের মত করে কন্টেন্ট লিখুন

<?php
phpinfo();
?>

সবকিছু ঠিক থাকলে আপনি যখন ব্রাউজারে আপনার ডোমেইন যেমন এই আর্টিকেলের ক্ষেত্রে http://exampledomain.com/info.php অ্যাড্রেসটি ভিজিট করবেন, পিএইচপিইনফো দেখা যাবে

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

About these ads

5 thoughts on “এসো নিজে করি – এঞ্জিনএক্সের সাথে পিএইচপি এফপিএম ফাস্টসিজিআই মডিউল ইন্টিগ্রেশন

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s