Gunicorn のインストール
手元のマシンに Gunicorn をインストールします。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)を指定します。
wsgi.py モジュールを Gunicorn に指定します (myproject はプロジェクト名に置き換えてください)。
その他のオプション
Gunicorn には動作をカスタマイズするためのオプションがいくつか用意されています。ここではよく使われるものを紹介します。すべてのオプションは Gunicorn 公式の設定リファレンスに記載されています。Workers
--workers <number>
MEMORY を増やしてからワーカーを追加してください。アプリケーションが LACK_OF_RAM で停止する場合は、ワーカー数を減らしてください。
Name
--name <name>-n <name>
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 でリッスンします。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 にあなたのレビューを残してください。

