Я действительно не знаю, как заставить супервизор работать с переменными среды.
Ниже отрывок конфигурации.
[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, но не от супервизора. В журналах я получаю ошибку, которая говорит, что импорт не может быть найден. Ну, это было бы решено, если супервизор будет работать. У меня даже есть путь в/etc/environments?
Почему супервизор не будет работать?
Ссылка на существующий огибающий Вар сделана с % (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
В Вашем .conf файле под supervisord блоком можно добавить всю среду key=value пары как таковые
[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
, Если Вы не хотите к hardcode переменные, но хотите втянуть его от среды OS, шага 1 на Вашем ударе
Проверка Bash Перезагрузки env var>> . ~/.bashrc
>> sudo export CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//"
>> env
Теперь, изменяет conf файл для чтения - Примечание : предварительно ожидайте свои огибающие переменные с ENV_
[supervisord]
environment=CELERY_BROKER_URL="%(ENV_CELERY_BROKER_URL)s",FLASK_CONFIG="%(ENV_FLASK_CONFIG)s"
[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000
это работает на меня. отметьте вкладки перед каждой строкой:
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
При установке супервизора из установщика пакета проверьте, какую версию Супервизора Вы используете. По состоянию на август 2016 Вы доберетесь 3.0b2 . Если это верно, Вам будет нужна более новая версия супервизора. Можно получить его путем установки супервизора вручную или при помощи зернышка Python. Удостоверьтесь, что все зависимости встречены, наряду с новомодной установкой так, чтобы работы supervisord как услуга и запустились на начальной загрузке системы.