首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Supervisord设置用户:程序组

Supervisord设置用户:程序组
EN

Stack Overflow用户
提问于 2017-07-15 14:45:13
回答 3查看 2.7K关注 0票数 2

我正在运行Nginx,Gunicorn和Supervisord。Supervisord启动后,它使用用户和组my_user:my_user创建gunicorn.sock文件。我需要Nginx能够连接到套接字文件gunicorn.sock有什么合适的方法来设置套接字文件的用户和组到my_user:nginx

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

代码语言:javascript
复制
socket_owner=my_user:nginx
chown=my_user:nginx

我的supervisord.conf程序:

代码语言:javascript
复制
[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
EN

回答 3

Stack Overflow用户

发布于 2017-12-25 06:43:18

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

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

代码语言:javascript
复制
[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

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

代码语言:javascript
复制
# ls -lh gunicorn.sock
srwxrwx--- 1 www-data www-data 0 Dec 24 22:43 gunicorn.sock

在Debian Stretch上使用Nginx、Gunicorn和Django时,类似的东西也适用于我。

票数 2
EN

Stack Overflow用户

发布于 2021-07-04 06:45:31

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

代码语言:javascript
复制
sudo usermod -a -G my_user www-data

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

重新启动应用程序的supervisor服务。

票数 1
EN

Stack Overflow用户

发布于 2021-07-29 06:15:41

解决这个问题的一种方法是使用systemd,而不是使用supervisor,这样就可以将nginx和gunicorn用户分开,这样就不会给出太多权限。

在当前的文档https://docs.gunicorn.org/en/20.1.0/deploy.html#systemd中,它为套接字单元文件提供了以下setup+comment:

代码语言:javascript
复制
[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock
# Our service won't need permissions for the socket, since it
# inherits the file descriptor by socket activation
# only the nginx daemon will need access to the socket
SocketUser=www-data
# Optionally restrict the socket permissions even more.
# SocketMode=600

[Install]
WantedBy=sockets.target
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45115333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档