通过主管监督 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
通过主管和 docker-compose 从 django 输出彩色日志