DEV Community

Md Tariqul Islam
Md Tariqul Islam

Posted on • Edited on

Express.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS)

সংক্ষিপ্ত বিবরণ

এই ডকুমেন্টেশনটি Hostinger VPS-এ Express.js ব্যাকএন্ড ডিপ্লয় করার ধাপে ধাপে নির্দেশনা প্রদান করে। এটি naturalsefa.com ডোমেইনের জন্য API এন্ডপয়েন্ট (/api) সেটআপ করে। মূল ডোমেইন (naturalsefa.com) একটি প্রধান ওয়েবসাইট হোস্ট করে। Nginx, PM2, এবং গিটহাব অ্যাকশন ব্যবহার করা হয়েছে।

প্রয়োজনীয়তা

  • Hostinger VPS: Ubuntu 22.04 বা তার উপরের ভার্সন, SSH অ্যাক্সেস সহ।
  • ডোমেইন: naturalsefa.com.
  • গিটহাব রিপোজিটরি: Express.js প্রজেক্ট হোস্ট করা।
  • Environment Variables: PORT এবং অন্যান্য API-সম্পর্কিত কী।
  • টুলস: SSH ক্লায়েন্ট, Git, টেক্সট এডিটর।
  • প্রি-ইনস্টলড সফটওয়্যার: Node.js (v18.17+) Nginx PM2
  • গিটহাব সিক্রেটস:
  • VPS_IP: VPS-এর পাবলিক IP
  • VPS_USERNAME: VPS-এর ইউজারনেম
  • SSH_PRIVATE_KEY: SSH প্রাইভেট কী
  • SSH_PASSPHRASE: SSH কী-এর পাসফ্রেজ (যদি থাকে)

ধাপসমূহ

ধাপ ১: VPS সেটআপ

  • VPS-এ লগইন:
ssh root@your-vps-ip
Enter fullscreen mode Exit fullscreen mode
  • প্রয়োজনীয় সফটওয়্যার ইনস্টল:
  • Node.js:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
Enter fullscreen mode Exit fullscreen mode
  • Nginx:
sudo apt install nginx -y
sudo systemctl enable nginx
Enter fullscreen mode Exit fullscreen mode
  • PM2:
sudo npm install -g pm2
Enter fullscreen mode Exit fullscreen mode
  • Git:
sudo apt install git -y
Enter fullscreen mode Exit fullscreen mode

ধাপ ২: ডোমেইন DNS সেটআপ

  • Hostinger-এর DNS সেটিংসে যান।
  • নিচের রেকর্ড যোগ করুন:
Type: A
Name: @
Value: your-vps-ip
TTL: 14400

Type: A
Name: www
Value: your-vps-ip
TTL: 14400
Enter fullscreen mode Exit fullscreen mode
  • DNS প্রোপাগেশনের জন্য ২৪ ঘণ্টা পর্যন্ত অপেক্ষা করুন।

ধাপ ৩: Express.js প্রজেক্ট ডিপ্লয়

2.1: naturalsefa.com

  • প্রজেক্ট ক্লোন:
mkdir -p ~/apps/naturalsefa/server
cd ~/apps/naturalsefa/server
git clone git@github.com:yourusername/naturalsefa-backend-repo.git .
Enter fullscreen mode Exit fullscreen mode
  • Environment Variables:
nano ~/apps/naturalsefa/server/.env
Enter fullscreen mode Exit fullscreen mode
PORT=4000
Enter fullscreen mode Exit fullscreen mode
  • বিল্ড এবং রান:
npm install
pm2 start index.js --name "naturalsefa-backend"
pm2 save
pm2 startup
Enter fullscreen mode Exit fullscreen mode

যদি auto redeploy করতে চান

ধাপ ৪: গিটহাব অ্যাকশন সেটআপ

  • naturalsefa-backend রিপোজিটরির জন্য:
