Cách Thiết Lập Gunicorn để Phục Vụ Các ứng Dụng Web Python

Trong bài viết này, chúng tôi sẽ thiết lập một VPS để phục vụ các ứng dụng web Python với Gunicorn và Nginx làm proxy ngược. Chúng tôi sử dụng Nginx làm proxy ngược thay vì phục vụ trực tiếp với Gunicorn để ngăn chặn các cuộc tấn công DoS vào Gunicorn. Sử dụng Nginx cũng mang lại hiệu suất tốt hơn (với bộ đệm proxy) và dẫn đến nhiều yêu cầu được xử lý hơn.

Bắt đầu

Hướng dẫn này giả định rằng bạn đã có VM với Ubuntu 14.04 hoặc mới hơn được cài đặt, cập nhật và bảo mật.

  • Ví dụ Nginx của chúng tôi sẽ chạy trên cổng HTTP 80 (nhưng bạn có thể dễ dàng nâng cấp lên HTTPS).
  • Ví dụ ứng dụng Python của chúng tôi sẽ lắng nghe trên cổng 8080. Cổng này sẽ được đóng trên iptables để ngăn truy cập từ xa.
  • Hướng dẫn này sẽ chạy trên các bản phát hành khác với những thay đổi tối thiểu.

Cài đặt pip, virtualenv:

apt-get install python-pip python-virtualenv

Đóng cổng 8080. Gunicorn sẽ chỉ có thể truy cập bằng Nginx.

iptables -A INPUT -p tcp --destination-port 8080 -j DROP

Tạo một thư mục mới và cấu hình ứng dụng của chúng tôi. Chúng tôi sẽ sử dụng khung Flask.

mkdir /var/www-folder/ cd /var/www-folder/ virtualenv exampleapp source exampleapp/bin/activate cd exampleapp pip install gunicorn pip install flask

Tạo tập tin ứng dụng.

nano myapplication.py

Dán bên trong sau:

from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, Vultr!'

Điều này sẽ tạo ra một trang đơn giản nói "Xin chào, Vultr!" khi ai đó truy cập trang. Bây giờ, bắt đầu Gunicorn. Thay thế xbằng 2 lần số lõi CPU VM của bạn.

gunicorn -w x myapplication:app &

Cài đặt Nginx và cấu hình proxy ngược.

deactivate apt-get install nginx nano /etc/nginx/sites-enabled/default

Tìm kiếm location / {dòng và thay thế nội dung bên trong ngoặc bằng nội dung sau.

proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8000/;

Cấu hình này hướng dẫn Nginx chuyển tiếp một số thông tin (giao thức HTTP, địa chỉ IP từ xa) cùng với yêu cầu thực tế đến máy chủ Gunicorn. Tải lại Nginx.

service nginx reload

Tại thời điểm này, ứng dụng Gunicorn của bạn đã được cấu hình đúng. Bạn có thể truy cập nó bằng trình duyệt web tại http://your-vps-ip/.

Từ khóa » Gunicorn Là Gì