Supervisord 忽略用户设置

Supervisord 忽略用户设置

我想使用supervisord来维护使用nginx由www-data:www-datauser: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

相关内容