uWSGI

uWSGIは、 nginx や、 lighttpd や、 cherokee のようなサーバーのデプロイオプションです。 他のオプションについては、 FastCGI や、 スタンドアロンのWSGIコンテナ を見てください。 WSGIアプリケーションでuWSGIプロトコルを使うためには、まずuWSGIサーバーが必要です。 uWSGIはプロトコルとアプリケーションサーバーの両方です。 アプリケーションサーバーは、uWSGI、FastCGI、HTTPで配信することができます。

最も有名なuWSGIサーバーは uwsgi です。 このガイドでも使っています。 そのガイドに沿ってインストールされているか確認して下さい。

Watch Out

Please make sure in advance that any app.run() calls you might have in your application file are inside an if __name__ == '__main__': block or moved to a separate file. Just make sure it’s not called because this will always start a local WSGI server which we do not want if we deploy that application to uWSGI.

uwsgiでアプリケーションを起動する

uwsgi は、Pythonモジュールから呼び出し可能なWSGIを探して操作するように設計されています。

myapp.pyにFlaskアプリケーションを与えたい場合は、以下の様なコマンドを使って下さい。 :

$ uwsgi -s /tmp/uwsgi.sock --module myapp --callable app

もしくは、以下のほうがいいなら以下のようにして下さい。 :

$ uwsgi -s /tmp/uwsgi.sock -w myapp:app

nginxの設定

Flaskでは基本的に、以下のようなnginxのuWSGI設定になります。

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

この設定はアプリケーションを /yourapplication にバインドします。 URLのルートに配置したい場合は、WSGIに SCRIPT_NAME を教える必要はないか、 使えるようにuwsgiを修正するだけなのでさらに簡単です。

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

Table Of Contents

Related Topics

This Page