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.
Nội dung
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
- 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
- Có thể dùng free hosting cho Django không?
Có, Heroku, PythonAnywhere hoặc Railway. - Deploy Django cần dùng Docker không?
Không bắt buộc, nhưng Docker giúp dễ quản lý. - 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. - 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ế. - 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