VPS

⌘K
  1. Home
  2. VPS
  3. cicd
  4. cicd github python

cicd github python

🔰 Part 1: Local Python Bot Project Initialization (Windows)


✅ Step 1: googlebot/ নামের প্রজেক্ট ফোল্ডার তৈরি করা

mkdir googlebot
cd googlebot

এটা হবে তোমার পুরো বট প্রজেক্টের মূল ফোল্ডার।


✅ Step 2: Python virtual environment তৈরি করা

python -m venv venv

এটা venv/ নামে এক ফোল্ডার বানাবে যেখানে Python ও Pip আলাদা থাকবে, যাতে তোমার সিস্টেমে কিছু নষ্ট না হয়।


✅ Step 3: virtualenv অ্যাক্টিভ করা (Windows)

venv\Scripts\activate

তুমি যদি bash ইউজ করো: source venv/Scripts/activate
এখন টার্মিনাল লাইনে (venv) লেখা থাকবে — মানে virtualenv active।


✅ Step 4: Playwright লাইব্রেরি ইনস্টল করা

pip install playwright

Playwright দিয়ে আমরা browser (Chrome/Chromium) চালিয়ে Google search করবো।


✅ Step 5: Chromium browser install করা

python -m playwright install

এটা Playwright এর backend browser ডাউনলোড করবে, যেমন Chromium, Firefox ইত্যাদি।


✅ Step 6: main.py নামে bot স্ক্রিপ্ট তৈরি করা

# main.py
from playwright.sync_api import sync_playwright

def run():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto("https://www.google.com")
        page.fill("input[name='q']", "prime minister in bd")
        page.keyboard.press("Enter")
        page.wait_for_timeout(3000)
        print("🔍 Page Title:", page.title())
        browser.close()

if __name__ == "__main__":
    run()

এই কোডটা Google এ গিয়ে “prime minister in bd” সার্চ করে Page Title প্রিন্ট করবে।


✅ Step 7: requirements.txt তৈরি করা

pip freeze > requirements.txt

এটা সমস্ত ইনস্টলকৃত লাইব্রেরি লিস্ট করবে, যেমন playwright==1.x.x ইত্যাদি।
এই ফাইল পরে VPS-এ ইনস্টল করার সময় কাজে লাগবে।


✅ Step 8: .gitignore, .env, README.md ফাইল তৈরি করা

🔹 .gitignore:

__pycache__/
*.pyc
venv/
.env

🔹 .env (optional):

BOT_QUERY=prime minister in bd

🔹 README.md:

# Google Search Bot

A simple Python bot that uses Playwright to search Google and print the result page title.

✅ Step 9: Git Init এবং Commit করা

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

তোমার প্রজেক্ট git repo হিসেবে তৈরি হলো।


✅ Step 10: GitHub Repo তৈরি করে push করা

git remote add origin https://github.com/yourusername/googlebot.git
git push -u origin main

GitHub এ repo তৈরি করে URL কপি করে origin হিসেবে যোগ করো।


✅ শেষ টেস্ট:

python main.py

যদি 🔍 Page Title: এর মত output আসে, তাহলে সব ঠিক!



⚙️ Part 2 (Updated): VPS Server Setup for Python Bot Deployment (Using python3 only)

🎯 লক্ষ্য: VPS-এ Python 3 ও Pip 3 ব্যবহার করে bot deployment environment তৈরি করা


✅ Step 2.1: VPS-এ SSH দিয়ে লগইন

ssh root@your-vps-ip

উদাহরণ:

ssh root@217.65.145.29

✅ Step 2.2: সার্ভার আপডেট ও Python 3 related প্যাকেজ ইনস্টল

sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-venv python3-pip git curl -y

✅ Step 2.3: Node.js ইনস্টল (PM2 ব্যবহারের জন্য ভবিষ্যতের জন্য এখনই করো)

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

✅ Step 2.4: GitHub থেকে কোড ক্লোন করা

cd ~
git clone https://github.com/yourusername/googlebot.git
cd googlebot

তুমি চাইলে SSH দিয়ে git@github.com: ফরম্যাটেও ক্লোন করতে পারো যদি VPS-এ SSH key configure করা থাকে।


