我有两个需要共同使用的Flask应用程序。这就是我想要实现的目标:
/home/myuser/proj1/app1
,端口9001,外部网址http://example.com/path1 /home/myuser/proj2/app2
,端口9002,外部网址http://example.com/path2 我正在使用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端口上运行吗?
提前致谢。
可能有帮助的信息。
venv
内的2.7.11)答案 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
上绑定它,这意味着它将侦听每个可用的接口。