本番環境にデプロイする
チュートリアルのこの部分では、アプリケーションのデプロイ先のサーバーがあることを前提としています。 配布ファイルを作成してインストールする方法の概要を説明しますが、使用するサーバーまたはソフトウェアの詳細については説明しません。 開発用コンピューターに新しい環境をセットアップして、以下の手順を試すことができますが、実際のパブリックアプリケーションをホストするために使用しないでください。 アプリケーションをホストするさまざまな方法のリストについては、デプロイメントオプションを参照してください。
ビルドとインストール
アプリケーションを他の場所にデプロイする場合は、配布ファイルを作成します。 Pythonディストリビューションの現在の標準は、[X82X] 拡張子の付いた wheel 形式です。 ホイールライブラリが最初にインストールされていることを確認してください。
pip install wheel
Pythonでsetup.py
を実行すると、ビルド関連のコマンドを発行するためのコマンドラインツールが提供されます。 bdist_wheel
コマンドは、ホイール配布ファイルを作成します。
python setup.py bdist_wheel
このファイルはdist/flaskr-1.0.0-py3-none-any.whl
にあります。 ファイル名は、プロジェクトの名前、バージョン、およびファイルに関するいくつかのタグをインストールできます。
このファイルを別のマシンにコピーし、新しいvirtualenv をセットアップしてから、pip
でファイルをインストールします。
pip install flaskr-1.0.0-py3-none-any.whl
Pipは、依存関係とともにプロジェクトをインストールします。
これは別のマシンであるため、init-db
を再度実行して、インスタンスフォルダーにデータベースを作成する必要があります。
export FLASK_APP=flaskr
flask init-db
Flaskがインストールされていることを検出すると(編集可能モードではない)、インスタンスフォルダーに別のディレクトリを使用します。 代わりにvenv/var/flaskr-instance
で見つけることができます。
秘密鍵を構成する
チュートリアルの冒頭で、 SECRET_KEY のデフォルト値を指定しました。 これは、本番環境ではランダムなバイトに変更する必要があります。 そうしないと、攻撃者は公開'dev'
キーを使用して、セッションCookie、または秘密キーを使用するその他のものを変更する可能性があります。
次のコマンドを使用して、ランダムな秘密鍵を出力できます。
python -c 'import os; print(os.urandom(16))'
b'_5#y2L"F4Q8z\n\xec]/'
インスタンスフォルダにconfig.py
ファイルを作成します。このファイルは、ファクトリが存在する場合に読み取ります。 生成された値をそこにコピーします。
SECRET_KEY = b'_5#y2L"F4Q8z\n\xec]/'
ここで他の必要な構成を設定することもできますが、Flaskrに必要なのはSECRET_KEY
だけです。
本番サーバーで実行
開発ではなくパブリックで実行する場合は、組み込みの開発サーバー(flask run
)を使用しないでください。 開発サーバーは便宜上Werkzeugによって提供されていますが、特に効率的、安定的、または安全になるようには設計されていません。
代わりに、本番WSGIサーバーを使用してください。 たとえば、ウェイトレスを使用するには、最初に仮想環境にインストールします。
pip install waitress
アプリケーションについてウェイトレスに伝える必要がありますが、flask run
のようにFLASK_APP
を使用しません。 アプリケーションファクトリをインポートして呼び出すように指示して、アプリケーションオブジェクトを取得する必要があります。
waitress-serve --call 'flaskr:create_app'
Serving on http://0.0.0.0:8080
アプリケーションをホストするさまざまな方法のリストについては、デプロイメントオプションを参照してください。 ウェイトレスは単なる例であり、WindowsとLinuxの両方をサポートしているため、チュートリアルに選択されています。 プロジェクトに選択できるWSGIサーバーと展開オプションは他にもたくさんあります。
開発を続けてください!に進んでください。