「Ubuntu 14.04 で uWSGI と Nginx を使用して Flask アプリケーションを提供する方法」のガイダンスに従って Flask アプリケーションをデプロイしました。チュートリアルの簡単な例を使用して正常にデプロイできますが、アプリケーションのエントリ ファイルを私のファイルに置き換えると機能しません。奇妙なのは、virtualenv 環境で直接使用されることです
リーリーも可能ですが、
を使用してください リーリーは機能しません。エラーは次のとおりです:
リーリー上記のエラー メッセージは、アドレスが使用されていることを示していますが、そのアドレスとポートを占有する複数のアドレスとポートが開かれていません。最初は理解できませんでした。教えてください。
慎重に調査した結果、最終的に問題を解決しました。まず、エントリファイルのコードを投稿します。 リーリー
を使用して直接実行すると、報告されるエラーは質問に投稿されたエラーメッセージと同じであり、アドレスが占有されています。しかし、占有されている対応するアプリケーションがプロセスまたはポートで見つからないのは、なぜ単純な例でよいのでしょうか。注意深く比較してみました:リーリー
リーリーuwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi
明らかに、私は IDE での開発に慣れているため、エントリ ファイルの最も基本的な部分を無視しました:エラーは次のようになります:
リーリーこのエラーの発生はかなり言葉にならない問題で、uwsgiはエントリーファイルでしか認識できません
。application
,而无法识别我定义的run
。之所以会出现端口占用的情况,是因为app.run()
实际上也执行了,但并不是uwsgi要加载的应用application
最後に次のように変更します:uwsgi にはアクセスアドレスとポート番号を定義できる設定ファイルがあります。socket.error: [Errno 98] Address selected in use の文が uwsgi の設定を行っていない理由であると思います。 uwsgi の設定や flask プロジェクトのデプロイプロセスについては、私が書いた記事を参照してください。
/a/1190000004294...
netstat -ntlp ポートが uwsgi によって占有されているかどうかを確認し、そうであれば、ps -ef grep uwsgi で pid を見つけて kill します。