✅ Step 2.5: Python 3 virtualenv তৈরি ও অ্যাক্টিভ

python3 -m venv venv
source venv/bin/activate

✅ Step 2.6: requirements.txt থেকে লাইব্রেরি ইনস্টল

pip3 install --upgrade pip
pip3 install -r requirements.txt

Playwright থাকলে এই কমান্ডও চালাও:

python3 -m playwright install

✅ Step 2.7: Bot রান করে টেস্ট করা

python3 main.py

যদি 🔍 Page Title: প্রিন্ট হয় তাহলে সবকিছু ঠিকমতো কাজ করছে।


✅ এই Part শেষে তুমি যেটা পাচ্ছো:

  • Python 3, pip3, virtualenv, Git, Node.js ইনস্টল ✅
  • Bot প্রজেক্ট GitHub থেকে pull ✅
  • Virtualenv সহ dependency install ✅
  • Bot চালু ও কাজ করছে ✅

এখানে থাকছে পুরো Part 3 সফটওয়্যার ইঞ্জিনিয়ার লেভেলের breakdown সহ


🚀 Part 3 (Updated): PM2 দিয়ে Python Bot 24/7 চালানো — একদম স্ক্র্যাচ থেকে

🎯 লক্ষ্য: PM2 দিয়ে Python bot সারাক্ষণ চালানো, multiple bot without conflict, auto restart, log সহ।


✅ Step 3.1: PM2 ইনস্টল করা (প্রথমবার একবারই লাগবে)

sudo npm install -g pm2

👉 ইনস্টল চেক:

pm2 -v

✅ Step 3.2: Python Virtualenv লোকেশন বের করা (interpreter path)

তুমি যেখানে virtualenv করেছো সেখানে যাও:

cd ~/googlebot

তারপর দেখো Python কোথায় আছে:

which python3

কিংবা যদি virtualenv অ্যাক্টিভ করা থাকে:

source venv/bin/activate
which python

✅ Output হবে এরকম:

/root/googlebot/venv/bin/python

এটাই তোমার --interpreter path হবে।


✅ Step 3.3: PM2 দিয়ে Bot চালানো (conflict-free)

Example 1: একটাই bot

pm2 start main.py \
  --name=googlebot \
  --interpreter=/root/googlebot/venv/bin/python

✅ যদি multiple bot থাকে (like sendbot.py, schedulebot.py, dailybot.py)

pm2 start sendbot.py \
  --name=sendbot \
  --interpreter=/root/googlebot/venv/bin/python

pm2 start schedulebot.py \
  --name=scheduler \
  --interpreter=/root/googlebot/venv/bin/python

pm2 start dailybot.py \
  --name=daily \
  --interpreter=/root/googlebot/venv/bin/python

প্রত্যেকটার --name আলাদা রাখতে হবে ✅
interpreter same থাকলেও কোনো conflict হবে না ✅


✅ Step 3.4: PM2 Process Status দেখা

pm2 list

✅ Output:

┌────┬────────────┬────────────┬────┬────────┬────────┐
idnamescript...statusmemory
├────┼────────────┼────────────┼────┼────────┼────────┤
0googlebotmain.py...online...
1sendbotsendbot.py...online...
2dailydailybot.py...online...
└────┴────────────┴────────────┴────┴────────┴────────┘

✅ Step 3.5: Log দেখা & মনিটর করা

pm2 logs googlebot
pm2 logs sendbot
pm2 logs all

প্রতিটি bot আলাদা log stream রাখে, তুমি চাইলে log ফাইলে redirect করে রাখতে পারো --log ফ্ল্যাগ দিয়ে।


✅ Step 3.6: Server Reboot হলেও bot Auto Start

pm2 startup

📌 এক লাইনের একটি কমান্ড আসবে (যেমন sudo env PATH=...), সেটি কপি করে রান করো।

তারপর:

pm2 save

✅ এখন VPS রিবুট হলেও bot চালু থাকবে।


✅ Step 3.7: Restart / Stop / Delete

pm2 restart googlebot
pm2 stop sendbot
pm2 delete daily

🧠 টিপস:

