Flask + Gunicorn + Nginx + Supervisor 非默认端口号
Flask + Gunicon + Nginx + Supervisor Non Default Port Numbers
我有 2 个需要共同托管的 Flask 应用程序。这是我想要实现的目标:
- 应用程序 1,
/home/myuser/proj1/app1
,端口 9001,外部 URL http://example.com/path1
- 应用 2,
/home/myuser/proj2/app2
,端口 9002,外部 URL 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。
有人可以建议我如何在端口 9001 上将 app1
发送到 运行 吗?
提前致谢。
可能有帮助的信息。
- OS : Ubuntu 14.04.2 LTS
- Python : 2.7.10(2.7.11 在
venv
内)
- 独角兽:17.5
- 烧瓶:0.10.1
尝试将其绑定到 0.0.0.0:9001
,这意味着它将监听每个可用接口。
我猜命令应该是:
command = /home/myuser/proj1/app1/venv/bin/gunicorn app1:app -b localhost:9001
对了,你可以看看文档:Application Dispatching,在WSGI层面结合多个flask应用。在你的情况下,也许 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
})
我有 2 个需要共同托管的 Flask 应用程序。这是我想要实现的目标:
- 应用程序 1,
/home/myuser/proj1/app1
,端口 9001,外部 URL http://example.com/path1 - 应用 2,
/home/myuser/proj2/app2
,端口 9002,外部 URL 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。
有人可以建议我如何在端口 9001 上将 app1
发送到 运行 吗?
提前致谢。
可能有帮助的信息。
- OS : Ubuntu 14.04.2 LTS
- Python : 2.7.10(2.7.11 在
venv
内) - 独角兽:17.5
- 烧瓶:0.10.1
尝试将其绑定到 0.0.0.0:9001
,这意味着它将监听每个可用接口。
我猜命令应该是:
command = /home/myuser/proj1/app1/venv/bin/gunicorn app1:app -b localhost:9001
对了,你可以看看文档:Application Dispatching,在WSGI层面结合多个flask应用。在你的情况下,也许 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
})