Как я могу установить PATH для supervisord, чтобы он находил исполняемые файлы - PullRequest
9 голосов
/ 25 августа 2011

Я пытаюсь настроить supervisor.conf. Для одного из моих приложений требуется node.js, но узел не установлен по системе. Кроме того, поскольку он должен связываться с портом 80, он должен работать от имени пользователя root. Как я могу изменить переменную PATH, чтобы супервизор мог найти исполняемый файл node (который находится в каталоге) и запустить приложение node.js.


Я пытаюсь сделать это так

[supervisord]
environment=PATH=/path/to/where/node/executable/is

[program:web]
command=node web.js -c config.json

Это не с

2011-08-25 16:49:29,494 INFO spawnerr: can't find command 'node'

Ответы [ 3 ]

12 голосов
/ 14 ноября 2013

Вы можете добавить его в команду, используя env:

[program:web]
command=env PATH="/path/to/where/node/executable/is" node web.js -c config.json

Кажется, в некоторых случаях среда не работает.

5 голосов
/ 05 ноября 2014

Шаблон, который я начал использовать с супервизором (который похож на zenbeni), заключается в использовании сценария оболочки для запуска любой программы, которую я запускаю, которая позволяет устанавливать переменные среды и т. Д.

например

#!/bin/sh
export EXAMPLE_VARIABLE=something
export PYTHONPATH=/something
export PATH=$PATH:/somewhere/else
exec python somescript.py

Важно использовать exec.Он заменяет / bin / sh исполняемой программой, а не порождает ее как дочернюю.Это означает, что вокруг нет никаких дополнительных процессов, а также сигналы работают должным образом.

(Небольшое) преимущество этого метода перед zenbeni состоит в том, что при обновлении переменных среды и т. Д. Требуется только перезапуск супервизора, т.е.не требуется перечитывать / обновлять и т. д.Это преимущество становится больше при использовании прослушивателя событий, если вы столкнулись с той же ошибкой, что и я (полный перезапуск супервизора для обновления переменных среды прослушивателя событий).

0 голосов
/ 25 августа 2011

Вы можете просто установить абсолютный путь к команде:

[program:web]
command=/path/to/where/node/executable/is/node web.js -c config.json
...