web-dev-qa-db-ja.com

unix:///var/run/supervisor.sockそのようなファイルはありません

私はUbuntu 14.04サーバーで Supervisord を実行していますが、すべて正常に動作します。私はgit Pushを使用して展開し、展開時にアプリケーションサーバー( gunicorn )も再起動する必要があります。これは、supervisorctlを使用して実行できると思われます。

un supervisord.conf、gunicornは次のように定義されます。

[program:gunicorn]
command=/home/imb/imb/venv/bin/gunicorn --worker-class eventlet -b 127.0.0.1:5000 -w 1 app:app
directory=/home/imb/imb
autostart=true
autorestart=true
stdout_logfile=/tmp/gunicorn.log
redirect_stderr=true
stopsignal=QUIT

そして、私は次のようにsupervisorctlを有効にしました:

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

私はスーパーバイザーを使い始めました

Sudo supervisord -c /home/imb/imb/supervisord.conf

私が理解している限り、コマンドsupervisorctl restart gunicornを使用してgunicornを再起動できるはずですが、そうすると、

$ supervisorctl restart gunicorn
unix:///var/run/supervisor.sock no such file

私が確認したところ、ファイル/var/run/supervisor.sockは実際には存在しませんが、スーパーバイザが実際に実行されていると確信しています。

$ ps -A | grep supervisor
27211 ?        00:00:00 supervisord

スーパーバイザが明らかに実行されているにもかかわらず、/var/run/supervisor.sockファイルが作成されない理由を誰かが知っていますか?すべてのヒントは大歓迎です!

10
kramer65

よし、もう少しいじってみたら、自分が間違ったことを見つけた。

以下のsupervisorctlの行を確認してください。supervisorctlにのみ、ソケットファイルの場所を教えてください。

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

さらに上のファイルには、ファイルが実際に作成される場所を定義する他の2行があります。

[unix_http_server]
file=/tmp/supervisor.sock

ご覧のとおり、supervisorctl/tmp/からソケットファイルを読み取ろうとしたときに、/var/run/にソケットファイルが作成されました。最後の行をfile=/var/run/supervisor.sockに変更したところ、問題なく動作しました。

この回答が、同じ問題に対処する他の誰かの助けになることを願っています。

また、コメントで@MariusMatutiaeによって提供されたリンクを確認することもできます。 https://stackoverflow.com/questions/10716159/nginx-and-supervisor-setup-in-ubunt

6
kramer65

両方に同じエントリがあるユーザーの場合

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock

[unix_http_server]
file=/tmp/supervisor.sock

以下の手順に従って問題を修正してください-

  1. / tmpから.sockファイルを削除します
  2. 'supervisord'コマンドを実行します。これにより、sockファイルが再作成されます。
  3. 「supervisorctl -i」を実行して、サービスのステータスを確認します。

これがあなたに役立つことを願っています!

5
monothorn

この問題に非常に苦労した後、誰もがenableまたはrestartだけが機能していなかったと私に言った。私は最終的に私のための解決策を見つけました:

  • まず、メインのsupervisor.confファイルがここにあることを確認してください:/etc/supervisor/supervisor.conf
  • 私の場合は、プロジェクト固有の.confファイルもここにあります:/etc/supervisor/conf.d/project.conf

どういうわけかsupervisorctlはうまく機能していましたが、奇妙なことに、service supervisor restartを実行するとすべてが壊れ、OPのエラーが発生します。

解決策は次のとおりです。

  1. project.confの名前をproject.conf.tmpに変更
  2. 次にservice supervisor restartsupervisorctlが再び機能するようになった後)
  3. プロジェクトのconfファイルの名前をproject.confに戻します
  4. supervisorctl rereadsupervisorctl updatesupervisorctl restart all
3
lapin

vi /opt/conf/supervisord.conf

[supervisord]
nodaemon=true

[unix_http_server]
file=/var/run/supervisor.sock

; rpc interface for supervisorctl
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

[program:program1]

監視付きで実行

/usr/bin/supervisord -c /opt/conf/supervisord.conf

supervisorctlを実行する

/usr/bin/supervisorctl -c /opt/conf/supervisord.conf
0
Tinkal Gogoi

私は、supervisordがDockerコンテナー内で実行されているという問題がありました。 supervisorctlコマンドを使用したいときの唯一の応答はunix:///var/run/supervisor.sock no such file

私の問題の解決策は、ルートとしてsupervisorctlコマンドを実行する必要があることでした。

Sudo supervisorctl

もういや unix:///var/run/supervisor.sock no such file

0
Sebastian