Supervisord 设置程序的用户:组

Str*_*eem 5 supervisord

我正在运行 Nginx、Gunicorn 和 Supervisord。Supervisord 启动后,它会gunicorn.sock使用用户和组创建文件my_user:my_user。我需要 Nginx 才能连接到套接字文件,gunicorn.sock是否有任何正确的方法来设置套接字文件用户和组my_user:nginx

我尝试将此设置设置为以下内容,[myprogram:program]但它不起作用:

socket_owner=my_user:nginx
chown=my_user:nginx
Run Code Online (Sandbox Code Playgroud)

我的supervisord.conf程序:

[myprogram:program]
command = /var/www/project/virtual_env/bin/gunicorn -k gevent --worker-connections 1001 --bind=unix:gunicorn.sock -m 007 wsgi:application
directory = /var/www/project/
autostart=true
autorestart=unexpected
Run Code Online (Sandbox Code Playgroud)

小智 6

也许您可以以与 Nginx 运行相同的用户身份运行 Gunicorn?然后创建的套接字将拥有必要的所有权。当然,这可能需要您调整应用程序目录的权限。

Supervisor 有一个user可用于此目的的指令。例如,如果 Nginx 作为www-data用户运行,您可以使用此 Supervisor 配置。

[myprogram:program]
command = /var/www/project/virtual_env/bin/gunicorn -k gevent --worker-connections 1001 --bind=unix:gunicorn.sock -m 007 wsgi:application
directory = /var/www/project/
user = www-data
autostart=true
autorestart=unexpected
Run Code Online (Sandbox Code Playgroud)

这会产生以下所有权和权限(生成的组取决于用户帐户的配置)。

# ls -lh gunicorn.sock
srwxrwx--- 1 www-data www-data 0 Dec 24 22:43 gunicorn.sock
Run Code Online (Sandbox Code Playgroud)

类似的东西对我来说适用于 Debian Stretch 上的 Nginx、Gunicorn 和 Django。