Triển khai ứng dụng Flask trên Windows Server sử dụng FastCGI và IIS


Tóm tắt nhanh

  1. Tạo môi trường ảo và cài thư viện cho Flask.
  2. Bật CGI trong IIS, cài wfastcgi.
  3. Chạy wfastcgi-enable, sao chép đường dẫn scriptProcessor.
  4. Tạo file web.config đúng cấu trúc.
  5. Cấu hình IIS và phân quyền thư mục.
  6. Khởi động lại IIS và kiểm tra kết quả.

🎯 Hướng dẫn triển khai từng bước

1. Cài đặt Python & tạo môi trường ảo (virtual environment)

  • Cài đặt Python (đảm bảo bạn đánh dấu Add to PATH khi cài).
  • Mở PowerShell hoặc cmd (với quyền admin), điều hướng đến thư mục dự án và chạy: bashSao chépChỉnh sửapython -m venv venv venv\Scripts\activate pip install -r requirements.txt

2. Bật CGI trong IIS & cài đặt wfastcgi

  • Vào Server Manager → Add Roles and Features, chọn Web Server (IIS) → CGI.
  • Trong môi trường ảo của bạn, chạy: bashSao chépChỉnh sửapip install wfastcgi wfastcgi-enable Lệnh trên sẽ đăng ký Python và tệp wfastcgi.py làm trình xử lý FastCGI. Ghi chú lại đường dẫn được tạo ra trong phần scriptProcessor.

3. Tạo tệp web.config

Tạo file web.config trong thư mục gốc của app Flask (cùng cấp với file main.py):

<?xml version="1.0" encoding="utf‑8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Python FastCGI"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\...\venv\Scripts\python.exe|C:\...\wfastcgi.py"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<add key="WSGI_HANDLER" value="main.app" />
<add key="PYTHONPATH" value="C:\path\to\your\project" />
</appSettings>
</configuration>

Lưu ý:

  • scriptProcessor: Điền đúng đường dẫn đến python.exewfastcgi.py trong môi trường ảo.
  • WSGI_HANDLER: Trỏ đến biến app của Flask (ví dụ: main.app nếu bạn có app = Flask(__name__) trong main.py).
  • PYTHONPATH: Chỉ định đường dẫn đến thư mục dự án.

4. Cấu hình IIS

  • Mở IIS Manager:
    • Tạo một website mới, trỏ đến thư mục chứa ứng dụng Flask.
    • Trong Configuration Editor, mở khóa mục system.webServer/fastCgi.
  • Đảm bảo tài khoản IIS_IUSRS và/hoặc tài khoản Application Pool Identityquyền đọc & ghi đối với thư mục dự án và môi trường ảo (venv).

5. Khởi động lại IIS & kiểm tra

  • Chạy lệnh iisreset hoặc khởi động lại qua giao diện IIS Manager.
  • Truy cập trang web — bạn sẽ thấy ứng dụng Flask hoạt động (ví dụ: “Hello World”).

⚠️ Lỗi thường gặp & cách khắc phục

Vấn đềCách khắc phục
Lỗi 500 (FastCGI error)Kiểm tra nhật ký lỗi trong IIS. Thường do quyền truy cập không đúng — đảm bảo thư mục venv và thư mục dự án có quyền truy cập đầy đủ cho tài khoản IIS.
Không import được thư viện PythonKiểm tra lại môi trường ảo có đầy đủ các thư viện bạn dùng (ví dụ: NumPy, Flask, Pandas). Nếu cần, cài thêm bằng pip install.


Để lại một bình luận

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 *