Задать вопрос

Как достать env переменную в supervisor?

Конфиг файлsupervisord.conf выглядит так
[supervisord]
nodaemon=true
environment=SITE_PATH="/home/admin/web/site.loc/public_html"
[supervisorctl]
[inet_http_server]
port = 127.0.0.1:9001
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[include]
files = supervisord.d/*.conf

Нужно достать переменную SITE_PATH в воркерах
[program:site-develop-worker]
process_name=%(program_name)s_%(process_num)02d
command=php %(SITE_PATH)s/system/console.php pheanstalk:start --queue=develop
autostart=true
autorestart=true
user=admin
numprocs=2
redirect_stderr=true
stdout_logfile=%(SITE_PATH)s/system/storage/logs/worker.log

При таком раскладе выдает ошибку
Error: Format string '%(SITE_PATH)s/system/storage/logs/worker.log' for 'program:site-develop-worker.stdout_logfile' contains names ('SITE_PATH') which cannot be expanded. Available names: ENV_GPG_KEYS, ENV_HOME, ENV_HOSTNAME, ENV_PATH, ENV_PGID, ENV_PHALCON_VERSION, ENV_PHPIZE_DEPS, ENV_PHP_ASC_URL, ENV_PHP_CFLAGS, ENV_PHP_CPPFLAGS, ENV_PHP_INI_DIR, ENV_PHP_LDFLAGS, ENV_PHP_MD5, ENV_PHP_SHA256, ENV_PHP_URL, ENV_PHP_VERSION, ENV_PUID, group_name, here, host_node_name, process_num, program_name in section 'program:site-develop-worker' (file: '/etc/supervisord.d/site-develop-worker.conf')

Что я не так делаю? Переменную
environment=SITE_PATH="/home/admin/web/site.loc/public_html"
вроде в правильном месте установил. Или может есть какие-нибудь другие способы установки настроек для всех воркеров?(к примеру путь к сайту), чтобы не вбивать напрямую пути, так как воркеры под гитом находятся
  • Вопрос задан
  • 546 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
smorman
@smorman
When In Rome do as The Romans do...
А supervisord.conf - это весь такой файл, или просто выборка?
А то он побогаче будет в опциях.

[inet_http_server]
port = 127.0.0.1:9001

лучше так:

[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; (ip_address:port specifier, *:port for all iface)

Секция:
[include]
files = supervisord.d/*.conf

Я по другому развожу:

[include]
;files = relative/directory/*.ini
files = /etc/supervisor/conf.d/*.conf
АБСОЛЮТНЫЙ путь прописывать.

Т.е. под сам конфиг непосредственно для процесса в отдельную папку делаю:
/etc/supervisor/conf.d

В конфиг-файле процесса в:

command=

необходимо АБСОЛЮТНЫЙ путь прописывать (я выше об этом писал).
Supervisor плохо понимает переменные, алиасы и т.д...

И user из конфига процесса лучше убрать и прописать его в основном конфиг-файле: supervisord.conf (он там есть. Просто раскомментировать его и прописать нужное):

[supervisord]
user=root (у вас admin)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы