我正在和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
答案 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();