我想使用supervisord来维护使用nginx由www-data:www-data
user:group运行的Laravel应用程序。Laravel应用程序和supervisord任务都需要共享一个日志文件。有时应用程序会将一些内容写入日志,在其他情况下,supervisor守护程序也会这样做。
将用户添加到supervisord.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/ :
- 新创建的日志文件(supervisor 命令的输出)具有权限 root:root。由于权限有限,Laravel 应用程序无法写入此日志。
- queue.error.log 拥有权限 root:root
- queue.output.log 拥有权限 root:root
因此,主管中的用户设置完全被忽略。
如何强制主管以 身份运行www-data:www-data
?