Tập này giúp bạn audit ứng dụng quản lý chi tiêu trước khi lên production: chạy kiểm tra tự động của Django, rà soát settings và dữ liệu nhạy cảm, rồi lập danh sách việc cần sửa theo mức độ rủi ro. Nối tiếp tập tổng kết series “Quản lý chi tiêu với Django”, series mới đưa chính ứng dụng đó lên môi trường thật, từng bước một.

Bắt đầu từ đâu: chạy check –deploy

Django có sẵn công cụ kiểm tra cấu hình production. Bạn chạy lệnh sau với settings production, không phải settings dev:

python manage.py check --deploy

Lệnh này soi các lỗi phổ biến như DEBUG còn bật, ALLOWED_HOSTS để trống, cookie chưa gắn cờ an toàn, hay SECRET_KEY yếu. Mỗi cảnh báo đều có mã riêng và gợi ý sửa, vì vậy đừng bỏ qua chỉ vì ứng dụng vẫn chạy tốt ở máy local. Sửa xong, bạn chạy lại lệnh để kiểm tra.

Checklist 7 mục trước khi deploy

Ngoài công cụ tự động, bạn rà soát thêm bảy mục sau:

  1. Tách settings theo môi trường, không dùng chung một file cho dev và production.
  2. Mọi secret đều nằm trong biến môi trường, không commit vào Git.
  3. DEBUG đã tắt, ALLOWED_HOSTS chỉ chứa đúng domain thật.
  4. Database production đã có backup và bạn đã thử restore một lần.
  5. Static và media có đường phục vụ rõ ràng, không dùng server dev.
  6. Log và cảnh báo lỗi có nơi tập trung, không chỉ in ra console.
  7. Quy trình deploy có bước chạy migrations và kiểm tra sau khi restart.

Bạn ghi kết quả vào tài liệu ngắn, đánh dấu từng mục là đạt hoặc chưa đạt.

Một đoạn settings mẫu cần kiểm tra

Đoạn dưới đây là khung tối thiểu để đối chiếu:

DEBUG = False
ALLOWED_HOSTS = ["quanlychitieu.example.com"]
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

Bạn thay domain bằng domain thật, rồi kiểm tra từng giá trị. Giá trị nào chỉ đúng ở máy local là dấu hiệu settings chưa tách sạch.

Lộ trình 20 tập của series

Tuần một, nền móng: (1) checklist, (2) settings và secrets, (3) Gunicorn và Nginx, (4) PostgreSQL, (5) static và media. Tuần hai, vận hành hàng ngày: (6) migrations an toàn, (7) logging và Sentry, (8) monitoring và health check, (9) cache Redis, (10) Celery. Tuần ba, bảo mật và hiệu năng: (11) security checklist, (12) profiling và slow query, (13) rate limiting cho DRF, (14) upload an toàn, (15) backup và restore. Tuần bốn, deploy và mở rộng: (16) Docker, (17) CI/CD với GitHub Actions, (18) deploy không downtime, (19) mở rộng hệ thống, (20) runbook và tổng kết.

Áp dụng vào dự án của bạn

Đừng cố sửa mọi mục trong một buổi tối. Hãy chọn ba mục rủi ro cao nhất — ví dụ secret trong code, DEBUG chưa tắt, hoặc chưa có backup — và xử lý xong trước buổi deploy đầu tiên.

Bài viết liên quan

Câu hỏi thường gặp

Chạy ở máy local ổn thì đã đủ lên production chưa?

Chưa. Máy local thường bật DEBUG, dùng SQLite, không có HTTPS và không chịu tải thật. Checklist production kiểm tra đúng những điểm khác biệt này.

Lệnh check –deploy có thay thế kiểm tra thủ công không?

Không. Lệnh này chỉ soi cấu hình Django, không kiểm tra backup, quy trình deploy hay khả năng chịu tải. Bạn dùng nó làm bước đầu, rồi rà soát thêm bảy mục trong bài.

Khi nào nên deploy lần đầu?

Ngay khi ứng dụng chạy được với dữ liệu thật ở quy mô nhỏ, miễn là secret đã tách, DEBUG đã tắt và đã có backup. Deploy sớm giúp bạn phát hiện vấn đề thật thay vì đoán.

Nguồn tham khảo

  • Tài liệu Django: Deployment checklist
  • Tài liệu Django: How to deploy Django