uWSGI —フラスコのドキュメント

提供:Dev Guides
< FlaskFlask/docs/1.0.x/deploying/uwsgi
移動先:案内検索

uWSGI

uWSGIは、 nginxlighttpdチェロキーなどのサーバーでの展開オプションです。 その他のオプションについては、 FastCGI およびスタンドアロンWSGIコンテナーを参照してください。 WSGIアプリケーションをuWSGIプロトコルで使用するには、最初にuWSGIサーバーが必要です。 uWSGIは、プロトコルであると同時にアプリケーションサーバーでもあります。 アプリケーションサーバーは、uWSGI、FastCGI、およびHTTPプロトコルを提供できます。

最も人気のあるuWSGIサーバーは uwsgi で、このガイドで使用します。 従うためにそれがインストールされていることを確認してください。

気を付けて

アプリケーションファイルで発生する可能性のあるapp.run()呼び出しが、if __name__ == '__main__':ブロック内にあるか、別のファイルに移動されていることを事前に確認してください。 呼び出されていないことを確認してください。これにより、そのアプリケーションをuWSGIにデプロイした場合に、不要なローカルWSGIサーバーが常に開始されます。


uwsgiでアプリを起動する

uwsgi は、PythonモジュールにあるWSGI呼び出し可能オブジェクトを操作するように設計されています。

myapp.pyにフラスコアプリケーションがある場合、次のコマンドを使用します。

$ uwsgi -s /tmp/yourapplication.sock --manage-script-name --mount /yourapplication=myapp:app

--manage-script-nameは、SCRIPT_NAMEの処理をuwsgiに移動します。これは、その方が賢いからです。 これは、/yourapplicationへの要求をmyapp:appに送信する--mountディレクティブと一緒に使用されます。 アプリケーションがルートレベルでアクセスできる場合は、/yourapplicationの代わりに単一の/を使用できます。 myappは、フラスコアプリケーションのファイル(拡張子なし)またはappを提供するモジュールの名前を指します。 appは、アプリケーション内で呼び出し可能です(通常、行はapp = Flask(__name__)と表示されます。

フラスコアプリケーションを仮想環境内にデプロイする場合は、--virtualenv /path/to/virtual/environmentも追加する必要があります。 プロジェクトに使用するPythonのバージョンに応じて、--plugin pythonまたは--plugin python3を追加する必要がある場合もあります。


nginxの構成

基本的なフラスコのnginx構成は次のようになります。

location = /yourapplication { rewrite ^ /yourapplication/; }
location /yourapplication { try_files $uri @yourapplication; }
location @yourapplication {
  include uwsgi_params;
  uwsgi_pass unix:/tmp/yourapplication.sock;
}

この構成は、アプリケーションを/yourapplicationにバインドします。 URLルートに入れたい場合は、少し簡単です。

location / { try_files $uri @yourapplication; }
location @yourapplication {
    include uwsgi_params;
    uwsgi_pass unix:/tmp/yourapplication.sock;
}