Node.js deployment এখন পর্যন্ত কভার করা প্রতিটি stack থেকে সত্যিই ভিন্ন, choosing-hosting-for-your-stack পাঠে প্রতিষ্ঠিত কারণে: একটি Node.js অ্যাপ সাধারণত একটি একক, ক্রমাগত, সবসময়-চালু প্রক্রিয়া হিসেবে চলে, PHP যেভাবে কাজ করে সেভাবে প্রতি অনুরোধে শুরু হওয়া একটি নতুন প্রক্রিয়া নয় — যা ঠিক প্রথাগত shared হোস্টিং সামলাতে পারে না।
বিশেষভাবে Node.js হোস্টিংয়ের জন্য তৈরি প্ল্যাটফর্ম "প্রক্রিয়াটি চালু রাখা" সমস্যাটি সম্পূর্ণভাবে আপনার জন্য সামলায়, এই বিভাগে আগে কভার করা একই Git-ভিত্তিক deployment workflow ব্যবহার করে:
npm install), আপনার অ্যাপ শুরু করে, আর প্রক্রিয়াটি চালু রাখে — এটি কখনো crash হলে স্বয়ংক্রিয়ভাবে পুনরায় চালু করে।আপনার নিজের VPS-এ Node.js চালানো মানে সত্যিই নিজে প্রক্রিয়াটি জীবিত রাখা। একটি প্রক্রিয়া ম্যানেজার — PM2 সবচেয়ে সাধারণ পছন্দ — বিশেষভাবে এটি সামলায়: এটি crash হলে স্বয়ংক্রিয়ভাবে আপনার অ্যাপ পুনরায় চালু করে, আপনি SSH থেকে সংযোগ বিচ্ছিন্ন করার পরেও এটি চালু রাখে, আর পুরো সার্ভার reboot হলে এটি আবার স্বয়ংক্রিয়ভাবে চালু করে।
# একবার PM2 ইনস্টল করুন
npm install -g pm2
# সরাসরি চালানোর বদলে PM2-এর মাধ্যমে আপনার অ্যাপ শুরু করুন
pm2 start server.js
# এটি এখন আপনি SSH session বন্ধ করলেও টিকে থাকে
pm2 statusএকটি VPS-এ সাধারণত Node.js অ্যাপের সামনে বসা একটি reverse proxy-ও দরকার (সাধারণত Nginx) — আদর্শ web port-এ আগত ট্রাফিক সামলানো আর আপনার Node অ্যাপ আসলে অভ্যন্তরীণভাবে যে port-এ শোনে সেখানে ফরওয়ার্ড করা। এটি পথ A-এর চেয়ে সত্যিই একটি বেশি জড়িত সেটআপ, এই বিভাগের আগের VPS পাঠ অনুযায়ী অতিরিক্ত নিয়ন্ত্রণের একটি নির্দিষ্ট কারণ থাকলে উপযুক্ত।
PHP পাঠের ডেটাবেস credentials-এর ঠিক একই নীতি: একটি Node.js অ্যাপের ডেটাবেস সংযোগ স্ট্রিং, API key, আর একই ধরনের secret হোস্টিং প্ল্যাটফর্মে environment variable হিসেবে সেট করা হয়, সোর্সে hardcode করা নয় — এই বিভাগে পরে নিজস্ব একটি পাঠে সম্পূর্ণভাবে কভার করা, এই সাইটের Node.js কোর্সের environment variable-এর উপাদানের উপর সরাসরি গড়ে ওঠা।
Development-এর সময় একটি Node.js অ্যাপ স্থানীয়ভাবে যে port-এ শোনে তা প্রায়ই প্রোডাকশনে হোস্টিং প্ল্যাটফর্ম যে port আশা করে তা নয়। বেশিরভাগ প্ল্যাটফর্ম এটি একটি নির্দিষ্ট সংখ্যার বদলে একটি environment variable হিসেবে দেয় (সাধারণত PORT নামে) — একটি স্থানীয় fallback সহ process.env.PORT থেকে এটি পড়া আদর্শ প্যাটার্ন যা দুই জায়গাতেই সঠিকভাবে কাজ করে।
সাইট লোড হওয়ার বাইরে, বিশেষভাবে যাচাই করুন কিছু সময় পার হওয়ার পরও প্রক্রিয়াটি আসলে চলতে থাকে কিনা — একটি সাধারণ Node deployment ব্যর্থতা হলো একটি অ্যাপ যা সফলভাবে শুরু হয় কিন্তু আসল ট্রাফিকে কিছুক্ষণ পরে crash করে, যা deploy করার ঠিক পরে একটি দ্রুত প্রাথমিক যাচাই ধরবে না।