uWSGI
uWSGIは、 nginx 、 lighttpd 、チェロキーなどのサーバーでの展開オプションです。 その他のオプションについては、 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;
}