uWSGI ¶
uWSGI是在nginx,lighttpd和cherokee等服务器上的部署选项;有关其他选项,请参见FastCGI和Standalone 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
。如果您的应用程序可在根级别访问,则可以使用单个/
而不是/yourapplication
。myapp
是指烧瓶应用程序(无扩展名)或提供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;
}