デプロイ向けにアプリケーションを準備する
最も一般的な設定の一部を更新して、アプリケーションを運用環境用に設定します。
ライブラリの追加
プロジェクトに 2 つの新しいライブラリを使用します。
- 静的ファイルを提供する
whitenoise
- PostgreSQL (運用データベース) に接続する
psycopg2-binary
これらのライブラリをプロジェクトにインストールします。
Visual Studio Code で requirements.txt を開きます。
requirements.txt の最後に次のコードを追加します。
whitenoise psycopg2-binary
[ターミナル]>[新しいターミナル]を選択して、新しい [ターミナル] ウィンドウを開きます。
次のコマンドを実行してライブラリをインストールします。
pip install -r requirements.txt
運用設定ファイルを作成する
2 つのコア設定 ALLOWED_HOSTS
と DATABASES
に割り当てる値は、アプリケーションをホストする環境によって異なります。 既定の設定は、開発用に設計されています。 運用環境でアプリを実行するには、これらの設定が正しく更新されていることを確認します。
ALLOWED_HOSTS
では、アプリケーションのホストまたは実行が許可されているサーバーを制御します。 サイトを Azure からローカルで実行できるように構成します。 DATABASES
には使用できる接続文字列の一覧が含まれています。
設定を構成する一般的な方法は、運用環境の設定のコレクションを含む 2 つ目の Python ファイルを作成することです。 その後、settings.py の最後にあるチェックにより、運用設定を使用するかどうかが判断されます。
次に、運用設定ファイルを作成し、アプリケーションが運用環境で実行されているかどうかを判断するチェックを追加します。
project 内に新しいファイルを作成します。 これに azure.py という名前を付けます。
次のコードを追加して
os
をインポートします。from .settings import * import os
次のコードをファイルの末尾に追加して
ALLOWED_HOSTS
をオーバーライドし、Azure がアプリケーションをホストし、信頼元を定義できるようにします。ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else [] CSRF_TRUSTED_ORIGINS = ['https://'+ os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
Note
Azure App Service によって、
WEBSITE_HOSTNAME
という名前の環境変数が自動的に作成されます。 この変数には、Web サイトの URL が含まれています。 この変数を使用すると、アプリケーションが Azure で実行されているかどうかを判断できます。次のコードを追加して、PostgreSQL のデータベース接続文字列を構成します。
hostname = os.environ['DBHOST'] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': os.environ['DBNAME'], 'HOST': hostname + ".postgres.database.azure.com", 'USER': os.environ['DBUSER'], 'PASSWORD': os.environ['DBPASS'] } }
Note
後の手順で、Azure で環境変数を設定します。
Note
データベース接続は PostgreSQL フレキシブル サーバー用です。 PostgreSQL 単一サーバーの場合は、
USER
値をos.environ['DBUSER'] + "@" + hostname
に設定してください。使用している接続文字列は PostgreSQL 用です。 次の情報を指定します。
- ENGINE: データベースの種類
- NAME: データベースの名前
- HOST: サーバーの URL
- USER: データベースへの接続に使用するユーザー名
- PASSWORD: ユーザーのパスワード
ファイルの末尾に次のコードを追加して
whitenoise
を有効にします。これにより、静的ファイルが提供されます。MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', # Enables whitenoise for serving static files 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
WhiteNoise は、CSS や JavaScript などの静的ファイルに対するユーザー要求を読み取るミドルウェアです。 また、ファイルが正しく提供されていることを確認します。
MIDDLEWARE
配列を更新してミドルウェアを登録しました。 静的ファイルを格納するためにSTATIC_ROOT
を登録しました。次のコードを追加して、環境変数からの 1 つの読み取りで
SECRET_KEY
を設定します。SECRET_KEY = os.getenv('SECRET_KEY')
アプリケーションをデプロイしてアプリケーション設定として保存した後で、新しい秘密鍵を作成します。
次のコードを追加して、デバッグ モードを無効にします。
DEBUG = False
運用設定ファイルを使用するようにアプリを構成する
これで、運用設定ファイルが作成されたので、アプリケーションを更新して運用環境でファイルを読み込むことができます。 WEBSITE_HOSTNAME
環境変数を探すことから始めます。 この変数は、アプリケーションが Azure で実行されていることを示します。
settings.py を開きます。
次のコードをファイルの末尾に追加して、アプリが運用環境で実行されるときに必要な設定をオーバーライドします。
import os if 'WEBSITE_HOSTNAME' in os.environ: # Running on Azure from .azure import *
[ファイル]>[すべて保存] を選択して、すべてのファイルを保存します。
これで、運用環境用に Django アプリケーションを構成できました。