Supervisord игнорирует настройки пользователя
Я хочу использовать супервизор для обслуживания приложения Laravel, которое использовало nginx, запускаемое пользователем: группа. И приложение Laravel, и задача супервизора должны использовать один файл журнала. Иногда приложение что-то записывает в журнал, в других случаях то же самое делает демон-супервизор.
Добавьте пользователя в Supervisor.conf:
[supervisord]
user=www-data
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
Затем добавьте пользователя в задачу супервизора:
[program:neuroprofile-queue]
command=php artisan queue:work
directory=/home/vbulash/nginx.html/neuroprofile
user=www-data
autostart=true
autorestart=true
stderr_logfile=/home/vbulash/nginx.html/neuroprofile/storage/logs/queue.error.log
stdout_logfile=/home/vbulash/nginx.html/neuroprofile/storage/logs/queue.output.log
Затем остановите, запустите, перечитайте и обновите файл Supervisorctl.
Наконец, в /home/vbulash/nginx.html/neuroprofile/storage/logs/:
- Вновь созданный файл журнала (выходные данные команды супервизора) имеет права root:root. Приложение Laravel не может записывать в этот журнал из-за ограниченных разрешений.
- очередь.error.log имеет права root:root
- очередь.output.log имеет права root:root
Таким образом, пользовательские настройки в супервизоре полностью игнорируются.
Как заставить супервизора работать от имениwww-data:www-data
?