首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Supervisor -无法以root或用户身份启动supervisorctl (用户在配置中设置)

Supervisor -无法以root或用户身份启动supervisorctl (用户在配置中设置)
EN

Stack Overflow用户
提问于 2015-11-19 06:31:55
回答 2查看 23.2K关注 0票数 10

我以超级用户身份启动supervisor:

sudo supervisord -c /etc/supervisor/supervisord.conf

然后我尝试启动supervisorctl:

代码语言:javascript
复制
(myapp)appuser@ip-172-31-21-65:~/appuser$ supervisorctl -c /etc/supervisor/supervisord.conf

Supervisor启动时显示以下消息:

代码语言:javascript
复制
error: <class 'socket.error'>, [Errno 13] Permission denied: file: /usr/lib/python2.7/socket.py line: 224

尝试以root用户身份运行第二个命令也不成功。我的理解是,这是设计出来的。

我找到的所有建议都建议我应该将我的用户设置为执行该命令的用户,但这已经是我的全部配置:

下面是我正在使用的脚本文件:

代码语言:javascript
复制
NAME="myapp"                              
DJANGODIR=/home/appuser/myapp             
SOCKFILE=/home/appuser/myapp/gunicorn.sock        
USER=appuser                                        
GROUP=webdata                                     
NUM_WORKERS=1                                     
DJANGO_SETTINGS_MODULE=myapp.settings             
DJANGO_WSGI_MODULE=myapp.wsgi  

我不知道是什么搞砸了?我认为可能是GROUP设置的问题,因为我无法识别该值。但是如果我把它注释掉,似乎没有什么不同。我应该如何对此进行故障排除?

编辑:我创建了一个名为supervisor的群组,添加了appuser,并更改了GROUP设置以匹配,但仍然没有joy。

这是我的supervisord.conf:

代码语言:javascript
复制
; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/super$
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TE$

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

[include]
files = /etc/supervisor/conf.d/*.conf

和我的应用程序配置文件:

代码语言:javascript
复制
[program:myapp]
command = /home/appuser/myapp/gunicorn_start.sh ; Command to start app
user = appuser ; User to run as
stdout_logfile = /home/appuser/myapp/logs/supervisor.log ; Where to write$
redirect_stderr = true ; Save stderr in the same log
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8 ; Set UTF-8 as default encoding

我的主管版本是:

代码语言:javascript
复制
>supervisord --version
3.0b2
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-21 16:44:15

我将用户名添加到[unix_http_server]部分下的superisord.conf文件中,如下所示:

代码语言:javascript
复制
[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)
chown=appuser:supervisor        ;(username:group)

这似乎是工作-在我设法解决了其他主管问题后,时间会告诉我它是否还能继续工作。

票数 13
EN

Stack Overflow用户

发布于 2020-11-26 05:28:50

在Adam的解决方案中添加了更多内容。

您还需要授予组对套接字的读/写权限。

代码语言:javascript
复制
[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0770                       ; sockef file mode (default 0700)
chown=appuser:supervisor        ;(username:group)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33791722

复制
相关文章

相似问题

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