メインコンテンツへスキップ
Gunicorn は、Flask、Django、その他の WSGI アプリケーションを本番環境で実行する Python の WSGI HTTP サーバーです。このガイドでは、Gunicorn でアプリケーションを起動し、プランの RAM に合わせて調整し、Square Cloud で実行する方法を解説します。

Gunicorn のインストール

手元のマシンに Gunicorn をインストールします。
Square Cloud がほかの依存関係と一緒にインストールできるように、requirements.txt にも gunicorn を追加してください。
requirements.txt

基本的な使い方

Gunicorn でアプリケーションを実行するには、Flask や Django で作ったものなどの WSGI アプリケーションが必要です。また、WSGI アプリケーションオブジェクトを含むモジュール名と変数名を把握しておく必要があります。 たとえば、app.py というファイルに Flask アプリケーションがあり、Flask インスタンスの名前が app の場合、次のコマンドで Gunicorn を使って実行できます。
このコマンドでは、
  • python -m gunicorn は Gunicorn を Python モジュールとして実行します。
  • --bind 0.0.0.0:80 は、すべてのネットワークインターフェースのポート 80 で待ち受けるよう Gunicorn に指示します。
  • app:app は、WSGI アプリケーションオブジェクトを含むモジュール名(app)と変数名(app)を指定します。
Django の場合は、Django がプロジェクトパッケージ内に作成する wsgi.py モジュールを Gunicorn に指定します (myproject はプロジェクト名に置き換えてください)。

その他のオプション

Gunicorn には動作をカスタマイズするためのオプションがいくつか用意されています。ここではよく使われるものを紹介します。すべてのオプションは Gunicorn 公式の設定リファレンスに記載されています。

Workers

  • --workers <number>
このオプションは、リクエストを処理するワーカープロセスの数を設定します。各ワーカーはアプリケーションのコピーをメモリ上に持つ独立したプロセスなので、Square Cloud では通常 CPU ではなく RAM が上限になります。まずは 2 ワーカーで始め、MEMORY を増やしてからワーカーを追加してください。アプリケーションが LACK_OF_RAM で停止する場合は、ワーカー数を減らしてください。
ワーカー数を multiprocessing.cpu_count() や (2 x $num_cores) + 1 の計算式で決めないでください。コンテナ内ではコア数がホストマシンのものになることがあり、数十個のワーカーが起動して RAM を使い果たしてしまいます。

Name

  • --name <name>
  • -n <name>
このオプションは、Gunicorn のプロセス名を設定します。

Worker class

  • --worker-class <class>
  • -k <class>
このオプションは、使用するワーカーの種類を設定します。デフォルトは sync ですが、gevent、eventlet、tornado などのワーカータイプも使用できます。

設定ファイル

Gunicorn のオプションは、Python の設定ファイルで指定することもできます。Gunicorn は、実行したディレクトリ (Square Cloud ではプロジェクトのルート) にある gunicorn.conf.py という名前のファイルを自動的に読み込みます。それ以外のファイル名の場合は、-c <file> で指定してください。
gunicorn.conf.py
このファイルがプロジェクトにあれば、起動コマンドに --bind オプションは必要ありません。

Square Cloud で実行する

プロジェクトのルートに squarecloud.app ファイルを作成し、その START フィールドに Gunicorn のコマンドを記述します。これにより、Square Cloud はデフォルトの python app.py ではなく Gunicorn でアプリケーションを起動します。
Gunicorn は 0.0.0.0:80 にバインドする必要があります。Square Cloud はサブドメインへのトラフィックをアプリケーションのポート 80 に届けます。Square Cloud は環境変数 PORT も 80 に設定し、Gunicorn はこれを読み込みます。--bind オプションがない場合、PORT が設定されていれば 0.0.0.0:$PORT でリッスンします。
Django の場合は、START に myproject.wsgi:application を、MAIN にプロジェクトの manage.py を指定します。デプロイ全体の手順は Flask と Django のチュートリアルで解説しています。

次のステップ

Flask

Gunicorn の背後で Flask アプリケーションをデプロイします。

Django

Gunicorn の背後で Django プロジェクトをデプロイします。

アプリが起動しない

EADDRINUSE、LACK_OF_RAM などの起動エラーを修正します。

この記事は役に立ちましたか?

  • 私たちは可能な限り最良のサポートを提供するため、細心の注意を払ってこのコンテンツを作成しました。 この記事が少しでもお役に立ったなら、ぜひ私たちの活動を応援してください。すでに多くの開発者が Google と Trustpilot で Square Cloud に 402 件のレビューで 4.9/5 の評価をつけています。あなたのレビューもぜひ残してください。あなたにとって何が最も重要かを理解する助けになります。

Google レビュー

Google レビューにあなたのレビューを残してください。

Trustpilot

Trustpilot にあなたのレビューを残してください。