Flask + Gunicon + Nginx + Supervisor非默认端口号

时间:2016-01-18 16:30:50

标签: python nginx flask gunicorn supervisor

我有两个需要共同使用的Flask应用程序。这就是我想要实现的目标:

我正在使用Gunicorn运行App 1(与App 2非常相似)。前面有Nginx,我们使用Supervisor来管理各种组件。

两个项目都有自己的virtualenv venv,并且安装了必需的软件包。 我用来通过Supervisor启动此应用程序的配置文件。

[program:app1]
command = /home/myuser/proj1/app1/venv/bin/python /home/myuser/proj1/app1/venv/bin/gunicorn app1:app

environment =
    CONFIG_1 = /home/myuser/proj1/conf/config_1.cfg,
    CONFIG_2 = /home/myuser/proj1/conf/config_2.cfg
directory = /home/myuser/proj1/app1
user = myuser
stderr_logfile = /var/log/app1/stderr.log
stdout_logfile = /var/log/app1/stdout.log

我试过了

command = /home/myuser/proj1/app1/venv/bin/python /home/myuser/proj1/app1/venv/bin/gunicorn app1:app -b localhost:9001

但默认为端口8000。

有人可以建议我如何让app1在9001端口上运行吗?

提前致谢。

可能有帮助的信息。

  • 操作系统:Ubuntu 14.04.2 LTS
  • Python:2.7.10(venv内的2.7.11)
  • Gunicorn:17.5
  • 烧瓶:0.10.1

2 个答案:

答案 0 :(得分:2)

我猜命令应该是:

command = /home/myuser/proj1/app1/venv/bin/gunicorn app1:app -b localhost:9001

顺便说一句,您可以查看文档:{​​{3}},在WSGI级别上组合多个烧瓶应用程序。在你的情况下,也许DispatcherMiddleware会很好:

from werkzeug.wsgi import DispatcherMiddleware
from app1 import app as path_one
from app2 import app as path_two

application = DispatcherMiddleware(path_one, {
    '/path2': path_two
})

答案 1 :(得分:1)

尝试在0.0.0.0:9001上绑定它,这意味着它将侦听每个可用的接口。