通过supervisor监控virtualenv中的Django应用程序

48

我正在尝试使用supervisor来管理在虚拟环境中运行的gunicorn的django项目。我的配置文件如下:

[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

问题是,我需要supervisor在我的虚拟环境中运行“source bin/activate”命令后再启动命令。我一直在谷歌上寻找答案,但没有找到任何有用的信息。

注意:我不想使用virtualenvwrapper。

请帮忙解决问题,谢谢!

1个回答

83
虚拟环境激活脚本的文档指出,它只修改了PATH环境变量,因此您可以执行以下操作:
[program:diasporamas]
command=/var/www/django/bin/gunicorn_django
directory=/var/www/django/django_test
environment=PATH="/var/www/django/bin"
...

从3.2版本开始,您可以使用变量扩展来保留现有的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"

...


看起来可以工作 :) 我读了一些关于环境管理的东西,但没有找到如何应用它。非常感谢你! - Oleiade
@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中指定的目录中搜索它们。是否有一种方法可以在supervisor配置中追加路径(例如使用字符串格式)? - Lokesh Meher
@LokeshMeher 这个答案相当老了。从那时起,supervisor已经添加了一个选项,在配置中使用环境变量。我已经更新了答案,包括原始路径的版本。 - Michał Modzelewski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接