このチュートリアルに従ってDjango-gunicorn-nginxのセットアップを使用しています http://ijcdigital.com/blog/Django-gunicorn-and-nginx-setup/ nginxのセットアップまで、動作しています。次に、スーパーバイザーをインストールして構成し、サーバーを再起動して確認したところ、502の不正なゲートウェイが表示されています。 Ubuntu 12.04 LTSを使用しています
/etc/supervisor/conf.d/qlimp.conf
[program: qlimp]
directory = /home/nirmal/project/qlimp/qlimp.sh
user = nirmal
command = /home/nirmal/project/qlimp/qlimp.sh
stdout_logfile = /path/to/supervisor/log/file/logfile.log
stderr_logfile = /path/to/supervisor/log/file/error-logfile.log
その後、スーパーバイザーを再起動し、このコマンドを実行します$ supervisorctl start qlimp
と私はこのエラーを受け取っています
unix:///var/run/supervisor.sock no such file
スーパーバイザーのセットアップに問題はありますか?
ありがとう!
ソケットファイルがないということは、おそらくスーパーバイザが実行されていないことを意味します。実行されない理由は、qlimp.confファイルに何らかのエラーがあるためかもしれません。あなたがするなら
Sudo service supervisor start
これが事実かどうかを確認できます。スーパーバイザがすでに実行されている場合、それは言います。また、エラーをキャッチしている場合、通常、supervisorctlよりも役立つエラーメッセージが表示されます。
私はあなたと同じ問題に遭遇しました、そして、数回後に、ここに解決策が来ます:
最初にapt-getスーパーバイザーバージョンを削除します。
Sudo apt-get remove supervisor
バックエンドスーパーバイザープロセスを強制終了します。
Sudo ps -ef | grep supervisor
次に、最新バージョンを取得します(apt-getバージョンは3.0a8でした):
Sudo easy_install(pip install) supervisor==3.0b2
設定ファイルをエコーします(ルート権限):
echo_supervisord_conf > /etc/supervisord.conf
5.supervisordを開始します。
Sudo supervisord
6. Supervisorctlを入力します。
Sudo supervisorctl
何でもできました!楽しむ!
これを試して
cd /etc/supervisor
Sudo supervisord
Sudo supervisorctl restart all
Supervisordがインストールされ、実行されていることを確認しますか? /var/run/supervisor.sock
にソケットファイルがありますか?
このエラーは、制御CLIであるsupervisorctl
が、デーモンであるsupervisord
と通信するためにUNIXソケットに到達できないことを示しています。
/etc/supervisor/supervisord.conf
を確認して、unix_http_server
セクションとsupervisorctl
セクションの値が一致するかどうかを確認することもできます。
これは、Ubuntuレベルの問題であり、Pythonの問題ではないことに注意してください。Django=またはnginxです。
Ubuntu 16以降では、systemdへの切り替えが原因であると思われるため、この回避策は新しいサーバーで修正される場合があります。
# Make sure Supervisor comes up after a reboot.
$ Sudo systemctl enable supervisor
# Bring Supervisor up right now.
$ Sudo systemctl start supervisor
そして、スーパーバイザーのiconic.conf [私の例]のステータスを確認します
$ Sudo supervisorctl status iconic
PS:実行中にgunicornに問題がないことを確認してください。
このエラーは、おそらくあなたが特権を持っていないことが原因です。この方法でエラーを修正し、ターミナルを開いて、vim /etc/supervisord.conf
を入力してファイルを編集し、行を検索することができます
[unix_http_server]
; file =/tmp/supervisor.sock; (ソケットファイルへのパス)
; chmod = 0700;ソケットファイルモード(デフォルトは0700)
文字列;file=/tmp/supervisor.sock
および;chmod=0700
の先頭にあるセミコロンを削除し、supervisordを再起動します。
/etc/supervisor.conf
次の2つのセクションが存在します
[unix_http_server]
file=/tmp/supervisor.sock ; path to your socket file
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
私の場合、スーパーバイザーは実行されていませんでした。私が実行する問題を見つけるには:
Sudo systemctl status supervisor.service
問題は、ログが存在しないディレクトリを指しているため、作成する必要があったことです。
私はそれが役立つことを願っています:)
次のようなことができます:-
Sudo touch /var/run/supervisor.sock
Sudo chmod 777 /var/run/supervisor.sock
Sudo service supervisor restart
間違いなく動作します。これを試してください。
Confファイルを作成し、以下に行を追加します
Nginxを使用するには、Nginxのインストール中にアクティブにしたシステムブート時の自動起動を無効にする必要があることに注意してください。
https://askubuntu.com/questions/177041/nginx-disable-autostart
注:スーパーバイザーを使用するには、すべてのスーパーバイザープロセスが「デーモンオフ」モードになっている必要があります
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
autostart=true
autorestart=true
startretries=5
stopasgroup=true
stopsignal=QUIT
numprocs=1
startsecs=0
process_name=WebServer(Nginx)
stderr_logfile=/var/log/nginx/error.log
stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/nginx/access.log
stdout_logfile_maxbytes=10MB
Sudo supervisorctl reread && Sudo supervisorctl update
touch /var/run/supervisor.sock
Sudo supervisord -c /etc/supervisor/supervisord.conf
supervisorctlをすべて再起動した後
スーパーバイザポートをリッスンする場合
ps -ef | grep supervisord
プロセスを強制終了する場合
kill -s SIGTERM 2503