Gunicorn如何在托管多个Flask网站的服务器上工作?

时间:2019-03-16 08:37:39

标签: nginx flask gunicorn supervisord

-我正在使用NGINX作为静态服务器/反向代理在Linode VPS上部署几个基于Flask的站点。

-通过读取传入的标头并为每个给定站点使用/ etc / nginx .conf文件,我完全理解了它对多个站点的工作方式。

-我难以确定的是,如何启动安装在每个网站venv中的gunicorn来处理从VPS范围的NGINX服务器发送的WSGI调用。

>

-我看到教程中使用了supervisor,但仅针对单个站点,而不是在VPS级别运行的supervisor(如NGINX)如何为特定站点启动Gunicorn。我还不清楚为什么每个站点都有自己的Gunicorn安装。如何运作?

很抱歉,如果这重复了其他问题,但是我在这里或其他地方找不到任何答案。

1 个答案:

答案 0 :(得分:1)

NGINX应该将流量重定向到适当的端口。每个烧瓶站点都需要它自己的gunicorn工人来启动。

因此,例如,您在超级用户配置中用于每个站点的运行命令如下所示:

[program:site1]
command=venv1/bin/gunicorn --workers num_workers --bind localhost:8081 flask_app1:app
#etc...

[program:site2]
command=venv2/bin/gunicorn --workers num_workers --bind localhost:8082 flask_app2:app
#etc...

希望这会增加一些清晰度

编辑:

以下是其中一个监听http的网站的示例NGINX配置。

#Config Contents
server {
    listen       80;
    server_name  site.your.domain;
    # Or use the following if you do not have a domain
    #server_name 123.123.123.123;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme $scheme;
    }
}