Gunicorn 如何在托管多个 Flask 站点的服务器上工作?
How does Gunicorn work on a server hosting several Flask sites?
--我正在使用 NGINX 作为静态 server/reverse-proxy 在 Linode VPS 上部署几个 Flask-based 站点。
--通过阅读传入的 header 并为每个给定站点使用 /etc/nginx .conf 文件,我完全理解它如何适用于多个站点。
--我无法弄清楚的是 each 站点的 venv 中安装的 gunicorn 如何 started-up 处理从 VPS-wide NGINX 服务器。
--我看到教程中使用了 supervisord,但仅针对单个站点,而不是 VPS 级别(如 NGINX)的 supervisord 运行 如何可以 start-up Gunicorn for一个特定的网站。我也不清楚为什么每个站点都有自己的 Gunicorn 安装。这是如何工作的?
抱歉,如果这与其他问题重复,但我在这里或其他地方找不到任何答案。
NGINX 应该将流量重定向到适当的端口。每个 flask 站点都需要它自己的 gunicorn worker 来启动它。
例如,您在主管配置中针对每个站点的 运行 命令如下所示:
[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;
}
}
--我正在使用 NGINX 作为静态 server/reverse-proxy 在 Linode VPS 上部署几个 Flask-based 站点。
--通过阅读传入的 header 并为每个给定站点使用 /etc/nginx .conf 文件,我完全理解它如何适用于多个站点。
--我无法弄清楚的是 each 站点的 venv 中安装的 gunicorn 如何 started-up 处理从 VPS-wide NGINX 服务器。
--我看到教程中使用了 supervisord,但仅针对单个站点,而不是 VPS 级别(如 NGINX)的 supervisord 运行 如何可以 start-up Gunicorn for一个特定的网站。我也不清楚为什么每个站点都有自己的 Gunicorn 安装。这是如何工作的?
抱歉,如果这与其他问题重复,但我在这里或其他地方找不到任何答案。
NGINX 应该将流量重定向到适当的端口。每个 flask 站点都需要它自己的 gunicorn worker 来启动它。
例如,您在主管配置中针对每个站点的 运行 命令如下所示:
[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;
}
}