দরকারকমান্ড
সবগুলো দেখোpm2 list
নির্দিষ্ট bot logpm2 logs botname
সবগুলো bot logpm2 logs
শুধু Error logpm2 logs --err

✅ এই Part শেষে তুমি যা পারবে:

✅ একাধিক bot (Python script) আলাদা আলাদা নামে ২৪/৭ চালাতে
✅ Virtualenv এর interpreter দিয়ে isolate করে রাখতে
✅ Log দেখতে, restart দিতে, reboot হলে auto-start করতে



🔄 Part 4: GitHub Actions CI/CD Automation (Pro Engineer-Level Breakdown)

🎯 লক্ষ্য:
GitHub → Push করলে → VPS-এ SSH Login হবে → কোড pull হবে → requirements ইনস্টল হবে → PM2 দিয়ে restart হবে।


🧱 Step-by-Step Breakdown


✅ Step 4.1: GitHub Repo তে .github/workflows/deploy.yml তৈরি করা

👉 Folder বানাও (Windows):

mkdir -p .github/workflows

👉 ফাইল তৈরি করো:

notepad .github\workflows\deploy.yml

✅ Step 4.2: GitHub Secrets সেট করা

GitHub Repo → SettingsSecrets and variablesActionsNew repository secret

তুমি নিচের ৩টি Secret দেবে:

NameDescription
VPS_HOSTতোমার VPS এর IP Address (e.g. 217.x.x.x)
VPS_USERসাধারণত root
VPS_KEYতোমার private SSH key (id_rsa) content

📌 .ssh/id_rsa content Windows CMD থেকে দেখতে:

type C:\Users\yourusername\.ssh\id_rsa

✅ Step 4.3: Deploy YAML ফাইল লিখো (Full File)

name: Deploy Python Bot to VPS

on:
  push:
    branches:
      - main

jobs:
  deploy:
    name: Deploy via SSH
    runs-on: ubuntu-latest

    steps:
    - name: Checkout Repo
      uses: actions/checkout@v3

    - name: SSH into VPS and Deploy Bot
      uses: appleboy/ssh-action@v0.1.10
      with:
        host: ${{ secrets.VPS_HOST }}
        username: ${{ secrets.VPS_USER }}
        key: ${{ secrets.VPS_KEY }}
        port: 22
        script: |
          echo "🔐 Connecting to VPS..."
          cd ~/googlebot
          echo "🔄 Pulling latest code..."
          git pull origin main
          echo "🐍 Activating venv..."
          source venv/bin/activate
          echo "📦 Installing dependencies..."
          pip install -r requirements.txt
          echo "🚀 Restarting bot via PM2..."
          pm2 restart googlebot

🧠 ইঞ্জিনিয়ার লেভেল বিশ্লেষণ:

YAML Keyকাজ
on.push.branchesmain branch-এ push হলেই ট্রিগার
runs-onGitHub এর virtual machine কোন OS চালাবে
uses: actions/checkoutRepo-এর কোড clone করবে runner-এ
appleboy/ssh-actionGitHub থেকে VPS-এ SSH login করে command চালায়
script:VPS-এ যে command গুলো SSH হয়ে রান হবে

✅ Step 4.4: Commit and Push

git add .github/workflows/deploy.yml
git commit -m "CI/CD: Auto deploy setup"
git push origin main

✅ Step 4.5: Check GitHub Actions রান করছে কিনা

  1. GitHub → Repo → Actions tab-এ যাও
  2. দেখো নতুন Deploy Python Bot to VPS রান শুরু হয়েছে কিনা
  3. ✅ হলে সফল
  4. ❌ হলে log খুলে দেখো কোথায় issue

🔐 Bonus: SSH Debugging টিপস

  • If permission denied: SSH key ঠিকমতো GitHub Secrets এ paste হয়েছে কি না চেক করো
  • যদি GitHub কোড pull করতে পারে না: VPS এ repo origin ঠিক আছে কি না চেক করো
  • যদি pm2 restart কাজ না করে: PM2 নাম ঠিক আছে (pm2 list দিয়ে চেক)

✅ এই Part শেষে তুমি যা পারো:

