uWSGI

uWSGI是在nginxlighttpdcherokee等服务器上的部署选项;有关其他选项,请参见FastCGIStandalone WSGI Containers uWSGI 是 一个协议,同样也是一个应用服务器,可以提供 uWSGI 、FastCGI 和 HTTP 协议。 你会首先需要一个 uWSGI 服务器来用 uWSGI 协议来使用你的 WSGI 应用。

最流行的 uWSGI 服务器是 uwsgi ,我们会在本指导中使用。 确保你已经安装 好它来跟随下面的说明。

小心

请提前确保你在应用文件中的任何 app.run() 调用在 if __name__ == '__main__': 块中或是移到一个独立的文件。 这是因为它总会启动一个本地 的 WSGI 服务器,并且我们在部署应用到 uWSGI 时不需要它。

使用uwsgi 启动应用程式

uwsgi 被设计为操作在 python 模块中找到的 WSGI 可调用量。

已知在 myapp.py 中有一个 flask 应用,使用下面的命令:

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

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

如果要在虚拟环境中部署烧录器应用程序,则还需要将 - virtualenv / path / to添加到/ virtual / environment t0 >。您可能还需要添加 - 插件 python - 插件 python3 ,具体取决于您为项目使用的python版本。

配置nginx

一个基本的 flaks uWSGI 的给 nginx 的 配置看起来是这样:

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

此配置将应用程序绑定到/yourapplication如果你想在网址根中有一个更简单:

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