Flask教程:uWSGI

uWSGI 也是部署 Flask 的途径之一,类似的部署途径还有 nginxlighttpd
cherokee 。其他部署途径的信息参见 FastCGI
独立 WSGI 容器 。使用 uWSGI 协议来部署 WSGI 应用的先决条件是
需要一个 uWSGI 服务器。 uWSGI 既是一个协议也是一个服务器。如果作为一个服务器,
它可以服务于 uWSGI 、 FastCGI 和 HTTP 协议。

最流行的 uWSGI 服务器是 uwsgi ,本文将使用它来举例,请先安装它。

小心

请务必把 app.run() 放在 if __name__ == '__main__': 内部或者放在单独
的文件中,这样可以保证它不会被调用。因为,每调用一次就会开启一个本地 WSGI
服务器。当我们使用 uWSGI 部署应用时,不需要使用本地服务器。

使用 uwsgi 启动你的应用¶

uwsgi 是基于 python 模块中的 WSGI 调用的。假设 Flask 应用名称为 myapp.py ,
可以使用以下命令:

$ uwsgi -s /tmp/uwsgi.sock --module myapp --callable app

或者这个命令也行:

$ uwsgi -s /tmp/uwsgi.sock -w myapp:app

配置 nginx¶

一个 nginx 的基本 uWSGI 配置如下:

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

这个配置把应用绑定到 /yourapplication 。如果你想要在根 URL 下运行应用非常
简单,因为你不必指出 WSGI PATH_INFO 或让 uwsgi 修改器来使用它:

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