FastAPI là framework ASGI, trong khi nhiều gói shared hosting cPanel chủ yếu hỗ trợ ứng dụng Python kiểu WSGI qua Passenger. Vì vậy, để chạy FastAPI trên shared hosting, tác giả dùng cách khởi động ứng dụng bằng Uvicorn trên một port riêng, sau đó dùng file .htaccess để reverse proxy request từ domain về port đó.

Điều kiện cần có

  • Tài khoản shared hosting có quyền truy cập cPanel.
  • cPanel có tính năng Setup Python App, thường chạy qua Passenger.
  • Dự án FastAPI đã có file chính, ví dụ main.py, và biến ứng dụng dạng app.
  • File requirements.txt để cài dependency.

Các bước triển khai

1. Tạo subdomain hoặc domain con

Trong cPanel, vào phần quản lý domain, tạo một subdomain mới cho ứng dụng FastAPI. Sau khi tạo, hosting sẽ sinh ra một thư mục riêng tương ứng với domain đó. Đây sẽ là nơi đặt source code của dự án.

2. Upload mã nguồn lên hosting

Dùng File Manager của cPanel hoặc FTP để upload toàn bộ file dự án vào thư mục của subdomain. Với ví dụ đơn giản, tối thiểu thường cần main.pyrequirements.txt.

vd: Nội dung file main.py

from fastapi import FastAPI
app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello, World!"}

vd: Nội dung file requirements.txt

fastapi
uvicorn

3. Tạo Python App trong cPanel

Vào Software > Setup Python App, chọn phiên bản Python phù hợp, trỏ Application root về đúng thư mục dự án và gán Application URL là subdomain vừa tạo. Sau khi tạo xong, copy lệnh kích hoạt virtual environment mà cPanel cung cấp, rồi tạm dừng app nếu cần cấu hình tiếp.

4. Cài dependency và chạy Uvicorn

Mở Terminal trong cPanel, kích hoạt virtual environment, chuyển vào thư mục dự án và cài các package cần thiết:

source /path/to/virtualenv/app/3.12/bin/activate cd /path/to/your-fastapi-app pip install -r requirements.txt

Sau đó chạy FastAPI bằng Uvicorn trên một port còn trống, ví dụ:

uvicorn main:app --host 0.0.0.0 --port 8888

5. Cấu hình .htaccess để proxy request

Trong thư mục dự án, cập nhật hoặc tạo file .htaccess để ép HTTPS và chuyển request về Uvicorn đang chạy phía sau:

RewriteEngine On
# Force HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Reverse proxy all requests to local FastAPI app
RewriteRule ^(.*)$ http://127.0.0.1:8888/$1 [P,L]

 

Phần domain và port cần đổi theo cấu hình thực tế của hosting.

6. Kiểm tra kết quả

Sau khi cấu hình xong, truy cập subdomain trên trình duyệt. Nếu app FastAPI trả về JSON hoặc response mong muốn, quá trình triển khai đã hoạt động.

Lưu ý thực tế

Cách này phù hợp khi muốn chạy một ứng dụng FastAPI nhỏ trên shared hosting có cPanel. Tuy nhiên, với ứng dụng production quan trọng, VPS, container hoặc nền tảng cloud chuyên cho ASGI thường dễ kiểm soát hơn, nhất là về process nền, log, restart tự động, WebSocket và tài nguyên hệ thống.

Nếu lỡ đóng Terminal và cần dừng tiến trình Uvicorn, có thể kiểm tra process đang chạy rồi kill theo PID, ví dụ dùng ps aux để tìm tiến trình và kill PID để dừng.

Nguồn tham khảo

Bài gốc: How to Deploy FastAPI on Shared Hosting (cPanel) – DEV Community.