Trang chủ » Blog » Hướng dẫn deploy app Django lên server (Heroku & VPS)

Hướng dẫn deploy app Django lên server (Heroku & VPS)

Bạn đang tìm cách deploy Django project ra môi trường thật? Đây là tutorial chi tiết, dành cho cả người mới và dev muốn bổ sung kỹ năng:

  • Chuẩn bị môi trường & requirements.
  • Chỉnh settings: database, static files, secret key.
  • Deploy Django lên Heroku hoặc VPS.
  • Debug lỗi thường gặp khi host Django.

1. Chuẩn bị trước khi deploy Django 

Trước khi đưa project Django online, bạn cần:

  • Python & pipenv/venv: đảm bảo cài đặt môi trường ảo.
  • Gunicorn: server WSGI để chạy Django.
  • Whitenoise: quản lý static files.
  • Procfile (Heroku) hoặc config systemd/nginx (VPS).
  • Database: PostgreSQL hoặc MySQL (Heroku hỗ trợ addon PostgreSQL).
pip install gunicorn whitenoise psycopg2-binary

Tạo file requirements.txt để lưu dependency:

pip freeze > requirements.txt

2. Chỉnh settings trong Django 

Vào settings.py để tinh chỉnh:

  • Allowed Hosts
ALLOWED_HOSTS = ['yourapp.herokuapp.com', 'yourdomain.com']
  • Static files với Whitenoise
MIDDLEWARE = [

    'django.middleware.security.SecurityMiddleware',

    'whitenoise.middleware.WhiteNoiseMiddleware',

    ...

]

STATIC_ROOT = BASE_DIR / "staticfiles"
  • Database (Postgres cho Heroku)
import dj_database_url

DATABASES['default'] = dj_database_url.config(conn_max_age=600, ssl_require=True)
  • Secret Key
    Không hardcode trong code, hãy dùng biến môi trường:
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')

3. Deploy Django lên Heroku

Heroku là lựa chọn phổ biến cho người mới học lập trình Web Python.

Bước 1: Login Heroku & tạo app

heroku login

heroku create yourappname

Bước 2: Push code lên Heroku

git init

git add .

git commit -m "Initial deploy"

git push heroku main

Bước 3: Cấu hình biến môi trường

heroku config:set DJANGO_SECRET_KEY='yoursecret'

heroku config:set DEBUG=False

Bước 4: Migrate database

heroku run python manage.py migrate

4. Deploy Django lên VPS (Ubuntu + Nginx + Gunicorn)

Nếu bạn muốn tự quản lý VPS (DigitalOcean, AWS EC2):

Bước 1: SSH vào server

ssh user@yourserverip

Bước 2: Cài đặt packages

sudo apt update

sudo apt install python3-pip python3-venv nginx

Bước 3: Tạo service cho Gunicorn

File /etc/systemd/system/gunicorn.service:

[Unit]

Description=gunicorn daemon

After=network.target




[Service]

User=youruser

WorkingDirectory=/home/youruser/yourproject

ExecStart=/home/youruser/yourproject/venv/bin/gunicorn --workers 3 --bind unix:/home/youruser/yourproject.sock yourproject.wsgi:application




[Install]

WantedBy=multi-user.target

Bước 4: Cấu hình Nginx

File /etc/nginx/sites-available/yourproject:

server {

    listen 80;

    server_name yourdomain.com;




    location / {

        include proxy_params;

        proxy_pass http://unix:/home/youruser/yourproject.sock;

    }

}

Sau đó:

sudo ln -s /etc/nginx/sites-available/yourproject /etc/nginx/sites-enabled

sudo systemctl restart nginx

5. Debug lỗi khi deploy Django

Một số lỗi thường gặp:

Mot-so-loi-thuong-gap-khi-Deploy-Django

Mot-so-loi-thuong-gap-khi-Deploy-Django

  • Static files không load → Kiểm tra STATIC_ROOT + Whitenoise.
  • Error 500 trên Heroku → Chưa set biến môi trường SECRET_KEY.
  • Database connection error → Sai config Postgres.
  • Nginx bad gateway (502) → Gunicorn service chưa chạy đúng.

👉 Tip: luôn check log bằng:

heroku logs --tail

hoặc:

sudo journalctl -u gunicorn

Kết luận

Deploy Django là kỹ năng không thể thiếu trong hành trình học lập trình Web Python. Khi nắm vững cách host Django app trên Heroku hoặc VPS, bạn sẽ:

  • Hiểu quy trình production cơ bản.
  • Biết quản lý static, database, bảo mật.
  • Có sản phẩm thật trong portfolio.

👉 Để được hỗ trợ chi tiết & nhận tài liệu thực hành: Đăng ký nhận tài liệu lập trình Web Python.

FAQ – Deploy Django

  1. Có thể dùng free hosting cho Django không?
    Có, Heroku, PythonAnywhere hoặc Railway.
  2. Deploy Django cần dùng Docker không?
    Không bắt buộc, nhưng Docker giúp dễ quản lý.
  3. Django chạy tốt nhất với database nào?
    PostgreSQL thường là lựa chọn tối ưu cho production.
  4. Heroku có còn free plan không?
    Từ 2023 Heroku bỏ free plan, bạn cần dùng gói trả phí hoặc tìm hosting thay thế.
  5. VPS hay Heroku tốt hơn?
    Heroku dễ cho người mới, VPS linh hoạt nhưng cần nhiều kỹ năng DevOps hơn.

     

    0 Lời bình

    Gửi Lời bình

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

    BÀI VIẾT LIÊN QUAN

    BẠN MUỐN HỌC LẬP TRÌNH?

    GỌI NGAY

    098 953 44 58

    Đăng ký tư vấn lộ trình học lập trình

    Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

    3 + 9 =

    TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
    TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM