ExpressJS অ্যাপ্লিকেশন ডিপ্লয়মেন্ট

এক্সপ্রেসজেএস (ExpressJS) - Web Development

280

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

এখানে আমরা দেখব কীভাবে একটি ExpressJS অ্যাপ সহজে এবং দক্ষভাবে প্রোডাকশন পরিবেশে ডিপ্লয় করতে হয়।


১. ExpressJS অ্যাপ্লিকেশন প্রোডাকশন পরিবেশে প্রস্তুত করা

প্রথমে, আপনার অ্যাপ্লিকেশনটি প্রোডাকশন পরিবেশে চালানোর জন্য কিছু সাধারণ কনফিগারেশন এবং প্রস্তুতি নিতে হবে।

পরিবেশ কনফিগারেশন:

  • process.env.NODE_ENV: ExpressJS অ্যাপ্লিকেশনে প্রোডাকশন বা ডেভেলপমেন্ট পরিবেশ চিহ্নিত করার জন্য এটি ব্যবহার করুন।
  • প্রোডাকশন মোডে চালানো: অ্যাপ্লিকেশন প্রোডাকশন মোডে চালানোর জন্য NODE_ENV ভেরিয়েবলকে production এ সেট করুন।
if (process.env.NODE_ENV === 'production') {
  app.use(express.static('public')); // Static files
}

এখানে, যদি অ্যাপ প্রোডাকশন মোডে চলে, তবে static files এক্সপোজ করা হয়। এছাড়া, error handling বা logging এর মতো অতিরিক্ত কনফিগারেশনও করা যায়।


২. সার্ভার হোস্টিং সেবা নির্বাচন করা

ExpressJS অ্যাপ্লিকেশন ডিপ্লয় করার জন্য বিভিন্ন সার্ভার হোস্টিং সেবা ব্যবহার করা যেতে পারে, যেমন:

  • Heroku
  • DigitalOcean
  • AWS (Amazon Web Services)
  • Vercel
  • Netlify
  • Railway
  • Linode

এখানে আমরা Heroku ব্যবহার করে ExpressJS অ্যাপ ডিপ্লয় করার প্রক্রিয়া দেখব, কারণ এটি সহজ এবং সরল একটি প্ল্যাটফর্ম।


৩. Heroku তে ExpressJS অ্যাপ্লিকেশন ডিপ্লয় করা

Heroku হলো একটি জনপ্রিয় PaaS (Platform-as-a-Service) যা ক্লাউডে অ্যাপ্লিকেশন হোস্ট করতে সহায়তা করে। নিচে Heroku তে ExpressJS অ্যাপ্লিকেশন ডিপ্লয় করার ধাপগুলো দেওয়া হলো:

ধাপ ১: Heroku CLI ইনস্টল করা

প্রথমে, Heroku CLI ইনস্টল করতে হবে। Heroku CLI ডাউনলোড লিংক থেকে ইনস্টলার ডাউনলোড এবং ইনস্টল করুন।

ধাপ ২: Heroku অ্যাকাউন্টে লগ ইন করা

Heroku CLI এর মাধ্যমে আপনার Heroku অ্যাকাউন্টে লগ ইন করুন:

heroku login

এটি আপনার ব্রাউজারে একটি লিঙ্ক খুলবে, যেখানে আপনাকে লগ ইন করতে হবে।

ধাপ ৩: Git রেপোজিটরি তৈরি করা

Express অ্যাপটি Git রেপোজিটরিতে থাকতে হবে, কারণ Heroku গিটের মাধ্যমে অ্যাপ্লিকেশন আপলোড করে। যদি আপনার অ্যাপের Git রেপোজিটরি না থাকে, তবে নিচের কমান্ডগুলো ব্যবহার করে একটি গিট রেপোজিটরি তৈরি করুন:

git init
git add .
git commit -m "Initial commit"

ধাপ ৪: Heroku অ্যাপ তৈরি করা

Heroku তে একটি অ্যাপ তৈরি করুন:

heroku create your-app-name

এটি আপনার অ্যাপের জন্য একটি Heroku URL তৈরি করবে, যেমন https://your-app-name.herokuapp.com/

ধাপ ৫: Procfile তৈরি করা

Heroku তে অ্যাপ ডিপ্লয় করার জন্য একটি Procfile থাকতে হবে, যা Heroku কে জানায় কীভাবে অ্যাপ চালাতে হবে। আপনার প্রোজেক্ট ফোল্ডারে একটি নতুন Procfile তৈরি করুন (কোনো এক্সটেনশন ছাড়াই):

web: node index.js

এখানে index.js হচ্ছে আপনার ExpressJS অ্যাপের মূল ফাইল (এটি আপনার অ্যাপের এন্ট্রি পয়েন্ট, যেমন server.js বা app.js হতে পারে)।

ধাপ ৬: Git এর মাধ্যমে কোড পুশ করা

এখন আপনার কোড Heroku তে পুশ করুন:

git push heroku master

এই কমান্ডটি আপনার কোডকে Heroku তে পুশ করবে এবং Heroku স্বয়ংক্রিয়ভাবে অ্যাপটি ডিপ্লয় করবে।

ধাপ ৭: অ্যাপ চালু করা

আপনার অ্যাপ Heroku তে ডিপ্লয় হওয়ার পর, আপনি ব্রাউজারে গিয়ে এটি দেখতে পারেন:

heroku open

