通过主管监督 virtualenv django 应用程序

Posted

技术标签:

【中文标题】通过主管监督 virtualenv django 应用程序【英文标题】:Supervising virtualenv django app via supervisor 【发布时间】:2011-09-25 19:48:06 【问题描述】:

我正在尝试使用主管来管理我在 virtualenv 中运行 gunicorn 的 django 项目。 我的 conf 文件如下所示:

[program:diasporamas]
command=/var/www/django/bin/gunicorn_django
directory=/var/www/django/django_test
process_name=%(program_name)s
user=www-data
autostart=false
stdout_logfile=/var/log/gunicorn_diasporamas.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=2
stderr_logfile=/var/log/gunicorn_diasporamas_errors.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=2enter code here

问题是,我需要主管在我的 virtualenv 中运行“source bin/activate”后启动该命令。我一直在谷歌周围寻找答案,但没有找到任何答案。

注意:我不想使用 virtualenvwrapper

有什么帮助吗?

【问题讨论】:

【参考方案1】:

virtualenv activate 脚本的 documentation 表示它只修改 PATH 环境变量,在这种情况下您可以这样做:

[program:diasporamas]
command=/var/www/django/bin/gunicorn_django
directory=/var/www/django/django_test
environment=PATH="/var/www/django/bin"
...

从 3.2 版开始,您也可以使用 variable expansion 来保留现有的 PATH:

[program:diasporamas]
command=/var/www/django/bin/gunicorn_django
directory=/var/www/django/django_test
environment=PATH="/var/www/django/bin:%(ENV_PATH)s"

...

【讨论】:

似乎工作 :) 已阅读有关环境管理的一些内容,但没有找到如何应用它。谢谢你,真的! @serge-s @michał-modzelewski 但是这不会覆盖PATH 环境变量吗?如果是这种情况,这不会影响在该目录中找不到的其他二进制文件的搜索路径。例如,在 Ubuntu Linux 中,PATH/home/user_name/bin:/home/user_name/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin。如果在覆盖的 PATH 中找不到某些二进制文件,则应在原始 PATH 中指定的目录中搜索它。有没有办法附加到主管配置中的路径(例如使用字符串格式)? @LokeshMeher 这个答案已经很老了。从那时起,主管添加了一个在配置中使用环境变量的选项。我已经用包含原始 PATH 的版本更新了答案。

以上是关于通过主管监督 virtualenv django 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

未从主管 AWS Elasticbeanstalk 激活 Virtualenv

每个主管有多少工人?

如何从受监督的工作进程中触发 Elixir 主管树终止

通过主管和 docker-compose 从 django 输出彩色日志

什么是 SQL 查询来查找监督的员工比任何其他主管都多的员工的姓名?

尽力而为的 OTP 监督