Flask là một framework Python nhẹ và mạnh mẽ để xây dựng ứng dụng web. Khi triển khai ứng dụng Flask lên môi trường production, việc sử dụng Gunicorn làm WSGI server và Nginx làm reverse proxy là một lựa chọn phổ biến để đảm bảo hiệu suất và bảo mật. Bài viết này sẽ hướng dẫn chi tiết cách triển khai ứng dụng Flask trên VPS Ubuntu
Các bước triển khai ứng dụng Flask với Gunicorn và Nginx trên Ubuntyu
Bước 1: Cập nhật hệ thống và cài đặt công cụ
Cập nhật hệ thống:
sudo apt update && sudo apt upgrade -y
Cài đặt các gói cần thiết:
sudo apt install python3 python3-pip python3-venv nginx git -y
Bước 2: Tạo người dùng mới và mở các cổng
Tạo một tài khoản người dùng mới (ví dụ: flaskuser
) và mở các cổng cần thiết.
sudo adduser --disabled-password --gecos "" flaskuser
Đặt mật khẩu cho người dùng flaskuser và thêm user vào nhóm sudo.
sudo passwd flaskuser
sudo usermod -aG sudo flaskuser
Mở các cổng cần thiết:
Kiểm tra trạng thái firewall (ufw
):
sudo ufw status
Mở cổng 22 (SSH), 80 (Nginx), 5000 (Flask development server), và 8000 (Gunicorn):
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # Nginx
sudo ufw allow 5000/tcp # Flask
sudo ufw allow 8000/tcp # Gunicorn
Bật firewall (nếu chưa bật):
sudo ufw enable
Kiểm tra lại:
sudo ufw status
Đảm bảo các cổng 22, 80, 5000, và 8000 đã được mở.
Bước 3: Thiết lập ứng dụng Flask với người dùng mới
Chuyển sang tài khoản flaskuser
:
sudo -i -u flaskuser
Tạo thư mục dự án:
mkdir ~/myflaskapp && cd ~/myflaskapp
(Thư mục sẽ nằm trong /home/flaskuser/myflaskapp
.)
Tạo môi trường ảo:
python3 -m venv venv
source venv/bin/activate
Cài đặt Flask và Gunicorn:
pip install flask gunicorn
Kiểm tra Flask và Gunicorn đã được cài đặt chưa bằng lệnh: pip list
Tạo file ứng dụng Flask (app.py
):
nano app.py
Nội dung:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World! This is my Flask app.'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Kiểm tra ứng dụng:
python3 app.py
Truy cập http://your_vps_ip:5000
trên trình duyệt để kiểm tra. Nếu thấy thông báo “Hello, World! This is my Flask app.”, ứng dụng hoạt động bình thường. Nhấn Ctrl+C
để dừng.
Bước 4: Cấu hình Gunicorn
Tạo file cấu hình Gunicorn (gunicorn_config.py
):
nano ~/myflaskapp/gunicorn_config.py
Nội dung:
bind = '0.0.0.0:8000'
workers = 3
timeout = 120
Kiểm tra Gunicorn:
~/myflaskapp/venv/bin/gunicorn --config ~/myflaskapp/gunicorn_config.py app:app
Truy cập http://your_vps_ip:8000
để kiểm tra. Nếu thành công, nhấn Ctrl+C
để dừng.
Bước 5: Chạy Gunicorn như một dịch vụ
Tạo file dịch vụ systemd:
sudo nano /etc/systemd/system/myflaskapp.service
Nội dung:
[Unit]
Description=Gunicorn instance to serve myflaskapp
After=network.target
[Service]
User=flaskuser
Group=www-data
WorkingDirectory=/home/flaskuser/myflaskapp
Environment="PATH=/home/flaskuser/myflaskapp/venv/bin"
ExecStart=/home/flaskuser/myflaskapp/venv/bin/gunicorn --config /home/flaskuser/myflaskapp/gunicorn_config.py app:app
[Install]
WantedBy=multi-user.target
Đảm bảo nhóm www-data
tồn tại. Nếu không, tạo nhóm:
sudo groupadd www-data
Kích hoạt và khởi động dịch vụ:
sudo systemctl daemon-reload
sudo systemctl start myflaskapp
sudo systemctl enable myflaskapp
Kiểm tra trạng thái:
sudo systemctl status myflaskapp
Bước 6: Cấu hình Nginx
Tạo file cấu hình Nginx:
sudo nano /etc/nginx/sites-available/myflaskapp
Nội dung:
server {
listen 80;
server_name your_vps_ip;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Thay your_vps_ip
bằng địa chỉ IP của VPS hoặc tên miền nếu có.
Kích hoạt cấu hình:
sudo ln -s /etc/nginx/sites-available/myflaskapp /etc/nginx/sites-enabled/
Kiểm tra cấu hình Nginx:
sudo nginx -t
Khởi động lại Nginx:
sudo systemctl restart nginx
Bước 7: Kiểm tra ứng dụng
Truy cập http://your_vps_ip
trên trình duyệt. Nếu thấy thông báo “Hello, World! This is my Flask app.”, ứng dụng đã được triển khai thành công.
Kết luận
Việc triển khai Flask cùng Gunicorn và Nginx trên VPS Ubuntu không chỉ giúp ứng dụng Python hoạt động ổn định trong môi trường production mà còn tối ưu hiệu suất và khả năng mở rộng. Với cấu hình đúng cách, bạn hoàn toàn có thể vận hành một hệ thống web mạnh mẽ, bảo mật và dễ bảo trì.
Nếu bạn đang tìm kiếm dịch vụ VPS uy tín để triển khai ứng dụng của mình, hãy tham khảo ngay tại VPSMMO để được hỗ trợ nhanh chóng và cấu hình tối ưu.
CÔNG TY TNHH VPSMMO
- VP: 8B đường B31, KDC 91B, Phường An Khánh, Quận Ninh Kiều, Thành phố Cần Thơ
- Tel: 0589549338
- Email: info@vpsmmo.vn