❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.

cPanel cho phép chạy ứng dụng Python trực tiếp trên shared hosting thông qua Phusion Passenger. Bài này hướng dẫn cài đặt Python app với Flask — framework web phổ biến nhất của Python. Toàn bộ đã được thực hiện và kiểm chứng thật trên cPanel.

I. Yêu cầu

  • Hosting cPanel có hỗ trợ Setup Python App (hosting dùng CloudLinux)
  • Một domain hoặc subdomain
  • Code Python (sẽ tạo trong bài)

II. Truy cập Setup Python App

Đăng nhập cPanel → tìm Setup Python App trong phần Software trên sidebar trái.

Giao diện Setup Python App trên cPanel hiển thị ứng dụng Flask đã tạo
Giao diện Setup Python App — hiển thị ứng dụng đã tạo với trạng thái started, version Python, và các nút điều khiển.

III. Tạo ứng dụng Python Flask

Bước 1: Chuẩn bị code

Vào File Manager → tạo thư mục myflaskapp trong home directory (ngoài public_html). Tạo 3 file sau:

File app.py (ứng dụng chính):

from flask import Flask, jsonify
from datetime import datetime
import sys, os

app = Flask(__name__)

@app.route('/') def home(): return f""" <html> <head><title>Flask Demo - cPanel</title></head> <body style="font-family: sans-serif; max-width: 700px; margin: 40px auto;"> <h1>🐍 Flask App on cPanel</h1> <p><strong>Python:</strong> {sys.version}</p> <p><strong>Server time:</strong> {datetime.now().strftime('%d/%m/%Y %H:%M:%S')}</p> <p><strong>Working dir:</strong> {os.getcwd()}</p> <p><a href="/api">Xem API JSON</a></p> </body> </html> """

@app.route('/api') def api(): return jsonify( status='ok', message='Flask API hoạt động!', python=sys.version, time=datetime.now().isoformat() )

if __name__ == '__main__': app.run(debug=False)

File passenger_wsgi.py (entry point cho Passenger — bắt buộc):

import sys, os
sys.path.insert(0, os.path.dirname(__file__))
from app import app as application

💡 Quan trọng: File phải tên passenger_wsgi.py và biến phải tên application — Passenger tìm chính xác tên này. Sai tên = app không chạy.

File requirements.txt:

flask

Bước 2: Tạo Application trên cPanel

Click Create Application:

Form tạo ứng dụng Python trên cPanel
Form tạo ứng dụng Python mới — điền version, thư mục, startup file.

Điền thông tin:

  • Python version: Chọn phiên bản 3.9+ (trong bài này dùng 3.9.23)
  • Application root: myflaskapp
  • Application URL: Chọn domain, nhập đường dẫn phụ (VD: flaskapp)
  • Application startup file: passenger_wsgi.py
  • Application Entry point: application

Click Create. cPanel tạo virtual environment tự động.

Bước 3: Cài đặt Flask

Sau khi tạo app, cần cài Flask vào virtual environment. Click Edit (icon bút chì) trên app:

Giao diện Edit app Python với nút Run Pip Install và Run Script
Giao diện Edit app — có Run Pip Install, Run Script, và quản lý environment variables.

Có 2 cách cài Flask:

Cách 1 — Run Pip Install: Click nút Run Pip Install. cPanel sẽ đọc file requirements.txt và cài tự động.

Cách 2 — Run Script (khuyến nghị): Tạo file install_deps.py:

import subprocess, sys
result = subprocess.run(
    [sys.executable, '-m', 'pip', 'install', 'flask'],
    capture_output=True, text=True
)
print('STDOUT:', result.stdout)
print('Return code:', result.returncode)

Sau đó trong giao diện Edit, nhập install_deps.py vào ô Run Script và click chạy. Cách này đáng tin cậy hơn vì chạy pip trực tiếp trong virtual environment.

Kết quả Run Script cài Flask thành công
Kết quả chạy script: Flask cài thành công với return code 0.

Bước 4: Restart và test

Quay lại danh sách app, click Restart. Truy cập URL:

Flask app chạy thành công trên cPanel hiển thị Python version và thời gian
Flask app chạy thành công: hiển thị Python version, thời gian server, working directory.

App hiển thị đầy đủ thông tin: Python 3.9.23, thời gian server, đường dẫn — xác nhận Flask đang chạy thật trên cPanel!

IV. Lưu ý quan trọng

  • File passenger_wsgi.py là bắt buộc: Đây là entry point mà Phusion Passenger tìm để chạy app
  • Tên biến phải là application: Passenger tìm chính xác biến này
  • Không dùng app.run() ở production: Passenger quản lý process, chỉ cần if __name__ == '__main__' guard cho development
  • requirements.txt phải có trước khi Run Pip Install: Nếu thiếu file này, Pip Install sẽ không cài gì
  • Dùng Run Script nếu Pip Install không work: Tạo script Python gọi pip trực tiếp — cách này đáng tin cậy hơn

V. Xử lý lỗi thường gặp

  • “It works!” (trang mặc định): Passenger chạy nhưng app chưa load đúng — kiểm tra tên file passenger_wsgi.py và biến application
  • 500 Internal Server Error: Kiểm tra stderr.log trong thư mục app
  • ModuleNotFoundError: No module named ‘flask’: Flask chưa cài — dùng Run Script để cài (xem Bước 3)
  • App không cập nhật sau khi sửa code: Phải click Restart trên cPanel
  • Static files không load: Cần cấu hình thêm đường dẫn static trong Flask hoặc dùng .htaccess

VI. Tổng kết

Chạy Python Flask trên cPanel hoàn toàn khả thi. Quy trình tóm gọn:

  1. Tạo code: app.py + passenger_wsgi.py + requirements.txt
  2. Tạo app trên Setup Python App
  3. Cài Flask bằng Run Pip Install hoặc Run Script
  4. Restart và test URL

Phù hợp cho API nhỏ, tool nội bộ, dashboard đơn giản. Với ứng dụng phức tạp hơn (Django, FastAPI với async), quy trình tương tự nhưng cần cấu hình thêm. Nếu cần scale lớn, cân nhắc chuyển sang VPS.

Chia sẻ:
Bài viết đã được kiểm duyệt bởi AZDIGI Team

Về tác giả

Thạch Phạm

Thạch Phạm

Đồng sáng lập và Giám đốc điều hành của AZDIGI. Có hơn 15 năm kinh nghiệm trong phổ biến kiến thức liên quan đến WordPress tại thachpham.com, phát triển website và phát triển hệ thống.

Hơn 10 năm phục vụ 80.000+ khách hàng

Bắt đầu dự án web của bạn với AZDIGI