主管:命令未获取PATH环境变量中的更改

时间:2019-03-25 09:26:52

标签: python gunicorn supervisord

我有一个django应用程序,其中所有软件包都使用virtualenv安装。在服务器上,我正在使用nginx,supervisor和gunicorn为该应用程序提供服务。以下是我的gunicorn主管配置文件

[program:gunicorn]
directory = /home/ubuntu/django_app/django_app/
environment = PATH="/home/ubuntu/django_app/django_app/envproj/bin:%(ENV_PATH)s",NEW_RELIC_ENVIRONMENT=production
command = newrelic-admin run-program gunicorn main.wsgi -b 127.0.0.1:8000 -w 5 --max-requests 1000
autostart = true
autorestart = true
user = ubuntu
redirect_stderr = True
stdout_logfile = /logs/logs/supervisord/%(program_name)s.log
stopwaitsecs = 10
priority = 1

当我使用超级用户运行应用程序时,它失败并显示以下错误:

'newrelic-admin' command not found

从该错误中,我推断出我的PATH变量设置不正确,因为上述命令仅在virtualenv被激活时才起作用。因此要检查,我编写了另一个具有以下值的配置:

[program:dummy]
directory = /home/ubuntu
environment = PATH="/home/ubuntu/django_app/django_app/envproj/bin:%(ENV_PATH)s",NEW_RELIC_ENVIRONMENT=production
command = python printenv.py
autostart = true
autorestart = true
user = ubuntu
redirect_stderr = True
stdout_logfile = /logs/logs/supervisord/%(program_name)s.log
stopwaitsecs = 10
priority = 1

我的printenv.py包含以下内容:

import os, sys, time
sys.stdout.write(repr(os.getenv('PATH')))
sys.stdout.write(repr(os.getenv('NEW_RELIC_ENVIRONMENT')))
sys.stdout.flush()
time.sleep(10) # wait at least startsecs

在更新和重新启动管理器,然后执行supervisorctl tail dummy以查看日志以检查PATH变量的值时,我得到以下信息:

'/home/ubuntu/django_app/django_app/envproj/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin''staging'

正如人们所看到的那样,路径变量是用我在环境变量中指定的virtualenv位置的位置更新的。因此,我不明白为什么会发生与以前的配置相对应的错误。请帮助

`newrelic-admin` command not found

0 个答案:

没有答案