mkdir -p .github/workflows
nano .github/workflows/deploy.yml
Enter fullscreen mode Exit fullscreen mode
name: Deploy Express.js to VPS
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: Deploy to VPS
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.VPS_IP }}
          username: ${{ secrets.VPS_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          passphrase: ${{ secrets.SSH_PASSPHRASE }}
          script: |
            cd ~/apps/naturalsefa/server
            git pull origin main
            npm install
            pm2 restart naturalsefa-backend
Enter fullscreen mode Exit fullscreen mode
  • গিটহাব সিক্রেটস:
  • Settings > Secrets > Actions সেকশনে:
  • VPS_IP: 203.0.113.10
  • VPS_USERNAME: root
  • SSH_PRIVATE_KEY: SSH প্রাইভেট কী
  • SSH_PASSPHRASE: পাসফ্রেজ (যদি থাকে)

ধাপ ৫: Nginx কনফিগারেশন

naturalsefa.com:

sudo nano /etc/nginx/sites-available/naturalsefa.com
Enter fullscreen mode Exit fullscreen mode
server {
    listen 80;
    server_name naturalsefa.com www.naturalsefa.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name naturalsefa.com;
    ssl_certificate /etc/letsencrypt/live/naturalsefa.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/naturalsefa.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location /api {
        proxy_pass http://localhost:4001;
        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;
    }
}

server {
    listen 443 ssl;
    server_name www.naturalsefa.com;
    ssl_certificate /etc/letsencrypt/live/naturalsefa.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/naturalsefa.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    return 301 https://naturalsefa.com$request_uri;
}
Enter fullscreen mode Exit fullscreen mode
  • সাইট এনাবল এবং রিস্টার্ট:
sudo ln -s /etc/nginx/sites-available/naturalsefa.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Enter fullscreen mode Exit fullscreen mode

ধাপ ৬: SSL সার্টিফিকেট সেটআপ

  • Certbot ইনস্টল:
sudo apt install certbot python3-certbot-nginx -y
Enter fullscreen mode Exit fullscreen mode
  • SSL সার্টিফিকেট তৈরি:

  • naturalsefa.com:

sudo certbot --nginx -d naturalsefa.com -d www.naturalsefa.com -d tariqul.naturalsefa.com
Enter fullscreen mode Exit fullscreen mode
  • অটো-রিনিউয়াল চেক:
sudo certbot renew --dry-run
Enter fullscreen mode Exit fullscreen mode

ধাপ ৭: টেস্টিং

  • API এন্ডপয়েন্ট:
  • ব্রাউজারে বা Postman-এ চেক করুন:
  • https://naturalsefa.com/api
  • গিটহাব অ্যাকশন:
git add .
git commit -m "Test auto-deploy"
git push origin main
Enter fullscreen mode Exit fullscreen mode
  • গিটহাব Actions ট্যাবে স্ট্যাটাস চেক করুন।
  • VPS-এ ফাইল চেক:
ls -la ~/apps/naturalsefa/server
Enter fullscreen mode Exit fullscreen mode

সমস্যা সমাধান

  • গিটহাব অ্যাকশন ত্রুটি:
  • Actions ট্যাবে লগ চেক করুন।

  • SSH কী চেক:

ssh -i ~/.ssh/id_rsa your_vps_username@your_vps_ip
Enter fullscreen mode Exit fullscreen mode
  • Nginx ত্রুটি:
sudo tail -f /var/log/nginx/error.log
Enter fullscreen mode Exit fullscreen mode
  • PM2 ত্রুটি:
pm2 logs naturalsefa-backend
Enter fullscreen mode Exit fullscreen mode

সিকিউরিটি সুপারিশ

  • SSH: Password-এর পরিবর্তে SSH key ব্যবহার করুন।
  • Root লগইন: /etc/ssh/sshd_config-এ PermitRootLogin no সেট করুন।
  • মনিটরিং: UptimeRobot দিয়ে API মনিটর করুন।

রেফারেন্স

  • Express.js ডকুমেন্টেশন
  • গিটহাব অ্যাকশন ডকুমেন্টেশন
  • Nginx ডকুমেন্টেশন

পরিশিষ্ট

  • তারিখ: ৮ জুলাই, ২০২৫
  • লেখক: Tariqul Islam
  • যোগাযোগ: প্রশ্ন থাকলে Hostinger সাপোর্ট বা ডেভেলপারের সাথে যোগাযোগ করুন।

Top comments (0)