Supervisord设置用户:程序组

时间:2017-07-15 06:45:13

标签: supervisord

我正在和Supervisord一起经营Nginx,Gunicorn。在Supervisord启动后,它会创建包含用户和组gunicorn.sock的{​​{1}}文件。我需要Nginx能够连接到套接字文件my_user:my_user是否有任何正确的方法将套接字文件用户和组设置为gunicorn.sock

我尝试将此设置设置为my_user:nginx,但不起作用:

[myprogram:program]

我的supervisord.conf程序:

socket_owner=my_user:nginx
chown=my_user:nginx

3 个答案:

答案 0 :(得分:1)

已经是 2021 年了,但我相信这个答案可能对某人有所帮助。 Nginx 使用用户“www-data”。解决方法是将此用户添加到您的用户组中。

team    played  won lost    draw
aus     2       0   2       0
nz      1       0   1       0
sa      2       1   0       1
us      3       2   0       1

记住将“my_user”更改为您当前用户的组名。

为您的应用重新启动主管服务。

答案 1 :(得分:0)

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

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

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

# ls -lh gunicorn.sock
srwxrwx--- 1 www-data www-data 0 Dec 24 22:43 gunicorn.sock

与Debian Stretch上的Nginx,Gunicorn和Django对我有类似的东西。

答案 2 :(得分:0)

解决此问题的一种方法是在将 nginx 和 gunicorn 用户分开的同时,在不放弃太多权限的情况下,使用 systemd 而不是 gunicorn 的主管。

在当前文档 https://docs.gunicorn.org/en/20.1.0/deploy.html#systemd 中,它给出了套接字单元文件的设置+注释:

CurrentCourseModels = repository.SelectCourses()
.Where(x =>(( x.EducationGroupID==null || x.EducationGroupID == eID)
&& (x.CourseNameID==null|| x.CourseNameID == nID))).ToList();