এটি আপনার অ্যাপকে ব্রাউজারে খুলে দেখাবে।


৪. DigitalOcean বা AWS তে ExpressJS ডিপ্লয় করা

DigitalOcean বা AWS তে অ্যাপ ডিপ্লয় করতে হলে আপনাকে একটি ভার্চুয়াল মেশিন (VM) বা সার্ভার সেটআপ করতে হবে, যেমন একটি EC2 ইনস্ট্যান্স (AWS) বা Droplet (DigitalOcean)। সার্ভার সেটআপের পরে, আপনি SSH এর মাধ্যমে সার্ভারে লগ ইন করবেন এবং আপনার অ্যাপ্লিকেশনটি সেখানে হোস্ট করবেন। এই ধরনের ডিপ্লয়মেন্টে সাধারণত Nginx বা Apache সার্ভার ব্যবহার করা হয় রিভার্স প্রক্সি হিসেবে।


৫. অন্যান্য কনফিগারেশন

পরিবেশ ভেরিয়েবল (Environment Variables):

প্রোডাকশন পরিবেশে আপনার অ্যাপের কিছু সিক্রেট কনফিগারেশন (যেমন ডেটাবেজ ক্রেডেনশিয়াল) বা অন্যান্য পরিবেশ ভেরিয়েবল রাখতে হবে। এই ভেরিয়েবলগুলো সরাসরি কোডে না রেখে .env ফাইল ব্যবহার করে রাখুন এবং dotenv লাইব্রেরি ব্যবহার করে অ্যাপ্লিকেশনে লোড করুন।

npm install dotenv --save

এবং আপনার .env ফাইলে ভেরিয়েবলগুলো সংরক্ষণ করুন:

DB_HOST=localhost
DB_USER=root
DB_PASS=password

আপনার কোডে dotenv এর মাধ্যমে এই ভেরিয়েবলগুলো ব্যবহার করুন:

require('dotenv').config();

console.log(process.env.DB_HOST);

Error Handling এবং Logging:

প্রোডাকশন পরিবেশে অ্যাপ্লিকেশনের সমস্যা বা ত্রুটি (error) ট্র্যাক করার জন্য একটি ভাল লগিং ব্যবস্থা থাকা উচিত। আপনি Winston বা Morgan মতো লাইব্রেরি ব্যবহার করতে পারেন:

npm install morgan --save

ExpressJS এর জন্য মডিউলটি ব্যবহার করে রিকোয়েস্ট লগ করতে পারেন:

const morgan = require('morgan');
app.use(morgan('dev'));

৬. HTTPS এবং SSL

প্রোডাকশন পরিবেশে আপনার অ্যাপ্লিকেশনটি নিরাপদ করতে SSL/TLS সিটিফিকেট ব্যবহার করুন। আপনি Let's Encrypt ব্যবহার করে বিনামূল্যে SSL সিটিফিকেট পেতে পারেন এবং Nginx অথবা Apache দিয়ে HTTPS সেটআপ করতে পারেন।


সারাংশ

ExpressJS অ্যাপ্লিকেশন ডিপ্লয়মেন্ট একটি গুরুত্বপূর্ণ প্রক্রিয়া, যা অ্যাপ্লিকেশনকে লাইভ পরিবেশে ব্যবহারকারীদের জন্য উপলব্ধ করে। Heroku একটি সহজ এবং জনপ্রিয় প্ল্যাটফর্ম যেখানে ExpressJS অ্যাপ্লিকেশন দ্রুত ডিপ্লয় করা যায়। এছাড়া, AWS, DigitalOcean এর মতো অন্যান্য প্ল্যাটফর্মেও অ্যাপ্লিকেশন ডিপ্লয় করা যেতে পারে, তবে এখানে আরো বেশি কনফিগারেশন ও সার্ভার সেটআপ প্রক্রিয়া রয়েছে। Environment Variables, Error Handling, এবং HTTPS সেটআপের মতো গুরুত্বপূর্ণ কনফিগারেশনগুলো প্রোডাকশন পরিবেশে থাকা উচিত।

Content added By

ExpressJS অ্যাপ্লিকেশন ডিপ্লয় করার জন্য জনপ্রিয় ক্লাউড প্ল্যাটফর্মগুলো যেমন Heroku, AWS (Amazon Web Services), এবং DigitalOcean ব্যবহৃত হয়। এই প্ল্যাটফর্মগুলোতে ExpressJS অ্যাপ্লিকেশন ডিপ্লয় করার প্রক্রিয়া দ্রুত এবং সহজ। এখানে আমরা প্রতিটি প্ল্যাটফর্মে Express অ্যাপ ডিপ্লয় করার ধাপগুলো দেখব।


১. Heroku তে ExpressJS অ্যাপ ডিপ্লয় করা

Heroku একটি জনপ্রিয় ক্লাউড প্ল্যাটফর্ম যা অ্যাপ্লিকেশন ডিপ্লয় এবং ম্যানেজ করার জন্য সহজ। ExpressJS অ্যাপ্লিকেশন Heroku তে ডিপ্লয় করার জন্য নিচের পদক্ষেপগুলো অনুসরণ করুন:

১.১. Heroku অ্যাকাউন্ট তৈরি করা

প্রথমে Heroku-তে একটি অ্যাকাউন্ট তৈরি করুন: Heroku

১.২. Heroku CLI ইনস্টল করা

