使用Supervisor for Flask Application通过virtualenv激活Gunicorn

时间:2017-06-10 22:24:57

标签: python-3.x nginx flask gunicorn supervisor

我正在尝试使用(1)nginx(2)gunicorn,(3)git和(4)主管将烧瓶应用程序部署到ec2实例。我已经设置了nginx,git,gunicorn,但是我在编写supervisor脚本时遇到了麻烦。

我无法让主管在virtualenv的背景下发射炮弹。

当我在virtualenv之外运行gunicorn run:app时,它会返回

ImportError: No module named flask

当我在virtualenv中运行相同的命令时,它可以正常工作。

当我在virtualenv之外运行相同的命令但在虚拟环境中指定gunicorn(即/var/www/sitename/env/bin/gunicorn run:app)时它再次正常工作。

这是一个我无法弄清楚的问题,但我想如果我可以让主管在virtualenv中运行gunicorn它不会是一个问题,但我也无法做到这一点。

我已经尝试在管理程序脚本中添加两个程序,一个用于启动虚拟环境,另一个用于gunicorn,使用引号将两个命令添加到一起,类似SO答案建议,使用&&组合激活virtualenv和发射gunicorn,声明environment=PATH=变量,以及许多其他选项;我无法让它发挥作用。

我不知道我做错了什么或者还有什么可尝试的;有谁知道我现在可以做些什么?

我正在运行python3 - 我读到主管仅限于v2,但有人在回答中提到它只是一个任务管理器而且应该没关系。

1 个答案:

答案 0 :(得分:3)

你走在正确的轨道上,但它比你做的更简单。要通过主管下的gunicorn运行带有入口点应用程序的Flask应用程序,并使用您提供的路径:

<强> /etc/supervisor/conf.d/run.conf

[program:run]
command = /var/www/sitename/env/bin/gunicorn run:app -b localhost:8000
directory = /var/www/sitename
user = siteuser

你可以提供环境参数来设置诸如生产模式之类的东西,但这就是你需要拥有虚拟环境版本的gunicorn,运行python 3如果它是一个python 3 venv,运行你的烧瓶应用程序虚拟环境。