কাজনিশ্চিত
GitHub এ push → VPS এ deploy
SSH Key নিরাপদভাবে ব্যবহার
কোড pull + pip install + pm2 restart
Logging এবং Debugging

Gunicorn দিয়ে Flask/FastAPI bot deploy করা এবং PM2 বা systemd দিয়ে serve করার জন্য।

তুমি যদি API-based bot বানাও, বলো: “Part 5 দাও” — আমি Gunicorn সহ full system দিচ্ছি।


🧰 Part 5 (from scratch): Django Deployment with Gunicorn + PM2 (Pro-Ready)


🔧 Step 5.1: Django Project VPS-এ ক্লোন করা

cd ~
git clone https://github.com/yourusername/your-django-repo.git
cd your-django-repo

🎯 ধরো project folder name: myproject/
🎯 Django config folder: myproject/settings.py, myproject/wsgi.py


🐍 Step 5.2: Python virtualenv তৈরি ও অ্যাক্টিভেট

python3 -m venv venv
source venv/bin/activate

📦 Step 5.3: Requirements Install করা

pip install --upgrade pip
pip install -r requirements.txt

✅ যদি Gunicorn নাই থাকে:

pip install gunicorn

🧹 Step 5.4: Static Files সংগ্রহ করা

python manage.py collectstatic --noinput

settings.py তে ensure করো:

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

⚙️ Step 5.5: Django Settings for Production

settings.py:

DEBUG = False
ALLOWED_HOSTS = ['your-vps-ip', 'yourdomain.com']

👉 যদি .env ইউজ করো, SECRET_KEY সেখান থেকে load করো


🚀 Step 5.6: Gunicorn দিয়ে Run Test (manual)

gunicorn --workers 3 --bind 0.0.0.0:8000 myproject.wsgi:application

✅ Test: VPS browser → http://your-vps-ip:8000
✅ Success হলে: CTRL + C দিয়ে বন্ধ করো

তুমি একদম ঠিক ধরেছো ✅ — যদি তুমি Gunicorn দিয়ে কোনো port (যেমন 0.0.0.0:8003) এ externally bind করো,
এবং তুমি VPS এর firewall চালু (secure) রাখতে চাও, তাহলে ufw (Uncomplicated Firewall) configure করা একদম প্রয়োজনীয়।


🔐 তুমি যা বলছো:

এই কমান্ড Gunicorn কে 8000 port-এ publicly bind করে দেয়।
এই port firewall দিয়ে allow না করলে external browser থেকে open হবে না



🔹 Step 1: UFW install & enable (যদি আগে না করো)

sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw enable

🔹 Step 2: Gunicorn এর port (8003) allow করো

sudo ufw allow 8000

🔹 Step 3: Check করতে

sudo ufw status

Output হবে এরকম:

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8001                       ALLOW       Anywhere
8002                       ALLOW       Anywhere
8003                       ALLOW       Anywhere

🧠 Bonus: Security Best Practice

PortRecommendation
8000–8999Temporary only for dev/test
80/443Use in production (via Nginx)
0.0.0.0Open to world
127.0.0.1Only accessible by Nginx (safe)

✅ তাই production এ আমরা Gunicorn কে 127.0.0.1:8003 bind করে Nginx দিয়ে serve করি (Port 80/443),
আর development বা testing purpose এ 0.0.0.0 দিয়ে port firewall এর মাধ্যমে allow করি।


  • তুমি যদি Gunicorn সরাসরি ব্যবহার করো, তাহলে ufw allow port করা লাগবেই
  • আর যদি Nginx দিয়ে serve করো, তাহলে Gunicorn 127.0.0.1-এ bind করে public port only Nginx-এ ছাড়ো


🔁 Step 5.7: PM2 দিয়ে Gunicorn কে Always ON করো

pm2 start "gunicorn --workers 3 --bind 0.0.0.0:8000 myproject.wsgi:application" \
  --name mydjangoapp \
  --interpreter=venv/bin/python

💾 Step 5.8: PM2 Startup Enable + Save

pm2 startup
pm2 save

🔁 VPS রিবুট হলেও Django app চালু থাকবে।


🧪 Step 5.9: PM2 Logs ও Control

