Debugging & Troubleshooting

Cài đặt Gunicorn: Hướng dẫn thực tế cho Django và Flask

Tìm hiểu cách cài Gunicorn và chạy ứng dụng Django hoặc Flask: lệnh pip, cách dùng cơ bản, tùy chọn worker, bind và lưu ý trên Windows.

Ảnh đại diện Long Nguyen

Long Nguyen

Lập trình viên Fullstack · Kỹ sư AI · Nhà nghiên cứu

• • 3 phút đọc •

Gunicorn (Green Unicorn) là máy chủ HTTP Python WSGI dùng để chạy các ứng dụng web như Django và Flask trong môi trường production. Cài đặt chỉ cần một lệnh; phần cần chú ý là cách khởi chạy ứng dụng và một hạn chế về nền tảng có thể khiến nhiều người gặp khó ngay từ đầu.

Cài đặt Gunicorn

Gunicorn là một package tiêu chuẩn trên PyPI. Trong virtual environment của dự án, hãy chạy:

pip install gunicorn

Kiểm tra Gunicorn đã được cài đặt và xem phiên bản:

gunicorn --version

Hãy thêm Gunicorn vào tệp quản lý dependency để quá trình triển khai có thể tái lập — ví dụ, thêm một dòng vào requirements.txt:

gunicorn==23.0.0

Chạy ứng dụng Django

Gunicorn phục vụ ứng dụng thông qua WSGI entry point. Với một dự án Django, đó là callable application trong tệp wsgi.py của dự án. Từ thư mục chứa manage.py, hãy chạy:

gunicorn myproject.wsgi:application

Thay myproject bằng thư mục chứa settings.py và wsgi.py của bạn. Cú pháp là module:callable — phần trước dấu hai chấm là đường dẫn import, còn phần sau là WSGI callable bên trong module đó.

Chạy ứng dụng Flask

Với Flask, hãy trỏ Gunicorn đến module và đối tượng app. Nếu ứng dụng của bạn được định nghĩa bằng app = Flask(__name__) trong app.py:

gunicorn app:app

app thứ nhất là tên tệp (app.py), còn app thứ hai là instance Flask bên trong tệp đó.

Các tùy chọn phổ biến: bind và workers

Theo mặc định, Gunicorn bind vào 127.0.0.1:8000 và chỉ chấp nhận kết nối cục bộ. Để lắng nghe trên mọi network interface, chẳng hạn khi chạy phía sau reverse proxy như Nginx, hãy thiết lập địa chỉ bind và số lượng worker process:

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

Một điểm bắt đầu phổ biến để xác định số worker là (2 × number_of_CPU_cores) + 1. Mỗi sync worker xử lý từng request một, vì vậy nhiều worker hơn đồng nghĩa với khả năng xử lý đồng thời nhiều request hơn — trong giới hạn CPU và bộ nhớ của bạn. Từ đó, hãy điều chỉnh dựa trên workload thực tế.

Lưu ý quan trọng trên Windows

Gunicorn không chạy native trên Windows. Gunicorn phụ thuộc vào các tính năng chỉ có trên Unix, chẳng hạn module fcntl và mô hình worker dựa trên fork. Vì vậy, lệnh pip install gunicorn có thể cài đặt thành công nhưng gunicorn vẫn không chạy được trên Windows native. Nếu đang dùng Windows, hãy chạy Gunicorn trong WSL (Windows Subsystem for Linux), Linux container hoặc trên Linux server — hoặc dùng WSGI server tương thích với Windows như Waitress cho mục đích phát triển cục bộ.

Lưu ý về ứng dụng async

Gunicorn là WSGI server, phù hợp với Django và Flask tiêu chuẩn. Nếu bạn đang chạy ứng dụng ASGI/async (FastAPI hoặc Django ở chế độ ASGI), bạn sẽ cần một thiết lập hỗ trợ ASGI — chẳng hạn để Gunicorn quản lý Uvicorn workers hoặc chạy Uvicorn trực tiếp. Gunicorn sync thuần túy không thể phục vụ ứng dụng ASGI ngay lập tức.

Sau khi cài đặt, trong môi trường production Gunicorn thường được chạy phía sau reverse proxy và quản lý bằng process supervisor — một mô hình dễ mắc lỗi nếu cấu hình không cẩn thận. Công việc của tôi có bao gồm xây dựng và triển khai backend Django; nếu bạn cần hỗ trợ về backend hoặc hạ tầng, hãy xem các dịch vụ của Netalith hoặc liên hệ với tôi trên LinkedIn.

CÂU HỎI THƯỜNG GẶP

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

Làm cách nào để cài đặt Gunicorn?

Kích hoạt virtual environment rồi chạy pip install gunicorn. Xác nhận bằng lệnh gunicorn --version và ghim phiên bản trong requirements.txt để quá trình triển khai có thể tái lập.

Làm cách nào để chạy ứng dụng Django với Gunicorn?

Từ thư mục chứa manage.py, chạy gunicorn myproject.wsgi:application, đồng thời thay myproject bằng thư mục chứa settings.py và wsgi.py. Cú pháp là module:callable.

Tôi có thể chạy Gunicorn trên Windows không?

Không chạy native được. Gunicorn phụ thuộc vào các tính năng chỉ có trên Unix như fcntl và fork, nên sẽ không hoạt động trên Windows native ngay cả khi pip install cài đặt thành công. Hãy dùng WSL, Linux container hoặc Linux server, hay một server tương thích với Windows như Waitress để phát triển cục bộ.

Nên sử dụng bao nhiêu Gunicorn worker?

Một điểm bắt đầu phổ biến là (2 × số lõi CPU) + 1. Mỗi sync worker xử lý từng request một, vì vậy bạn nên điều chỉnh số lượng dựa trên CPU, bộ nhớ và workload.

Gunicorn có hoạt động với FastAPI hoặc Django async không?

Gunicorn là WSGI server nên phục vụ trực tiếp Django và Flask tiêu chuẩn. Với ứng dụng ASGI/async như FastAPI hoặc Django ở chế độ ASGI, hãy chạy Gunicorn với Uvicorn workers hoặc sử dụng Uvicorn trực tiếp.

Cập nhật cùng Netalith

Nhận kiến thức công nghệ, cập nhật sản phẩm và ưu đãi đặc biệt qua email.