Я пытаюсь протестировать пилотную систему с nginx
присоединенный к uwsgi
обслуживаемое приложение, контролируемое supervisord
работает на ubuntu-сервере. Приложение написано на Python с Flask в virtualenv, хотя я не уверен, что это актуально. Чтобы протестировать систему, я создал простой привет мир с flask
. Я хочу, чтобы nginx и uwsgi запускались как пользователь www-data.
Если я запустил uwsgi
"вручную" из корневой оболочки я вижу, что процессы uwsgi работают от имени соответствующего пользователя (www-data). Хотя, если позволю supervisor
запускаем приложение происходит что-то странное - процессы uwsgi запущены под моим пользователем (friendzis). Следовательно, файл сокета создается не тем пользователем, и nginx не может взаимодействовать с моим приложением.
нота: сервер linux работает как Hyper-V
ВМ под Windows Server 2008.
Соответствующая конфигурация:
[uwsgi]
socket = /var/www/sockets/cowsay.sock
chmod-socket = 666
abstract-socket = false
master = true
workers = 2
uid = www-data
gid = www-data
chdir = /var/www/cowsay/cowsay
pp = /var/www/cowsay/cowsay
pyhome = /var/www/cowsay
module = cowsay
callable = app
руководитель
[program:cowsay]
command = /var/www/cowsay/bin/uwsgi -s /var/www/sockets/cowsay.sock -w cowsay:app
directory = /var/www/cowsay/cowsay
user = www-data
autostart = true
autorestart = true
stdout_logfile = /var/www/cowsay/log/supervisor.log
redirect_stderr = true
stopsignal = QUIT
Я уверен, что упускаю какую-то мелочь, но не могу ее заметить. Буду признателен за любые предложения.
Вы должны указать environment
опция в разделе программы. Например:
user=chrism
environment=HOME="/home/chrism",USER="chrism"
Видеть Среда подпроцесса для подробностей.
Также аналогичное решение предлагается на переполнение стека
Как ваш руководитель бега? Вы уверены, что запускали его не из оболочки (со своим uid)?
Вы уверены, что вам нужен супервайзер? Вы можете легко подключить uWSGI к выскочке или systemd (в конечном итоге с uWSGI Emperor)