主管和环境变量

时间:2012-10-15 16:57:47

标签: environment-variables supervisord

我真的不知道如何让主管使用环境变量。

以下是配置代码段。

[program:htNotificationService]
priority=2
#autostart=true
#autorestart=true
directory=/home/ubuntu/workspace/htFrontEnd/heythat/htsite
command = /usr/bin/python htNotificationService.py -service
stdout_logfile=/var/log/heythat/htNotificationService.log
redirect_stderr=true
environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat
stopsignal=QUIT

我尝试了以下内容:

environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat
environment=PYTHONPATH=$PYTHONPATH:/home/ubuntu/workspace/htFrontEnd/heythat
environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat,PYTHONPATH=$PYTHONPATH:/home/ubuntu/workspace/htFrontEnd/heythat

当我开始主管时,我得到了

htNotificationService: ERROR (abnormal termination)

我可以通过设置python路径从shell开始,但不能从主管开始。在日志中,我收到一条错误消息,指出无法找到导入。好吧,如果主管能够工作,那就可以解决。我甚至在/ etc / environments中有路径?

为什么主管不工作?

5 个答案:

答案 0 :(得分:86)

使用%(ENV_VARNAME)s

来引用现有的环境变量

(见https://github.com/Supervisor/supervisor/blob/master/supervisor/skel/sample.conf

通过用逗号

分隔来设置多个环境变量

(见http://supervisord.org/subprocess.html#subprocess-environment

尝试:

environment=PYTHONPATH=/opt/mypypath:%(ENV_PYTHONPATH)s,PATH=/opt/mypath:%(ENV_PATH)s

答案 1 :(得分:20)

在supervisord块下的.conf文件中,您可以添加所有环境键=值对

Windows PowerShell ISE Host

如果您不想对变量进行硬编码,但想从os环境中将其拉入,请在bash上执行第1步

导出env var

[supervisord]
environment=CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//",FLASK_CONFIG="TESTING"

[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000

重新加载Bash

>> sudo export CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//"

检查环境是否设置正确

>> . ~/.bashrc

现在修改conf文件以阅读 - Note:使用ENV_

添加env变量
>> env

答案 2 :(得分:15)

这对我有用。记下每行之前的标签:

environment=
    CLOUD_INSTANCE_NAME=media-server-xx-xx-xx-xx,
    CLOUD_APPLICATION=media-server,
    CLOUD_APP_COMPONENT=none,
    CLOUD_ZONE=a,
    CLOUD_REGION=b,
    CLOUD_PRIVATE_IP=none,
    CLOUD_PUBLIC_IP=xx.xx.xx.xx,
    CLOUD_PUBLIC_IPV6=xx.xx.xx.xx.xx.xx,
    CLOUD_PROVIDER=c

答案 3 :(得分:10)

我知道这很老,但是我为此苦了几个小时,想帮下一个家伙。

进行更新后,别忘了重新加载配置文件

supervisorctl reread
supervisorctl update

答案 4 :(得分:5)

如果从软件包安装程序安装supervisor,请检查您使用的Supervisor版本。 截至2016年8月,您将获得 3.0b2 。如果是这种情况,您将需要更新版本的主管。你可以通过手动安装supervisor或使用Python的pip来获得它。确保满足所有依赖项以及upstart设置,以便 supervisord 作为服务工作并在系统启动时启动。