Heroku অ্যাপ্লিকেশন ম্যানেজ করার জন্য Heroku CLI ইনস্টল করতে হবে। CLI ইনস্টল করতে নিচের লিঙ্কে গিয়ে নির্দেশনা অনুসরণ করুন: Heroku CLI ডাউনলোড

১.৩. ExpressJS অ্যাপ তৈরি এবং Git ইনিশিয়ালাইজ করা

আপনার Express অ্যাপের জন্য একটি নতুন প্রজেক্ট তৈরি করুন (যদি না থাকে):

mkdir my-express-app
cd my-express-app
npm init -y
npm install express

এখন আপনার অ্যাপ ইনিশিয়ালাইজ করুন:

git init
git add .
git commit -m "initial commit"

১.৪. Heroku অ্যাপ তৈরি করা

Heroku CLI দিয়ে একটি নতুন অ্যাপ তৈরি করুন:

heroku create

Heroku CLI অ্যাপের নাম এবং URL আপনাকে প্রদর্শন করবে।

১.৫. Procfile তৈরি করা

Heroku Express অ্যাপের জন্য একটি Procfile তৈরি করতে হয়, যাতে এটি জানাতে পারে কীভাবে অ্যাপটি রান করবে। Procfile ফাইলটি অ্যাপের রুট ডিরেক্টরিতে রাখতে হবে।

echo "web: node app.js" > Procfile

এখানে, app.js হল আপনার Express অ্যাপের প্রধান ফাইল।

১.৬. Git Push করে Heroku তে ডিপ্লয় করা

Heroku তে অ্যাপ ডিপ্লয় করতে এখন git push ব্যবহার করুন:

git push heroku master

এটি আপনার কোড Heroku সার্ভারে আপলোড করবে এবং অ্যাপটি চালু করবে।

১.৭. Heroku অ্যাপ চেক করা

অ্যাপ ডিপ্লয় হলে আপনি এটি ব্রাউজারে দেখতে পারবেন:

heroku open

এটি আপনার অ্যাপটি ব্রাউজারে খুলে দেবে।


২. AWS EC2 তে ExpressJS অ্যাপ ডিপ্লয় করা

Amazon Web Services (AWS) একটি শক্তিশালী ক্লাউড প্ল্যাটফর্ম, যা EC2 (Elastic Compute Cloud) এর মাধ্যমে অ্যাপ ডিপ্লয় করতে সাহায্য করে।

২.১. AWS EC2 ইন্সট্যান্স তৈরি করা

প্রথমে, AWS EC2 ড্যাশবোর্ডে গিয়ে একটি নতুন EC2 ইন্সট্যান্স তৈরি করুন। আপনি Ubuntu বা Amazon Linux নির্বাচন করতে পারেন। ইন্সট্যান্স তৈরি করার পর, আপনার ইন্সট্যান্সের পাবলিক IP নোট করুন।

২.২. SSH দিয়ে EC2 তে কানেক্ট হওয়া

EC2 ইন্সট্যান্সে SSH এর মাধ্যমে কানেক্ট হন:

ssh -i "your-key.pem" ec2-user@your-ec2-ip

২.৩. Node.js এবং ExpressJS ইনস্টল করা

EC2 তে Node.js ইনস্টল করতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:

sudo apt update
sudo apt install nodejs npm

এরপর, ExpressJS অ্যাপ সেটআপ করুন:

mkdir my-express-app
cd my-express-app
npm init -y
npm install express

এটি আপনার EC2 ইন্সট্যান্সে Express অ্যাপ তৈরি করবে।

২.৪. অ্যাপ রান করা

এখন, Express অ্যাপটি রান করতে হবে:

node app.js

এটি 3000 পোর্টে অ্যাপটি চালু করবে।

২.৫. Security Group সেট করা

AWS EC2 তে 80, 443, অথবা 3000 পোর্ট (যদি আপনি ডিফল্ট পোর্ট ব্যবহার করেন) ওপেন করতে Security Groups এর মাধ্যমে অ্যাক্সেস কন্ট্রোল করতে হবে।

২.৬. অ্যাপ চেক করা

এখন, আপনি EC2 এর পাবলিক আইপি বা ডোমেইন নাম দিয়ে আপনার Express অ্যাপ ব্রাউজারে দেখতে পারবেন।


৩. DigitalOcean তে ExpressJS অ্যাপ ডিপ্লয় করা

DigitalOcean একটি জনপ্রিয় ক্লাউড সার্ভিস, যা সাধারণত সস্তা এবং দ্রুত ডিপ্লয়মেন্টের জন্য ব্যবহৃত হয়।

৩.১. DigitalOcean অ্যাকাউন্ট তৈরি করা

প্রথমে DigitalOcean-এ একটি অ্যাকাউন্ট তৈরি করুন: DigitalOcean

৩.২. Droplet তৈরি করা

DigitalOcean-এ একটি নতুন Droplet তৈরি করুন, যেখানে আপনি Ubuntu বা CentOS ইন্সটল করতে পারেন। একবার Droplet তৈরি হলে, পাবলিক IP নোট করুন।

৩.৩. SSH দিয়ে Droplet তে কানেক্ট হওয়া

SSH এর মাধ্যমে আপনার Droplet-এ কানেক্ট হন:

ssh root@your-droplet-ip

৩.৪. Node.js এবং ExpressJS ইনস্টল করা

