私は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
ファイルが作成されない理由を誰かが知っていますか?すべてのヒントは大歓迎です!
よし、もう少しいじってみたら、自分が間違ったことを見つけた。
以下の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
両方に同じエントリがあるユーザーの場合
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock
&
[unix_http_server]
file=/tmp/supervisor.sock
以下の手順に従って問題を修正してください-
これがあなたに役立つことを願っています!
この問題に非常に苦労した後、誰もがenable
またはrestart
だけが機能していなかったと私に言った。私は最終的に私のための解決策を見つけました:
/etc/supervisor/supervisor.conf
.conf
ファイルもここにあります:/etc/supervisor/conf.d/project.conf
どういうわけかsupervisorctl
はうまく機能していましたが、奇妙なことに、service supervisor restart
を実行するとすべてが壊れ、OPのエラーが発生します。
解決策は次のとおりです。
project.conf
の名前をproject.conf.tmp
に変更service supervisor restart
(supervisorctl
が再び機能するようになった後)project.conf
に戻しますsupervisorctl reread
、supervisorctl update
、supervisorctl restart all
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
私は、supervisordがDockerコンテナー内で実行されているという問題がありました。 supervisorctl
コマンドを使用したいときの唯一の応答はunix:///var/run/supervisor.sock no such file
。
私の問題の解決策は、ルートとしてsupervisorctl
コマンドを実行する必要があることでした。
Sudo supervisorctl
もういや unix:///var/run/supervisor.sock no such file
。