ঠিক আছে — তুমি Apache ব্যবহার করছ, এবং gunicorn port 8080 এ চালিয়ে Apache → Gunicorn proxy method ব্যবহার করতে চাও।
তাহলে এটাই সবচেয়ে stable ও সহজ method।
আমি তোমাকে FULL working Apache + Gunicorn setup দিচ্ছি।
✅ STEP–1: gunicorn.service ঠিক করো (port 8080 এ bind)
ফাইল খুলো:
sudo nano /etc/systemd/system/gunicorn.service
এর ভেতরে রাখো:
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/backend/CampaignProject
ExecStart=/home/ubuntu/backend/myenv/bin/gunicorn --access-logfile - --workers 3 --bind 0.0.0.0:8080 CampaignProject.wsgi:application
[Install]
WantedBy=multi-user.target
Save → exit
✅ STEP–2: Gunicorn reload + restart
sudo systemctl daemon-reload
sudo systemctl restart gunicorn
sudo systemctl enable gunicorn
Gunicorn চলছে কিনা দেখো:
sudo systemctl status gunicorn
যদি সব ঠিক থাকে:
Should show → active (running)
✅ STEP–3: Apache config ঠিক করো (port proxy)
এখন Apache site config open করো:
sudo nano /etc/apache2/sites-available/000-default.conf
ভেতরে এইটা দাও:
<VirtualHost *:80>
ServerName stage-api.blastify.ai
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
✅ STEP–4: Apache modules enable + restart
sudo a2enmod proxy proxy_http
sudo systemctl restart apache2
🎉 এখন কাজ করবে:
🔗 https://stage-api.blastify.ai/api/auth/login/
100% without downtime, without socket issues.
যদি তুমি চাও আমি তোমার সার্ভারের structure দেখে verify করে দিতে পারি, জানিও।
Nginx এ গেলে কতটা ফাস্ট হবে?
➡ সাধারণত Nginx = faster, lightweight, high-performance
➡ Static file serve করতে Apache এর চেয়ে অনেক দ্রুত
➡ Reverse proxy হিসেবেও Apache এর চেয়ে efficient
➡ Gunicorn + Nginx = Django deployment এর industry standard
তবে তুমি পুরো Apache বন্ধ করতে চাও না—
🔸 শুধু একটি website / port Apache থেকে বন্ধ করতে চাও
🔸 বাকি Apache websites/services যেন চলে
এটা সম্পূর্ণভাবে করা যায়। নিচে full safe method দিলাম।
✅ Step–1: Apache এ যে সাইটটি চলছে সেটি disable করো
Apache এ প্রতিটি সাইট .conf ফাইল দ্বারা রান হয়।
তুমি যেটা disable করতে চাও:
চেক করো:
ls /etc/apache2/sites-enabled/
মনে করো তোমার Django site হচ্ছে → 000-default.conf
Disable করো:
sudo a2dissite 000-default.conf
sudo systemctl reload apache2
✔ এটা কেবল এই সাইটটাকে Apache থেকে বন্ধ করবে
✔ Apache এর অন্য সাইটগুলো চলবে স্বাভাবিকভাবে
✅ Step–2: Apache এর 80 পোর্ট free করা (যদি শুধুমাত্র এই সাইট 80 এ bind ছিল)
চেক করো Apache কোন port এ bind করেছে:
sudo ss -tulpn | grep apache
যদি শুধু একটাই site ছিল 80 এ, তাহলে disable করার পর 80 port free হয়ে যাবে।
যদি অন্য সাইটও 80 এ থাকে, তাহলে Nginx অন্য port ব্যবহার করবে (যেমন 81)।
🟦 কেস–১: Apache আর 80 পোর্ট ব্যবহার করছে না
→ তাহলে Nginx সরাসরি 80 পোর্টে চালাবে।
🟧 কেস–২: Apache অন্য সাইটে 80 ব্যবহার করছে
→ তাহলে Nginx 8081 বা 81 এ চলবে
→ তারপর তুমি Cloudflare / DNS থেকে pointing সেট করবে
✅ Step–3: Nginx install
sudo apt update
sudo apt install nginx -y
✅ Step–4: Nginx + Gunicorn setup (Recommended)
Gunicorn আগেই port 8080 এ চলছে।
এখন Nginx config:
sudo nano /etc/nginx/sites-available/campaign
ভেতরে দাও:
server {
listen 80;
server_name stage-api.blastify.ai;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Enable করো:
sudo ln -s /etc/nginx/sites-available/campaign /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl enable nginx
🎉 এখন কী হবে?
✔ Nginx → Gunicorn → Django
✔ Apache এর অন্য সাইট unaffected
✔ Apache + Nginx দুটোই একই সার্ভারে coexist করবে
✔ তোমার API অনেক fast serve করবে
💡 Bonus: Nginx static file serve করলে আরও দ্রুত হবে
location /static/ {
alias /home/ubuntu/backend/CampaignProject/static/;
}
location /media/ {
alias /home/ubuntu/backend/CampaignProject/media/;
}
চাইলে আমি তোমার সার্ভারের port list দেখে বলব কোন config safest হবে
👉 sudo ss -tulpn রান করে আমাকে send করো
👉 Apache কোন সাইট চালায় তা send করো:ls /etc/apache2/sites-enabled/