DigitalOcean Droplet এ Node.js ইনস্টল করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:

sudo apt update
sudo apt install nodejs npm

এখন, ExpressJS অ্যাপ তৈরি করুন:

mkdir my-express-app
cd my-express-app
npm init -y
npm install express

৩.৫. অ্যাপ রান করা

এখন, আপনার Express অ্যাপ রান করুন:

node app.js

৩.৬. Firewall সেটিংস এবং পোর্ট ওপেন করা

যেহেতু DigitalOcean Droplet এ firewall সক্রিয় থাকে, পোর্ট 3000 বা 80 ওপেন করতে হবে:

sudo ufw allow 3000

এটি 3000 পোর্টকে খুলে দেবে, যাতে আপনি অ্যাপটি ব্রাউজারে দেখতে পারেন।

৩.৭. অ্যাপ চেক করা

এখন, আপনি DigitalOcean Droplet এর পাবলিক আইপি দিয়ে আপনার অ্যাপ দেখতে পারবেন।


সারাংশ

ExpressJS অ্যাপ্লিকেশন ডিপ্লয় করার জন্য Heroku, AWS EC2, এবং DigitalOcean এর মধ্যে যেকোনো একটি প্ল্যাটফর্ম বেছে নিতে পারেন। Heroku তে ডিপ্লয় করা সহজ এবং দ্রুত, তবে AWS EC2 এবং DigitalOcean অধিক কনফিগারেশন এবং কাস্টমাইজেশন সুযোগ প্রদান করে। AWS এবং DigitalOcean তে ডিপ্লয় করতে কিছু অতিরিক্ত পদক্ষেপ নিতে হয়, যেমন SSH কানেকশন এবং পোর্ট খোলার কাজ। ExpressJS এর মাধ্যমে আপনি ক্লাউড প্ল্যাটফর্মগুলোতে রিয়েল-টাইম এবং স্কেলেবল ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন।

Content added By

PM2 হল একটি শক্তিশালী এবং জনপ্রিয় প্রসেস ম্যানেজার যা Node.js অ্যাপ্লিকেশনগুলি পরিচালনা, মনিটরিং এবং স্কেলিংয়ের জন্য ব্যবহৃত হয়। এটি একটি অত্যন্ত কার্যকর টুল যা আপনার অ্যাপ্লিকেশনকে ব্যাকগ্রাউন্ডে রান করতে সহায়তা করে এবং সার্ভার ক্র্যাশ বা ডাউন হওয়ার পর অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে রিস্টার্ট করে দেয়। PM2 আপনার অ্যাপ্লিকেশনগুলোকে ম্যানেজ করার জন্য বেশ কিছু সুবিধা প্রদান করে যেমন লোগ ম্যানেজমেন্ট, লোড ব্যালান্সিং, এবং অ্যাপ্লিকেশন স্ট্যাটাস মনিটরিং।

এখানে, আমরা ExpressJS অ্যাপ্লিকেশন পরিচালনা এবং মনিটরিং করার জন্য PM2 ব্যবহার করব।


১. PM2 ইনস্টলেশন

PM2 ইন্সটল করার জন্য আপনাকে npm ব্যবহার করতে হবে। নীচে দেওয়া কমান্ডটি দিয়ে আপনি PM2 ইন্সটল করতে পারেন:

npm install pm2@latest -g

এই কমান্ডটি PM2-কে আপনার গ্লোবাল প্যাকেজ হিসেবে ইনস্টল করবে, যাতে আপনি যেকোনো ডিরেক্টরি থেকে PM2 কমান্ড ব্যবহার করতে পারেন।


২. Express অ্যাপ্লিকেশন PM2 দিয়ে রান করা

এখন, আপনি যদি একটি ExpressJS অ্যাপ্লিকেশন চালাতে চান, তবে PM2 ব্যবহার করে এটিকে ব্যাকগ্রাউন্ডে রান করানো যেতে পারে। ধরুন, আপনার ExpressJS অ্যাপ্লিকেশনটির ফাইলের নাম app.js

pm2 start app.js

এটি আপনার ExpressJS অ্যাপ্লিকেশনটি PM2-এর মাধ্যমে চালু করবে এবং ব্যাকগ্রাউন্ডে রান করতে শুরু করবে। আপনি এই সময় Ctrl + C প্রেস করে টার্মিনাল বন্ধ করলে অ্যাপ্লিকেশনটি থেমে যাবে না, কারণ PM2 এই প্রক্রেসটি মনিটর করছে।


৩. PM2 দিয়ে অ্যাপ্লিকেশন মনিটরিং

PM2 এর মাধ্যমে আপনি সহজেই আপনার ExpressJS অ্যাপ্লিকেশনের স্ট্যাটাস দেখতে পারেন। এর জন্য pm2 list কমান্ড ব্যবহার করুন:

pm2 list

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

৩.১. অ্যাপ্লিকেশন স্ট্যাটাস চেক করা

আপনি যদি শুধুমাত্র একটি নির্দিষ্ট অ্যাপ্লিকেশনের স্ট্যাটাস দেখতে চান, তবে pm2 status <app-name> কমান্ডটি ব্যবহার করতে পারেন:

pm2 status app.js

এটি অ্যাপ্লিকেশনটির রানিং স্ট্যাটাস এবং অন্যান্য বিস্তারিত তথ্য প্রদর্শন করবে।

৩.২. অ্যাপ্লিকেশন লগ দেখতে