pm2 list
pm2 logs mydjangoapp
pm2 restart mydjangoapp
pm2 stop mydjangoapp

🧠 Bonus (Optional):

কাজকমান্ড
Gunicorn with log--access-logfile logs/access.log --error-logfile logs/error.log
Worker tuning--workers $(nproc)
Serve on port 9000--bind 0.0.0.0:9000

✅ তোমার ফুল Deployment Stack এখন দাঁড়াল:

উপাদানকাজ
GitHub → VPSকোড হোস্টিং ও ক্লোন
Python 3 + venvisolate environment
GunicornWSGI HTTP Server
PM224/7 runtime & monitoring
collectstaticstatic file serve
DEBUG=Falsesafe production

✅ তুমি এখন সম্পূর্ণভাবে Django project Gunicorn + PM2 দিয়ে live চালাতে পারো।


অসাধারণ! এখন তুমি চলে এসেছো শেষের দিকে, যেখানে আমরা Django App-কে Gunicorn দিয়ে serve করার পর, সেটাকে public web এর সামনে Nginx দিয়ে proxy করব — যেন সেটা Domain name বা SSL সহ accessible হয়।

এটাই হবে:


🛡️ Part 6: Nginx Integration with Gunicorn for Django (Software Engineer Level Breakdown)

🎯 লক্ষ্য: Gunicorn-এ চলা Django app কে Nginx দিয়ে public port (80, 443) থেকে serve করা, with static files, SSL-ready & production-configured.


✅ Full Breakdown


🧩 Step 6.1: Nginx ইনস্টল করা (VPS এ)

sudo apt update
sudo apt install nginx -y

✅ চেক করো Nginx চলছে কি না:

sudo systemctl status nginx

যদি না চলে থাকে:

sudo systemctl start nginx

🌐 Step 6.2: Gunicorn কে internal port (8000) এ চালু রাখা

তোমার আগের কমান্ড:

pm2 start "gunicorn --workers 3 --bind 127.0.0.1:8000 myproject.wsgi:application" \
  --name mydjangoapp \
  --interpreter=venv/bin/python

📌 Note:

  • bind address এখন 127.0.0.1 = শুধু internal-accessible
  • Nginx এটা কে proxy করবে

📁 Step 6.3: Static File Serve করার জন্য Django config নিশ্চিত করা

settings.py:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Collect করো:

python manage.py collectstatic --noinput

🧾 Step 6.4: Nginx Configuration ফাইল তৈরি করা

sudo nano /etc/nginx/sites-available/myproject

এখানে নিচের মতো কনফিগ দাও:

server {
    listen 80;
    server_name yourdomain.com your-vps-ip;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /root/myproject;  # static ফোলডার যেখানে collect হযেছে
    }

    location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:8000;
    }
}

✅ Change করো:

  • yourdomain.com = তোমার domain (না থাকলে IP)
  • root /root/myproject = Django static ফোল্ডারের path

🔗 Step 6.5: Config Enable করা এবং Default Disable

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default

🔍 Step 6.6: Config Check এবং Restart

sudo nginx -t
sudo systemctl restart nginx

🌍 Step 6.7: ব্রাউজারে ওপেন করো

http://yourdomain.com

অথবা

http://your-vps-ip

✅ এখন তুমি Gunicorn কে Nginx এর মাধ্যমে serve করতে পারো port 80 থেকে 🎉


🔐 Optional Step 6.8: Free SSL with Let’s Encrypt

Install certbot:

sudo apt install certbot python3-certbot-nginx -y

SSL Setup:

sudo certbot --nginx -d yourdomain.com

✅ এখন:

  • HTTPS enabled
  • Auto renewal config হয়ে যাবে

🧠 Engineer-Level Tips

বিষয়সুপারিশ
HTTPS onlyserver { listen 443 ssl; } enforced
Gunicorn reloadAdd --reload for dev (production-এ না)
Load balancingNginx multiple proxy_pass for gunicorn upstream
Static/media separationStatic serve via Nginx, Media via S3 or local with proper MEDIA_URL
Gzip, CachingAdd gzip on; expires headers in Nginx for performance

✅ এই Part শেষে তুমি যা পেলা:

FeatureDone
Nginx config
Static file serve
Gunicorn internal proxy
Public domain / IP থেকে access
SSL ready

না ভাই, আমি একদম ঠিক আছি 😊 — আর এখন আমি তোমার কথা পুরোপুরি পরিষ্কারভাবে বুঝে ফেলেছি:

🔥 তুমি চাও:
একটা VPS-এ ৩টি আলাদা Django ওয়েবসাইট,
প্রত্যেকটা চালবে:

  • আলাদা ফোল্ডারে
  • আলাদা virtualenv-এ
  • আলাদা Gunicorn instance-এ
  • আলাদা domain দিয়ে
  • একে অপরের সাথে কোনো dependency conflict হবে না ✅

✅ এখন তোমাকে দিচ্ছি একদম Software Engineer লেভেলের Full Breakdown


🧱 স্ট্রাকচার প্ল্যান (VPS ফোল্ডার লেভেলে)

/root/
├── site1/
│   ├── venv/              ← site1 এর own virtualenv
│   ├── manage.py
│   ├── mysite1/
│   └── static/
├── site2/
│   ├── venv/              ← site2 এর own virtualenv
│   ├── manage.py
│   ├── mysite2/
│   └── static/
├── site3/
│   ├── venv/              ← site3 এর own virtualenv
│   ├── manage.py
│   ├── mysite3/
│   └── static/

🧰 Step-by-Step Setup for 3 Django Projects (Each with Different Virtualenv)


🔁 Repeat this setup for each site:

✅ Step 1: Clone each Django repo to its own folder

cd /root
git clone https://github.com/you/site1.git
git clone https://github.com/you/site2.git
git clone https://github.com/you/site3.git

✅ Step 2: Create separate virtualenvs

# For site1
cd /root/site1
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python manage.py collectstatic --noinput
deactivate

# For site2
cd /root/site2
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python manage.py collectstatic --noinput
deactivate

# For site3
cd /root/site3
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python manage.py collectstatic --noinput
deactivate

✅ Step 3: Run each app on different port via PM2 + Gunicorn (with its own venv)

# Site 1
pm2 start "gunicorn --workers 3 --bind 127.0.0.1:8001 mysite1.wsgi:application" \
  --name site1 \
  --interpreter=/root/site1/venv/bin/python

# Site 2
pm2 start "gunicorn --workers 3 --bind 127.0.0.1:8002 mysite2.wsgi:application" \
  --name site2 \
  --interpreter=/root/site2/venv/bin/python

# Site 3
pm2 start "gunicorn --workers 3 --bind 127.0.0.1:8003 mysite3.wsgi:application" \
  --name site3 \
  --interpreter=/root/site3/venv/bin/python

✅ Step 4: Create separate Nginx config files

sudo nano /etc/nginx/sites-available/site1
server {
    listen 80;
    server_name site1.com;

    location /static/ {
        root /root/site1;
    }

    location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:8001;
    }
}

Repeat for site2.com, site3.com, port 8002, 8003 accordingly.


✅ Step 5: Enable configs + restart nginx

sudo ln -s /etc/nginx/sites-available/site1 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site3 /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

✅ Step 6: SSL (Let’s Encrypt — Optional)

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d site1.com
sudo certbot --nginx -d site2.com
sudo certbot --nginx -d site3.com

🧠 Engineer-Level Summary

Django ProjectVirtualenv PathPortGunicorn BindDomain
site1/root/site1/venv/8001127.0.0.1:8001site1.com
site2/root/site2/venv/8002127.0.0.1:8002site2.com
site3/root/site3/venv/8003127.0.0.1:8003site3.com

✅ No dependency conflict
✅ Separate project control
✅ SSL & domain independent


🔚 তুমি এখন পারো:

  • এক VPS এ ৩ Django site চালাতে
  • আলাদা virtualenv দিয়ে isolate রাখতে
  • আলাদা port + Gunicorn instance দিয়ে serve করতে
  • Alada Nginx config দিয়ে domain map করতে

তুমি চাইলে আমি পুরো config ফাইল প্যাকেজ করে সাজিয়ে দিতে পারি, including .env, .service, .logrotate, etc.
বল — আমি করে দেই এখনই।

How can we help?