アップストリームに接続すると、unix:///tmp/uwsgi_dev.sockのconnect()が失敗しました(2:そのファイルまたはディレクトリはありません)。

アップストリームに接続すると、unix:///tmp/uwsgi_dev.sockのconnect()が失敗しました(2:そのファイルまたはディレクトリはありません)。

uwsgi + nginxを使用してdjangoアプリケーションを実行しようとしていますが、cronjobコマンドは実行されますが、
* * * * * /usr/local/bin/lockrun --lockfile /path/to/lock_file -- uwsgi --close-on-exec -s /path/to/socket_file --chdir /path/to/project/folder/ --pp .. -w project_name.wsgi -C666 -p 32 -H /path/to/virtualenv/ 1>> /path/to/success_log 2>> /path/to/error_log
nginxエラーログファイルに次のエラーが表示されます。
019/11/20 06:45:21 [crit] 1986#1986: *2 unix:///path/to/socket_file の connect() が失敗しました (2: 対応するファイルまたはディレクトリなし)。アップストリームへの接続中のクライアント: xxx.xxx.xx.xxx, サーバー: localhost, 要求: "GET /auth/status/ HTTP/1.1", アップストリーム: "uwsgi://unix:///path/to/socket_file :", ホスト: " xx.xxx.xx.xxx", 参照者: "http://xx.xxx.xx.xxx/
nginx設定ファイルとcronjobコマンドのソケットファイルパスは同じです。どこでミスが発生したのかわかりますか? ? ?

ベストアンサー1

ソケットが存在せず、ログファイルが生成されない場合、uwsgiサーバーは起動しません。
/ path / to / error_logが存在しないため、cronがそのシステムで機能しないか、権限の問題があると仮定します(少なくともcrontabの所有者はログファイルに書き込めません)。

とにかく、通常、これらのサーバーは起動しません。いいですね。不安定な場合は1分以内に再開されますが、この問題は他の方法で解決する必要があります。ロックの実行などを必要とせずにサービスが切断されたときに自動的に再起動するように構成できるシステムデバイスを作成することをお勧めします。

ユーザー(crontab所有者)を使用してサーバーを起動してみてください。

uwsgi --close-on-exec -s /path/to/socket_file --chdir /path/to/project/folder/ --pp .. -w project_name.wsgi -C666 -p 32 -H /path/to/virtualenv/

シェルから何を得るかを確認してください。またはメールボックス(mail)を確認してください。 cronでエラーメッセージを見つけることもできます。

おすすめ記事