PM2 অ্যাপ্লিকেশনের লগও সহজেই দেখতে দেয়। আপনি pm2 logs কমান্ডটি দিয়ে লগ দেখতে পারেন:

pm2 logs

এটি সমস্ত চলমান অ্যাপ্লিকেশনের লগ দেখাবে। যদি আপনি একটি নির্দিষ্ট অ্যাপ্লিকেশনের লগ দেখতে চান, তাহলে আপনি অ্যাপ্লিকেশন নাম বা ID ব্যবহার করতে পারেন:

pm2 logs app.js

৪. অ্যাপ্লিকেশন রিস্টার্ট এবং স্টপ করা

যদি আপনার অ্যাপ্লিকেশনটি কোনো কারণে থেমে যায় বা আপনি ম্যানুয়ালি রিস্টার্ট করতে চান, তাহলে pm2 restart কমান্ড ব্যবহার করতে পারেন:

pm2 restart app.js

অথবা, আপনি অ্যাপ্লিকেশনটি পুরোপুরি বন্ধ করতে চাইলে pm2 stop ব্যবহার করতে পারেন:

pm2 stop app.js

এটি আপনার অ্যাপ্লিকেশনকে বন্ধ করে দেবে, তবে আবার pm2 start কমান্ড দিয়ে এটি চালু করা সম্ভব।


৫. অ্যাপ্লিকেশনটি অটোমেটিক্যালি রিস্টার্ট করা

একটি দুর্দান্ত বৈশিষ্ট্য হল যে PM2 অ্যাপ্লিকেশনটি সার্ভারের পুনরায় চালু হলে স্বয়ংক্রিয়ভাবে রিস্টার্ট করতে পারে। এটি আপনি pm2 startup কমান্ড দিয়ে কনফিগার করতে পারেন। প্রথমে কমান্ডটি রান করুন:

pm2 startup

এই কমান্ডটি আপনাকে একটি বিশেষ কমান্ড দিবে, যা আপনি টার্মিনালে রান করে সার্ভারের রিস্টার্টের পরও PM2 আপনার অ্যাপ্লিকেশনটি পুনরায় চালু করবে।

এরপর, আপনার সব পরিবর্তন সেভ করার জন্য pm2 save কমান্ডটি ব্যবহার করুন:

pm2 save

এটি সমস্ত চলমান অ্যাপ্লিকেশন এবং তাদের স্টেট সেভ করবে, যাতে সার্ভার রিস্টার্টের পর সেগুলি পুনরায় চালু হয়।


৬. অ্যাপ্লিকেশন স্কেলিং

PM2 আপনাকে আপনার অ্যাপ্লিকেশনটি স্কেল করার সুযোগও দেয়। যদি আপনার অ্যাপ্লিকেশনটির অতিরিক্ত ট্র্যাফিক থাকে, তবে আপনি একাধিক প্রক্রিয়া চালু করে আপনার অ্যাপ্লিকেশনটি স্কেল করতে পারেন। এটি করার জন্য আপনি নিচের কমান্ডটি ব্যবহার করতে পারেন:

pm2 scale app.js <number-of-instances>

যেমন, যদি আপনি অ্যাপ্লিকেশনটির 4টি ইনস্ট্যান্স চালাতে চান, তাহলে:

pm2 scale app.js 4

এটি 4টি পৃথক প্রক্রিয়া তৈরি করবে এবং লোড ব্যালান্সিংয়ের মাধ্যমে প্রতিটি প্রক্রিয়ায় রিকোয়েস্ট পাঠাবে।


৭. PM2-এর সাহায্যে অ্যাপ্লিকেশন বন্ধ করা

যদি আপনি PM2-এর মাধ্যমে চলমান অ্যাপ্লিকেশনটি সম্পূর্ণ বন্ধ করতে চান, তবে pm2 delete কমান্ডটি ব্যবহার করুন:

pm2 delete app.js

এটি অ্যাপ্লিকেশনটি বন্ধ করবে এবং PM2 এর তালিকা থেকে মুছে ফেলবে। আপনি pm2 stop ব্যবহার করলেও শুধুমাত্র অ্যাপ্লিকেশনটি থামাবে, কিন্তু তালিকা থেকে মুছে যাবে না।


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

Content added By

Reverse Proxy হলো একটি সার্ভার যা ক্লায়েন্টের রিকোয়েস্ট গ্রহণ করে এবং তা একটি বা একাধিক ব্যাকএন্ড সার্ভারে ফরওয়ার্ড করে। ExpressJS অ্যাপ্লিকেশনটি প্রোডাকশনে চলাকালে Nginx বা Apache সার্ভার ব্যবহার করে reverse proxy কনফিগার করা হয় যাতে অ্যাপ্লিকেশনটির পারফরম্যান্স বৃদ্ধি পায় এবং বিভিন্ন ধরনের নিরাপত্তা সুবিধা পাওয়া যায়। Nginx এবং Apache উভয়ই জনপ্রিয় ওয়েব সার্ভার যা ExpressJS অ্যাপ্লিকেশনের সাথে ইন্টিগ্রেট করা যেতে পারে।


১. Nginx দিয়ে Reverse Proxy কনফিগার করা

