Как использовать virtualenvwrapper в Supervisor? - программирование
Подтвердить что ты не робот

Как использовать virtualenvwrapper в Supervisor?

Когда я разрабатывал и тестировал свой проект, я использовал virtualenvwrapper для управления средой и запуска ее:

workon myproject
python myproject.py

Конечно, как только я был в правильном виртуальном пространстве, я использовал правильную версию Python и другие соответствующие библиотеки для запуска моего проекта.

Теперь я хочу использовать Supervisord для управления тем же проектом, который готов к развертыванию. Вопрос в том, каков правильный способ сказать Supervisord активировать правильный virtualenv перед выполнением script? Мне нужно написать отдельный bash script, который делает это, и вызвать это script в поле команды конфигурационного файла Supervisord?

4b9b3361

Ответ 1

Один из способов использования вашего virtualenv из командной строки - использовать исполняемый файл python, расположенный внутри вашего virtualenv.

для меня у меня есть мои виртуальные envs в каталоге .virtualenvs. Например

/home/ubuntu/.virtualenvs/yourenv/bin/python

нет необходимости workon

для supervisor.conf управления приложением торнадо я делаю:

command=/home/ubuntu/.virtualenvs/myapp/bin/python /usr/share/nginx/www/myapp/application.py --port=%(process_num)s

Ответ 2

Добавьте свой путь virtualenv/bin к вашему supervisord.conf environment:

[program:myproj-uwsgi]
process_name=myproj-uwsgi
command=/home/myuser/.virtualenvs/myproj/bin/uwsgi
    --chdir /home/myuser/projects/myproj
    -w myproj:app
environment=PATH="/home/myuser/.virtualenvs/myproj/bin:%(ENV_PATH)s"
user=myuser
group=myuser
killasgroup=true
startsecs=5
stopwaitsecs=10

Ответ 3

Сначала запустите

$ workon myproject
$ dirname `which python`
/home/username/.virtualenvs/myproject/bin

Добавьте следующий

environment=PATH="/home/username/.virtualenvs/myproject/bin"

к соответствующему файлу supervisord.conf в разделе [program: blabla].