web-dev-qa-db-ja.com

スーパーバイザー-rootまたはユーザーとしてsupervisorctlを開始できません(ユーザーは構成で設定されています)

私はrootとしてスーパーバイザーを開始します:

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

次に、supervisorctlを起動しようとします。

(myapp)appuser@ip-172-31-21-65:~/appuser$ supervisorctl -c /etc/supervisor/supervisord.conf

スーパーバイザーは、次のメッセージから始まります。

error: <class 'socket.error'>, [Errno 13] Permission denied: file: /usr/lib/python2.7/socket.py line: 224

Rootとして2番目のコマンドを実行しようとしても失敗します。私の理解では、これは仕様によるものです。

私が見つけたすべてのアドバイスは、コマンドを実行するユーザーとしてユーザーを設定する必要があることを示唆していますが、これはすでにすべてを構成する方法です。

これが私が使用しているスクリプトファイルです:

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設定を変更しましたが、それでも喜びはありません。

これは私のsupervisord.confです:

; 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

そして、アプリの構成ファイル:

[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

私のスーパーバイザーバージョンは次のとおりです。

>supervisord --version
3.0b2
7
Adam Starrh

次のように、[unix_http_server]セクションの下のsuperisord.confファイルにユーザー名を追加しました。

[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)

これは、私が管理者の残りの問題を解決した後も機能し続けるかどうかを判断するために機能しているように見えました。

8
Adam Starrh