Nginx একটি হাই পারফরম্যান্স ওয়েব সার্ভার যা সাধারণত reverse proxy সার্ভার হিসেবে ব্যবহৃত হয়। Nginx-এ reverse proxy কনফিগার করার মাধ্যমে ExpressJS অ্যাপ্লিকেশনটির ভার্চুয়াল হোস্টিং এবং লোড ব্যালান্সিং করা সম্ভব।

Step 1: Nginx ইনস্টল করা

প্রথমে, যদি আপনার সিস্টেমে Nginx ইনস্টল না থাকে, তবে এটি ইনস্টল করতে হবে।

  • Ubuntu/Debian:

    sudo apt update
    sudo apt install nginx
    
  • CentOS/RHEL:

    sudo yum install nginx
    

Step 2: Nginx কনফিগারেশন ফাইল তৈরি করা

Nginx কনফিগারেশনে একটি নতুন server block (যাকে virtual hostও বলা হয়) তৈরি করতে হবে যা ExpressJS অ্যাপ্লিকেশনের জন্য reverse proxy হিসেবে কাজ করবে।

  • Nginx configuration file: /etc/nginx/sites-available/default অথবা /etc/nginx/nginx.conf (আপনার সিস্টেমের ওপর নির্ভর করে)

এখানে একটি সাধারণ কনফিগারেশন দেখানো হলো:

