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

Để 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 *