আরে সবাই, আজ আমি একটি Amazon EC2 সার্ভারে NodeJS/Express ব্যবহার করে একটি দ্রুত REST API স্থাপন করার জন্য আমার প্রিয় উপায়গুলির একটিতে একটি টিউটোরিয়াল করতে চাই৷ এই কৌশলটি মূলত আপনার EC2 সার্ভারকে আপনার GitHub সংগ্রহস্থলে পুশ করা পরিবর্তনগুলির প্রতিক্রিয়া জানাতে সক্ষম করে।
একটি NodeJS/Express অ্যাপ লাইভ করার জন্য আপনার মেশিনে একটি নতুন ডিরেক্টরি তৈরি করুন। আমি আমার rekognition
কল করছি
একটি টার্মিনাল খুলুন, এবং একটি package.json npm init -y
শুরু করতে এই কমান্ডটি চালান
express.js npm i express
ইনস্টল করুন
ডিফল্ট রুটে 'হ্যালো ওয়ার্ল্ড' সহ একটি মৌলিক এক্সপ্রেস সার্ভার তৈরি করুন
const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });
আপনি 'হ্যালো ওয়ার্ল্ড' দেখছেন তা নিশ্চিত করতে পরীক্ষা করুন! http://localhost:3000/
ভাল কাজ, এক ধাপ সম্পূর্ণ! 💪
আপনার ডিরেক্টরিতে একটি গিট রেপো শুরু করুন এবং আপনার প্রথম প্রতিশ্রুতি তৈরি করুন -
git init git add . git commit -m "First commit"
আপনার GitHub অ্যাকাউন্টে একটি দূরবর্তী সংগ্রহস্থল তৈরি করুন
মূল হিসাবে নতুন রেপো যোগ করুন, এবং আপনার শাখা ধাক্কা.
git remote add origin <REMOTE_REPOSITORY_URL> git push -u origin master
<REMOTE_REPOSITORY_URL>
রিমোট রেপোর লিঙ্ক দিয়ে প্রতিস্থাপন করুন যা আপনি এইমাত্র তৈরি করেছেন।
'প্রধান' এর পরিবর্তে ডিফল্ট শাখা হিসাবে 'মাস্টার' ব্যবহার করতে আপনার সংগ্রহস্থলের সেটিংস পরিবর্তন করতে হতে পারে।
আপনি এটি করার পরে আপনি 'প্রধান' শাখা মুছে ফেলতে পারেন।
ধাপ 2: সম্পূর্ণ! আমরা গ্যাস দিয়ে রান্না করছি ⛽️
আপনার EC2 ইন্সট্যান্স চালু করার ধাপগুলি এখানে রয়েছে:
EC2 ড্যাশবোর্ডে নেভিগেট করুন এবং একটি নতুন উদাহরণ চালু করুন।
একটি উপযুক্ত AMI (Amazon Machine Image) নির্বাচন করুন; আমি Amazon Linux 2 ব্যবহার করছি।
এখন, একটি টার্মিনালে SSH এর মাধ্যমে আপনার সার্ভারে লগ ইন করার পরীক্ষা করা যাক:
ssh ec2-user@<YOUR_SERVER_IP> -i <YOUR_PRIVATE_KEY>.pem
আপনি আপনার EC2 উদাহরণের জন্য সংজ্ঞায়িত মান দিয়ে সেখানে ভেরিয়েবলগুলি প্রতিস্থাপন করুন।
আপনি যদি এটি দেখতে পান যে আপনি আপনার সার্ভারের সাথে সংযুক্ত হয়েছেন, অভিনন্দন! 👏
আমাদের সার্ভারে NodeJS ইনস্টল করা যাক:
sudo yum install -y nodejs
npm এর মাধ্যমে আমাদের সার্ভারে বিশ্বব্যাপী pm2 ইনস্টল করুন
sudo npm i -g pm2
সার্ভারে গিট ইনস্টল করুন এবং আপনার শংসাপত্রগুলি কনফিগার করুন:
sudo yum install git -y
git config --global user.name "Your Name" git config --global user.email "[email protected]"
ঠিক আছে, এখন আমরা একটি var/www/
ফোল্ডার তৈরি করতে যাচ্ছি যদি এটি ইতিমধ্যে বিদ্যমান না থাকে:
sudo mkdir -p /var/www
তারপর আমাদের ec2-ব্যবহারকারীর মালিকানা যোগ করুন:
sudo chown -R ec2-user:ec2-user /var/www
আপনার সার্ভারের রুট থেকে ডিরেক্টরিতে নেভিগেট করুন — /home ফোল্ডার লোকেদের নয় 👌 cd ~/var/www
এখন, এখান থেকে, আমরা আমাদের গিট রিপোজিটরি ক্লোন করব: git clone https://github.com/USERNAME/REPO_NAME.git YOUR_PROJECT_DIRECTORY
আপনার নিজস্ব মান দিয়ে [USERNAME] [REPO_NAME] এবং [YOUR_PROJECT_DIRECTORY] প্রতিস্থাপন করুন।
এরপরে, আমরা ডিরেক্টরিটিকে আমাদের সংগ্রহস্থলে পরিবর্তন করি, তাই cd YOUR_PROJECT_DIRECTORY
আমাদের pm2 সেটআপের জন্য ecosystem.config.js
ফাইল তৈরি করতে পারে:
nano ecosystem.config.js
এটি এই মত দেখায়:
module.exports = { apps : [{ name: "my-app", // A name for your application script: "app.js", // The script file to launch the app instances: "max", // This can be set to the number of CPU cores to use, or "max" to use all available autorestart: true, // Automatically restart app if it crashes watch: false, // Enable/disable watching file changes for automatic restart max_memory_restart: '1G', // Optional: Restart app if it reaches a memory limit env: { NODE_ENV: "development", }, env_production: { NODE_ENV: "production", } }] };
শীতল মটরশুটি, ঠিক আছে — একবার এটি তৈরি এবং সংরক্ষিত হয়ে গেলে, আসুন pm2 দিয়ে অ্যাপটি শুরু করি:
pm2 start ecosystem.config.js
এখন, আমরা পরীক্ষা করতে পারি যে আমাদের একটি 'হ্যালো ওয়ার্ল্ড!' পোর্ট 3000 এ আমাদের সার্ভার থেকে:
সার্ভার রিস্টার্টে pm2 স্বয়ংক্রিয়ভাবে শুরু করতে, চলুন চালাই:
pm2 save pm2 startup
আপনার সার্ভার চলছে কিনা তা পরীক্ষা করতে, আপনি pm2 status
করতে পারেন; আপনি এখানে pm2 এ ডক্স পড়তে পারেন
আপনি যদি এটি এতদূর করে থাকেন তবে আপনি একজন সুপারস্টার ⭐️
এটি আমাদের প্রক্রিয়ার শেষ ধাপ। যে কোনো সময় আমাদের মাস্টার ব্রাঞ্চে পরিবর্তন করা হলে আমাদের সার্ভার আপডেট করার জন্য আমরা Github অ্যাকশনের জন্য একটি .yml
ফাইল তৈরি করতে যাচ্ছি
আপনার সংগ্রহস্থলে, 'ক্রিয়া' ট্যাবে যান এবং একটি নতুন কাস্টম ওয়ার্কফ্লো তৈরি করুন। আমি আমার nodejs.yml
কল করছি
রেপো আপডেট এবং pm2 পুনরায় চালু করার জন্য এখানে .yml ফাইল রয়েছে:
name: Node.js CI/CD on Amazon Linux on: push: branches: [ master ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install dependencies run: npm install - name: Deploy to AWS EC2 uses: appleboy/scp-action@master with: host: ${{ secrets.REMOTE_HOST }} username: ${{ secrets.REMOTE_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} source: "./" # This now correctly points to the current directory target: "/var/www/your_project_directory" - name: Restart PM2 application uses: appleboy/ssh-action@master with: host: ${{ secrets.REMOTE_HOST }} username: ${{ secrets.REMOTE_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | cd /var/www/your_project_directory pm2 reload all # This command restarts your application
'your_project_directory' আপডেট করতে ভুলবেন না
অবশেষে, আপনাকে এই পরিবেশের গোপনীয়তাগুলি যোগ করতে হবে। REMOTE_HOST
এটি আপনার সার্ভারের IP ঠিকানা; REMOTE_USER
এটি Amazon Linux 2 AMI-এর জন্য ec2-user
, এবং তারপর SSH_PRIVATE_KEY
হিসাবে আপনার .pem ফাইলের বিষয়বস্তু পেস্ট করুন
আপনি সংগ্রহস্থল সেটিংসে এই সব করতে পারেন:
এটাই! আমাদের কাজ শেষ হয়ে গেছে 😁
আপনি 'হ্যালো ওয়ার্ল্ড' বার্তাটি পরিবর্তন করে এবং সেই পরিবর্তনটি আপনার মাস্টার শাখায় ঠেলে দিয়ে এই সমস্ত পরীক্ষা করতে পারেন; তারপরে আপনাকে http://your.ip.address:3000
এ আপডেটটি দেখতে হবে
এটি সেট আপ করা কিছুটা প্রক্রিয়া, কিন্তু আপনি যখন বিকাশ করছেন, তখন আপনার REST API সার্ভারে স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি স্থাপন করার জন্য একটি সহজ CI/CD পাইপলাইন থাকা সত্যিই চমৎকার। এইভাবে, আপনি দ্রুত পরিবর্তনগুলি লাইভ স্থাপন করতে পারেন এবং আপনার ওয়েব/মোবাইল অ্যাপ্লিকেশনের সামনের প্রান্তে দেখতে পারেন৷
মন্তব্যে এটি দরকারী ছিল কিনা তা আমাকে জানান, এবং পড়ার জন্য ধন্যবাদ!!
শান্তি শেষ,
— ওয়েস