server {
    listen 80;
    server_name example.com;  # আপনার ডোমেইন নাম অথবা আইপি

    location / {
        proxy_pass http://localhost:3000;  # ExpressJS অ্যাপ যেখানে চলছে
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

এখানে:

  • proxy_pass http://localhost:3000;: এটি নির্দেশনা দেয় যে, সমস্ত রিকোয়েস্ট localhost এর 3000 পোর্টে চলমান ExpressJS অ্যাপ্লিকেশনে ফরওয়ার্ড হবে।
  • proxy_set_header: এখানে HTTP হেডারগুলোকে সঠিকভাবে সেট করা হচ্ছে যাতে প্রাক্সি সার্ভারের মাধ্যমে আসা রিকোয়েস্টগুলো সঠিকভাবে পরিচালিত হয়।

Step 3: Nginx রিস্টার্ট করা

নতুন কনফিগারেশন ফাইলটি সংরক্ষণ করার পর, Nginx সার্ভারটি রিস্টার্ট করুন:

sudo systemctl restart nginx

এখন আপনার Nginx সার্ভারটি ExpressJS অ্যাপ্লিকেশনের জন্য reverse proxy হিসেবে কাজ করবে।


২. Apache দিয়ে Reverse Proxy কনফিগার করা

Apache সার্ভারও ExpressJS অ্যাপ্লিকেশনের জন্য reverse proxy হিসেবে কাজ করতে পারে। Apache-এ reverse proxy কনফিগার করার জন্য mod_proxy এবং mod_proxy_http মডিউল সক্রিয় করতে হবে।

Step 1: Apache মডিউল সক্রিয় করা

প্রথমে, Apache-এ প্রয়োজনীয় মডিউলগুলো সক্রিয় করতে হবে:

sudo a2enmod proxy
sudo a2enmod proxy_http

Step 2: Apache কনফিগারেশন ফাইল আপডেট করা

Apache-এ reverse proxy কনফিগারেশনটি সাধারণত /etc/apache2/sites-available/000-default.conf বা /etc/httpd/conf/httpd.conf ফাইলে করা হয়। এখানে একটি উদাহরণ কনফিগারেশন:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName example.com  # আপনার ডোমেইন বা আইপি

    # Reverse Proxy Setup
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/

    # Additional Proxy Settings
    RequestHeader set X-Forwarded-Proto "http"
</VirtualHost>

এখানে:

  • ProxyPass: এটি নির্দেশনা দেয় যে সমস্ত রিকোয়েস্ট localhost এর 3000 পোর্টে পাঠানো হবে।
  • ProxyPassReverse: এটি রিভার্স ফরওয়ার্ডিংয়ের জন্য ব্যবহৃত হয়, অর্থাৎ সার্ভার থেকে আসা রেসপন্সে আবার প্রাক্সি সার্ভারের ঠিকানা পরিবর্তন করবে।

Step 3: Apache রিস্টার্ট করা

Apache কনফিগারেশনটি আপডেট করার পর, সার্ভারটি রিস্টার্ট করতে হবে:

sudo systemctl restart apache2

এখন, Apache আপনার ExpressJS অ্যাপ্লিকেশনকে reverse proxy হিসেবে পরিচালনা করবে।


৩. Nginx vs Apache

Nginx এবং Apache উভয়ই reverse proxy হিসেবে ব্যবহৃত হতে পারে, তবে কিছু পার্থক্য রয়েছে:

  • Nginx:
    • হালকা এবং দ্রুত, অনেক বেশি concurrent কনেকশন হ্যান্ডেল করতে সক্ষম।
    • স্ট্যাটিক ফাইল সার্ভিংয়ের জন্য অধিক কার্যকরী।
    • কম মেমরি ব্যবহারে কাজ করে, এবং লোড ব্যালান্সিং ভালোভাবে পরিচালনা করে।
  • Apache:
    • বেশি কনফিগারেশন এবং সেটআপ অপশন দেয়।
    • অধিক ফিচারের সাথে আসে, যেমন .htaccess ফাইল সাপোর্ট।
    • থ্রেড-বেসড কনট্রোল ব্যবস্থাপনা করে, তাই কখনো কখনো বেশি রিসোর্স ব্যবহার হতে পারে।

তবে, সাধারণভাবে Nginx অধিক পারফরম্যান্সের জন্য ব্যবহৃত হয়, বিশেষ করে যখন অনেক concurrent কানেকশন হ্যান্ডেল করতে হয়।


৪. সার্ভার সুরক্ষা ও অন্যান্য কনফিগারেশন

আপনি Nginx বা Apache এর মাধ্যমে আপনার ExpressJS অ্যাপ্লিকেশনে কিছু সুরক্ষা ব্যবস্থা যোগ করতে পারেন:

  • SSL/TLS: সার্ভারকে HTTPS প্রোটোকল ব্যবহার করে সুরক্ষিত করতে SSL সার্টিফিকেট ইনস্টল করুন।
  • Load Balancing: যদি একাধিক ExpressJS অ্যাপ্লিকেশন সার্ভার থাকে, তবে Nginx বা Apache দিয়ে লোড ব্যালান্সিং কনফিগার করা যেতে পারে।
  • Rate Limiting: একাধিক রিকোয়েস্টের বিরুদ্ধে সুরক্ষা নিশ্চিত করতে Nginx বা Apache-এ রেট লিমিটিং কনফিগার করা যেতে পারে।

উদাহরণ: Nginx-এ SSL কনফিগারেশন

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

এখানে SSL সেটআপ করার মাধ্যমে HTTPS প্রোটোকল দিয়ে ExpressJS অ্যাপ্লিকেশনটি নিরাপদ করা হয়েছে।


সারাংশ

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

Content added By

Continuous Deployment (CD) এবং Version Control দুটি গুরুত্বপূর্ণ ধারণা যা আধুনিক ওয়েব ডেভেলপমেন্ট প্রক্রিয়ায় ব্যবহৃত হয়। ExpressJS অ্যাপ্লিকেশনের উন্নয়ন ও ডিপ্লয়মেন্টে এই দুটি পদ্ধতি ব্যবহার করে, আপনি কোডের ভার্সন ট্র্যাক করতে পারবেন এবং পরিবর্তনগুলো স্বয়ংক্রিয়ভাবে সার্ভারে ডিপ্লয় করতে পারবেন, যা অ্যাপ্লিকেশন পরিচালনা সহজ এবং দ্রুততর করে তোলে।


১. Version Control (ভার্সন কন্ট্রোল) ব্যবস্থাপনা

Version Control হল একটি সিস্টেম যা আপনার কোডের পরিবর্তনগুলো ট্র্যাক করে এবং বিভিন্ন ডেভেলপারদের মধ্যে সমন্বয় সাধন করে। সাধারণভাবে, Git হলো সবচেয়ে জনপ্রিয় ভার্সন কন্ট্রোল টুল। Git ব্যবহার করে আপনি আপনার কোডের ভার্সন তৈরি, ম্যানেজ এবং শেয়ার করতে পারেন।

১.১. Git ইনস্টলেশন

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

১.২. একটি নতুন Git রিপোজিটরি তৈরি করা

ExpressJS অ্যাপ্লিকেশনে Git রিপোজিটরি তৈরি করতে, প্রথমে আপনার প্রোজেক্ট ডিরেক্টরিতে যান এবং নিচের কমান্ডগুলো চালান:

git init

এটি একটি নতুন Git রিপোজিটরি তৈরি করবে। এরপর আপনার পরিবর্তনগুলো Git-এ যোগ করার জন্য:

git add .

এবং কমিট করার জন্য:

git commit -m "Initial commit"

১.৩. GitHub বা GitLab-এ রিপোজিটরি তৈরি করা

আপনি আপনার কোড GitHub বা GitLab-এ পাবলিশ করতে পারেন। GitHub এ একটি নতুন রিপোজিটরি তৈরি করার পর, আপনার লোকাল রিপোজিটরিকে রিমোট রিপোজিটরির সাথে সংযুক্ত করতে নিচের কমান্ডটি ব্যবহার করুন:

git remote add origin https://github.com/username/repository-name.git
git push -u origin master

এটি আপনার কোড GitHub বা GitLab-এ আপলোড করবে।


২. Continuous Deployment (CD) সেটআপ

Continuous Deployment (CD) হল একটি প্রক্রিয়া যা প্রতিবার কোড কমিট করার পর, সেই কোডকে স্বয়ংক্রিয়ভাবে একটি সার্ভারে ডিপ্লয় করে। এটি একটি প্রক্রিয়া যা আপনার অ্যাপ্লিকেশনকে প্রোডাকশন সার্ভারে ডিপ্লয় করার জন্য ব্যবহৃত হয়, সাধারণত কোনো CI/CD টুল ব্যবহার করে, যেমন GitHub Actions, GitLab CI, Jenkins, বা CircleCI

২.১. GitHub Actions ব্যবহার করে CD সেটআপ

GitHub Actions হল একটি CI/CD টুল যা GitHub রিপোজিটরিতে বিল্ট-ইন থাকে। এটি আপনার অ্যাপ্লিকেশনকে স্বয়ংক্রিয়ভাবে ডিপ্লয় করার জন্য ব্যবহৃত হতে পারে। নিচে GitHub Actions এর মাধ্যমে ExpressJS অ্যাপ্লিকেশনকে Heroku বা DigitalOcean-এ ডিপ্লয় করার একটি উদাহরণ দেওয়া হলো।

২.১.১. GitHub Actions Workflow তৈরি করা

আপনি .github/workflows ফোল্ডারে একটি YAML ফাইল তৈরি করে GitHub Actions workflow কনফিগার করতে পারেন। ধরুন, আপনি একটি Heroku অ্যাপ্লিকেশন ডিপ্লয় করতে চান:

  1. Heroku অ্যাপ্লিকেশন তৈরি করুন (Heroku অ্যাকাউন্ট থাকতে হবে)।
  2. আপনার Heroku API Key এবং অ্যাপ্লিকেশন নাম কনফিগার করুন।

নিচে একটি উদাহরণ GitHub Actions workflow ফাইল দেখানো হলো:

.github/workflows/deploy.yml:

name: Deploy to Heroku

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install dependencies
      run: npm install

    - name: Log in to Heroku
      uses: akshnz/heroku-login-action@v1
      with:
        heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
      
    - name: Deploy to Heroku
      run: git remote add heroku https://git.heroku.com/<your-heroku-app-name>.git && git push heroku main

এখানে:

  • on.push.branches: যেকোনো সময় main ব্রাঞ্চে কোড পুশ করলে এই workflow রান হবে।
  • Steps: কোড চেকআউট, Node.js সেটআপ, ডিপেনডেন্সি ইন্সটল এবং Heroku তে ডিপ্লয় করা হয়।
২.১.২. Secrets কনফিগার করা

GitHub Secrets-এ গিয়ে আপনার HEROKU_API_KEY এবং Heroku অ্যাপের নাম সংরক্ষণ করুন, যাতে সেগুলো সিক্রেটভাবে ব্যবহৃত হয়।


২.২. GitLab CI/CD ব্যবহার করে CD সেটআপ

GitLab CI/CD একটি শক্তিশালী টুল যা GitLab রিপোজিটরি ব্যবহার করে স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশন ডিপ্লয় করতে সাহায্য করে। এটি gitlab-ci.yml ফাইলে কনফিগার করা হয়।

.gitlab-ci.yml ফাইলের একটি উদাহরণ:

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - apt-get update -y
    - apt-get install -y heroku
    - git remote add heroku https://git.heroku.com/<your-heroku-app-name>.git
    - git push heroku master
  only:
    - main

এখানে:

  • deploy স্টেজে Heroku তে কোড ডিপ্লয় করা হচ্ছে।
  • এই কমান্ডগুলো main ব্রাঞ্চে পুশ হওয়ার পর স্বয়ংক্রিয়ভাবে রান হবে।

৩. CD প্রক্রিয়া এবং Version Control এর উপকারিতা

Version Control এবং CD একত্রে ব্যবহারের ফলে যে উপকারিতাগুলো পাওয়া যায় তা হলো:

৩.১. কোড ট্র্যাকিং এবং সমন্বয়

  • Version Control এর মাধ্যমে আপনি যেকোনো সময়ে আপনার কোডের পূর্ববর্তী ভার্সনে ফিরে যেতে পারবেন, যা ডেভেলপমেন্টে ভুল হলে সংশোধন সহজ করে।
  • একাধিক ডেভেলপার একসাথে কাজ করতে পারে এবং কোডের পরিবর্তনগুলোর ইতিহাস ট্র্যাক করা যায়।

৩.২. দ্রুত ডিপ্লয়মেন্ট

  • Continuous Deployment প্রক্রিয়ার মাধ্যমে কোড পরিবর্তনের সাথে সাথে অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে ডিপ্লয় হয়, যা ডিপ্লয়মেন্টের সময় কমিয়ে দেয় এবং দ্রুত ফিচার রিলিজ সম্ভব করে।
  • এটি কোন মানবিক ভুল কমাতে সাহায্য করে এবং ডিপ্লয়মেন্টের প্রক্রিয়াটি ধারাবাহিক রাখে।

৩.৩. ব্যাকআপ এবং রোলব্যাক

  • Version Control ব্যবহার করে আপনি আপনার কোডের বিভিন্ন ভার্সন সংরক্ষণ করতে পারেন, এবং যখনই কোনো সমস্যা হয়, আপনি সহজেই পূর্ববর্তী বা স্থিতিশীল ভার্সনে রোলব্যাক করতে পারেন।

৩.৪. স্বয়ংক্রিয় পরীক্ষণ এবং বিল্ড

  • CI/CD প্রক্রিয়ায়, আপনি কোডের কমিটের সাথে সাথেই auto-tests চালাতে পারেন এবং সফলভাবে পাস হলে কোড স্বয়ংক্রিয়ভাবে প্রোডাকশন সার্ভারে ডিপ্লয় হবে।

সারাংশ

Continuous Deployment (CD) এবং Version Control ExpressJS অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত দুটি গুরুত্বপূর্ণ প্রক্রিয়া। Git এবং GitHub Actions, GitLab CI/CD এর মতো টুলস ব্যবহারের মাধ্যমে আপনি আপনার কোডের ভার্সন ট্র্যাক করতে পারেন এবং প্রতি কোড পুশের সাথে সাথেই অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে ডিপ্লয় করতে পারেন। এই প্রক্রিয়াগুলি দ্রুত ডেভেলপমেন্ট, পরীক্ষা এবং ডিপ্লয়মেন্ট নিশ্চিত করে এবং ডেভেলপমেন্ট প্রক্রিয়াটি আরও সুরক্ষিত এবং মডুলার করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...