uWSGI — Flask 文档

来自菜鸟教程
Flask/docs/2.0.x/deploying/uwsgi
跳转至:导航、​搜索

uWSGI

uWSGI 是 nginxlighttpdcherokee 等服务器上的部署选项; 有关其他选项,请参阅 FastCGI独立 WSGI 容器 。 要使用带有 uWSGI 协议的 WSGI 应用程序,您首先需要一个 uWSGI 服务器。 uWSGI 既是协议又是应用服务器; 应用服务器可以为 uWSGI、FastCGI 和 HTTP 协议提供服务。

最流行的 uWSGI 服务器是 uwsgi,我们将在本指南中使用它。 确保安装它以进行后续操作。

当心

请提前确保您的应用程序文件中的任何 app.run() 调用都在 if __name__ == '__main__': 块内或移动到单独的文件中。 只要确保它没有被调用,因为如果我们将该应用程序部署到 uWSGI,这将始终启动我们不想要的本地 WSGI 服务器。


使用 uwsgi 启动您的应用

uwsgi 旨在对 Python 模块中的 WSGI 可调用对象进行操作。

给定 myapp.py 中的一个烧瓶应用程序,使用以下命令:

$ uwsgi -s /tmp/yourapplication.sock --manage-script-name --mount /yourapplication=myapp:app

--manage-script-name 会将 SCRIPT_NAME 的处理转移到 uwsgi,因为它更聪明。 它与 --mount 指令一起使用,该指令将使对 /yourapplication 的请求被定向到 myapp:app。 如果您的应用程序可以在根级别访问,您可以使用单个 / 而不是 /yourapplicationmyapp 指的是您的flask 应用程序的文件名(不带扩展名)或提供app 的模块。 app 是应用程序内部的可调用对象(通常是 app = Flask(__name__))。

如果您想在虚拟环境中部署您的 Flask 应用程序,您还需要添加 --virtualenv /path/to/virtual/environment。 您可能还需要根据您的项目使用的 Python 版本添加 --plugin python--plugin python3


配置nginx

一个基本的 Flask nginx 配置如下所示:

location = /yourapplication { rewrite ^ /yourapplication/; }
location /yourapplication { try_files $uri @yourapplication; }
location @yourapplication {
  include uwsgi_params;
  uwsgi_pass unix:/tmp/yourapplication.sock;
}

此配置将应用程序绑定到 /yourapplication。 如果你想把它放在 URL 根目录中,它会更简单一点:

location / { try_files $uri @yourapplication; }
location @yourapplication {
    include uwsgi_params;
    uwsgi_pass unix:/tmp/yourapplication.sock;
}