【问题标题】:Activating Gunicorn through virtualenv with Supervisor for Flask Application通过 virtualenv 和 Supervisor for Flask Application 激活 Gunicorn
【发布时间】:2017-11-12 16:51:02
【问题描述】:

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

我无法让主管在 virtualenv 的上下文中启动 gunicorn。

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

ImportError: No module named flask

当我在 virtualenv 中运行相同的命令时,它工作得很好。

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

这是一个我无法解决的问题,但我认为如果我可以让主管在 virtualenv 中运行 gunicorn,那将不是问题,但我也无法做到这一点。

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

我不知道我做错了什么或要尝试什么;有谁知道我现在能做什么?

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

【问题讨论】:

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


    【解决方案1】:

    你走在正确的轨道上,但它比你做的更简单。要使用您提供的路径在主管下通过 gunicorn 运行名为 run with entry point app 的 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
    

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

    【讨论】:

      猜你喜欢
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多