【发布时间】:2023-03-29 09:59:01
【问题描述】:
--我在使用 NGINX 作为静态服务器/反向代理的 Linode VPS 上部署了几个基于 Flask 的站点。
--通过读取传入的标头并为每个给定站点使用 /etc/nginx .conf 文件,我完全理解了多个站点的工作原理。
--我很难弄清楚安装在 每个 站点的 venv 中的 gunicorn 是如何启动以处理从 VPS 范围的 NGINX 服务器发送的 WSGI 调用的。 p>
--我看到在教程中使用了 supervisord,但仅针对单个站点,而不是在 VPS 级别(如 NGINX)运行的 supervisord 如何为特定站点启动 Gunicorn。我也不清楚为什么每个站点都有自己的 Gunicorn 安装。这是如何工作的?
对不起,如果这重复了其他问题,但我在这里或其他地方找不到任何答案。
【问题讨论】:
-
您的问题是? “如何在单个服务器实例下启动两个不同的站点(site1.com 在 [127.0.0.1:8000] 运行,site2.com 在 [127.0.0.1:8001] 运行)?”
-
不完全是,但我认为您是在暗示我应该运行一个 gunicorn 的全局(VPS 范围)实例(具有适当数量的工人)并为每个站点使用不同的 8xxx 端口我想主持。我想我在每个应用程序的 wsgi 代码中都这样做,并使用 supervisord 来确保单个 gunicorn 实例保持运行。那是对的吗?如果是这样,在每个站点的 venv 中安装 gunicorn 二进制文件的原因是什么?
-
建议(但不强制执行)每个 venv 安装 Gunicorn 二进制文件,以保持站点特定配置(/etc/gunicorn.d)之间的隔离,日志位置保持独立(/var/log/ gunicorn) 和用户/组特定控制。
标签: nginx flask gunicorn supervisord