হ্যা, সামহোয়্যারইনব্লগে যখন মেইন্টেন্যান্স চলে কিংবা সাইট ডাউন হয় তখন এররটি দেখে থাকবেন। এখানে যে নামটি দেখা যায় তা হল nginx. কি এই nginx?
nginx বা এঞ্জিনএক্স হল দুনিয়ার অন্যতম দ্রুতগতির ওয়েব, মেইল ও প্রক্সি সার্ভার। সার্ভার সেটআপ করতে সবাই প্রথমে এপাচির কথা বলবেন। তবে এঞ্জিনএক্স এপাচির চেয়ে অনেক দিক দিয়ে ভাল একটা সার্ভার। কেন? কিভাবে? সব বলার জন্যেই আজকের এই পোস্ট লিখছি।
▶▷ এঞ্জিনএক্স এর শুরুর কথা
এঞ্জিনএক্স এর কাজ শুরু হয় ২০০২ সালে। কাজাখাস্তানের Igor Sysoev এপাচির সাথে প্রোজেক্ট হিসেবে এঞ্জিনএক্স এর কাজ শুরু করেন। কিন্তু পরে দেখা যায় পারফর্মেন্স ও সিকিউরিটির দিক দিয়ে এঞ্জিনএক্স এপাচির চেয়েও ফ্লেক্সিবল। তারপর থেকে স্বতন্ত্র ওয়েব সার্ভার হিসেবে এঞ্জিনএক্স এর কাজ শুরু হয় এবং ২০০৪ সালে পাবলিক রিলিজ দেওয়া হয়। আর হ্যা, এঞ্জিনএক্স ওপেন সোর্স প্রোজেক্ট।
Igor Sysoev এর ব্যক্তিগত সাইট
▶▷ কেন এঞ্জিনএক্স?
প্রথমেই বলা হয়েছে যে এঞ্জিনএক্স এপাচির চেয়ে ভাল। এপাচি মেমরি খায় বেশী। সে তুলনায় তার কাজের পরিমাণ কম। বেশী সার্ভ রিকোয়েস্ট আসলে এপাচি সামলাতে পারেনা। আমি নিজেও কখনো এপাচি দিয়ে সুবিধা করতে পারিনাই। সেদিক দিয়ে এঞ্জিনএক্স মেমরি খায় খুব অল্প, কাজ করে অনেক। থ্রেডের বদলে এঞ্জিনএক্স ছোট ছোট স্টেটে রিকোয়েস্টগুলো সার্ভ করে। এর আর্কিটেকচারই এপাচির চেয়ে আলাদা। দেখা যায় এপাচি যেখানে ১৫০ মেগাবাইট মেমরি খরচ করে, এঞ্জিনএক্স সেখানে ৫-১০ মেগাবাইটে দিব্যি সার্ভ করে চলেছে।
Chris Lea বলেছিলেন, "Apache is like Microsoft Word, it has a million options but you only need six. Nginx does those six things, and it does five of them 50 times faster than Apache."
অর্থাৎ এপাচি হল মাইক্রোসফট অফিসের মত, অসংখ্য ফিচার আছে কিন্তু কাজে লাগে কয়েকটি। এঞ্জিনএক্স সেই কয়েকটি কাজই করে, এপাচির চেয়ে ৫০ গুণ দ্রুত।
▶▷ কারা এঞ্জিনএক্স ব্যবহার করছে?
বেশীরভাগ ওয়েব সার্ভার এপাচি ব্যবহার করলেও এঞ্জিনএক্স দিয়ে চলছে ১২% এর বেশী সাইট। বড় বড় ওয়েবসাইট যেখানে দৈনিক হাজার হাজার রিকোয়েস্ট আসে আর পেজ সার্ভ হয় সেগুলোতে এঞ্জিনএক্স বাজিমাত করে চলেছে।
বাংলাদেশে এঞ্জিনএক্স ব্যবহারকারী ওয়েবসাইট
১। সামহোয়্যারইন ব্লগ
২। টেকটিউনস
৩। প্রথম আলো
দুনিয়াব্যপী এঞ্জিনএক্স ব্যবহারকারী ওয়েবসাইট
১। ফেইসবুক
২। নেটফ্লিক্স
৩। হুলু
৪। ওয়ার্ডপ্রেস
৫। গিটহাব
৬। পিন্টারেস্ট সহ আরো অনেকে।
▶▷ এঞ্জিনএক্স কোথায় ব্যবহার করা যাবে?
এঞ্জিনএক্স মূলত লিনাক্স অপারেটিং সিস্টেমে ব্যবহার করা হয়। তবে কবছর আগে থেকেই এঞ্জিনএক্স উইন্ডোজে পোর্ট করা হয়েছে। ফলে বলা যায় এঞ্জিনএক্স এখন ক্রসপ্লাটফর্ম ওয়েব সার্ভার। লিনাক্সে এঞ্জিনএক্স কনফিগার করা কিছুটা জটিল মনে হলেও তা খুবই সহজ। এখন বলি কিভাবে এঞ্জিনএক্স ইন্সটল, কনফিগার ও ব্যবহার করবেন। আপনি উইন্ডোজ ব্যবহারকারী হলে পোস্টের নিচে চলে যান।
▶▷ ১। এঞ্জিনএক্স সহ দরকারী প্যাকেজ ইন্সটল করা
এঞ্জিনএক্স এর সাথে দরকার হবে পিএইচপি ফাস্টসিজিআই প্রসেস মডিউল বা php5-fpm, সাথে মাইএসকিউএল সার্ভার। নিচের কোডটুকু লিনাক্স টার্মিনালে বসিয়ে দিন।
☑ sudo apt-get -y install nginx php5-fpm php5-mysql mysql-server php5-suhosin
ফলে প্যাকেজ ম্যানেজার অটোমেটিক নিচের প্যাকেজগুলো ইন্সটল করে নিবে।
☑ dbconfig-common handlersocket-doc libdbd-mysql-perl libdbi-perl libmcrypt4 libmysqlclient18 libnet-daemon-perl libplrpc-perl mysql-client mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server-core-5.5 nginx-common nginx-full php5-common php5-gd php5-mcrypt
ইন্সটল করার শেষে মাইএসকিউএল পাসওয়ার্ড দিতে বলবে, ওটা সেট করে মনে রাখবেন কেননা ওই পাসওয়ার্ড দিয়েই পিএইচপিমাইএডমিন এ লগিন করতে হবে।
php5-suhosin কেন দরকার?
এই প্যাকেজ ছাড়াও আপনি পুরো পিএইচপি চালাতে পারবেন। তবে বিশেষভাবে তৈরী এই php5-suhosin প্যাকেজটি আপনার পিএইচপি কোর সার্ভারকে রক্ষা করবে লেটেস্ট প্যাচ ও কাস্টমাইজেশনের মাধ্যমে। যেহেতু পিএইচপি একটা শক্তিশালী ল্যাঙ্গুয়েজ আর এর মাধ্যমে সহজেই হোস্ট কম্পিউটার হ্যাক করা সম্ভব, তাই এই suhosin প্যাকেজটি সবসময় কোর মডিউল, জেন্ড ইঞ্জিনকে রক্ষা করার জন্য কাজ করে থাকে।
▶▷ ২। ওয়েব সার্ভারের রুট ডিরেক্টরি ঠিক করা
এঞ্জিনএক্স এর হোস্ট ডিরেক্টরী হল /usr/share/nginx/www. অনেকে কাজের সুবিধার জন্য কিংবা উইন্ডোজের মত সহজে রিডরাইট এক্সেস পেতে সেটা হোম ফোল্ডারে নিতে পারেন। যেমন আমি হোমে "Server" নামে একটি ফোল্ডার খুলেছি।
▶▷ ৩। এঞ্জিনএক্স কনফিগার করা
এঞ্জিনএক্স এর কনফিগ ফাইল হল /etc/nginx/sites-available/default। কাস্টোমাইজ করতে রুট হিসেবে যেকোন এডিটর দিয়ে এটা ওপেন করতে হবে। আপনি জিনোম ডেস্কটপ ব্যবহার করলে (উবুন্টু, মিন্ট) নিচের কোডটি দিয়ে ওপেন করুন।
☑ gksu gedit /etc/nginx/sites-available/default
কুবুন্টু বা ওপেনসুসের জন্য এটা।
☑ kdesu kate /etc/nginx/sites-available/default
কিংবা সরাসরি টার্মিনাল দিয়েই ওপেন করুন।
☑ sudo nano /etc/nginx/sites-available/default
এবার ছবির মত করে root শব্দের পর (২৪তম লাইনে) আপনার ওয়েব রুট ফোল্ডারের নাম লিখুন (শেষে অবশ্যই ';' হবে)। তারপর index অংশে index.php লিখুন। সবশেষে দরকার হলে server name বদলান (যদি দরকার হয়)। না বদলালে আপনি শুধু localhost লিখে প্রবেশ করতে পারবেন।
▶▷ ৪। পিএইচপি এফপিএম যোগ করা
এঞ্জিনএক্স এর সাথে php5-pfm কনফিগার করতে আরো নিচে স্ক্রল করুন। প্রায় ৬৩তম লাইনে দেখুন নিচের ছবির মত অংশ আছে। ওখানে location, fastcgi_split_path_info, fastcgi_pass, fastcgi_index ও include লাইনের সামনের '#' তুলে দিন। খেয়ালকরুন fastcgi_pass অংশটি দুবার আছে। FPM যেহেতু CGI এর প্যাচড মডিফায়েড ভার্শন, কাজেই cgi অংশটি সিলেক্ট করবেন। ছবিতে দেখুন।
অর্থাৎ একটা সিম্পল এঞ্জিনএক্স কনফিগারেশন ফাইল হবে এমন।
########################
server {
root /home/user/Server;
index index.html index.htm index.php;
server_name localhost;
location / {
try_files $uri $uri/ /index.html;
}
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
########################
▶▷ ৫। পিএইচপি মাই এডমিন
লেটেস্ট পিএইচপিমাইএডমিন ডাউনলোড করুন এই লিংক হতে। সেটা এক্সট্রাক্ট করুন ও ফোল্ডারের নাম রিনেইম করে phpmyadmin করে দিন। তারপর সেটাকে ওয়েব রুট ডিরেক্টরীতে রাখুন।
▶▷ ৬। মাইএসকিউএল ডাটাবেজ
ডাটাবেজ ঠিক আছে কিনা টেস্ট করতে এই এসকিউএল স্ক্রিপ্টটি ডাউনলোড করুন। তারপর টার্মিনাল খুলে নিচের মত করে সেটা মাইএসকিউএল সার্ভারে চালান করে দিন।
☑ mysql --user=root --password=123456 < Sample Database.sql
কোন এরর না এলে বুঝে নিন ডাটাবেজ তৈরী সফল হয়েছে।
▶▷ ৭। টেস্টিং
সব ঠিকমত কাজ করছে কিনা টেস্ট করার আগে সার্ভিসগুলো রিস্টার্ট করে নেওয়া জরুরী। এতে নতুন কনফিগারেশন ফাইল লোড হবে।
☑ service nginx restart
☑ service php5-fpm start
☑ service mysql restart
এবার এই লিংক হতে index.php ফাইলটি ডাউনলোড করে নিন। সেটা ওয়েব রুট ফোল্ডারে রাখুন। অর্থাৎ আপনার ওয়েব হোস্টিং ডিরেক্টরি নিচের মত দেখাবে।
এবার ব্রাউজার ওপেন করুন। এড্রেসবারে লিখুন http://localhost/ তারপর রিটার্ন (এন্টার) চাপুন। যদি নিচের ছবির মত লেখা আসে তাহলে ধরে নিন আপনার এঞ্জিনএক্স সার্ভার, পিএইচপি এবং মাইএসকিউএল সার্ভার ঠিকমত কাজ করছে।
পিএইচপিমাইএডমিন চেক করতে এড্রেসবারে লিখুন http://localhost/phpmyadmin তারপর রিটার্ন চাপুন। দেখবেন পিএইচপিমাইএডমিন লগিন পেজ আসবে।
▶▷ সাধারণ এরর কোড
502 Bad gateway - এর মানে হল php5-fpm মডিউল কাজ করছেনা বা ক্র্যাশ করেছে। চালু করুন এভাবে:
☑ sudo service php5-fpm restart
403 Forbidden - এটার মানে URI পাওয়া গেছে কিন্তু রিড/রাইট পারমিশন নেই। ঠিক করুন এভাবে:
☑ sudo chmod 755 -R /path/to/server/root
☑ sudo chown -R www-data:www-data /path/to/server/root
পারমিশনের ব্যপারে সাবধান থাকুন। ফাইল সার্ভারে আপলোডের সময় অবশ্যই সঠিকভাবে মাস্ক ও পারমিশন বসাবেন।
উপরোক্ত সকল পদ্ধতি ও স্ক্রিনশট উবুনটু ১২.০৪ এ সফলভাবে পরীক্ষিত। আশা করা যায় অন্যান্য ডিস্ট্রিবিউশনেও কাজ করবে।
▶▷ উইন্ডোজের জন্য এঞ্জিনএক্স
উইন্ডোজের জন্য pfp5, mysql5, phpmyadmin, memcached, Redis, phpMemcachedAdmin সহ নানা ফিচার নিয়ে আছে উইঞ্জিএক্স। ডাউনলোড করুন নিচের লিংক হতে।
Download Winginx
ইন্সটল করা xampp এর মতই সোজা। কনট্রোল প্যানেল চালাতে যদি msvcr71.dll ফাইলটি মিসিং দেখায় তবে এই লিংক হতে DLL ডাউনলোড করে নিন এবং তা Winginx.exe যে ফোল্ডারে আছে সেখানে রাখুন। ওয়েব হোস্ট করতে সকল ফাইল C:/Winginx/home এ রাখলেই সার্ভ হবে।
কোন প্রশ্ন/আপত্তি/সংশোধন/উপদেশ থাকলে জানাতে ভুলবেন না। হ্যাপি কোডিং!
সর্বশেষ এডিট : ২৬ শে আগস্ট, ২০১২ রাত ৯:২৮