準備應用程式以進行部署
更新一些最常見的設定,以設定生產的應用程式。
新增程式庫
您將在專案中使用兩個新的程式庫:
whitenoise
以提供靜態檔案psycopg2-binary
以連線至作為生產資料庫的 PostgreSQL
在專案中安裝這些程式庫:
在 Visual Studio Code 中,開啟 requirements.txt。
在 requirements.txt 的結尾處新增下列程式碼。
whitenoise psycopg2-binary
選取 [終端機]>[新終端機],以開啟新的終端機窗格。
執行下列命令以安裝程式庫。
pip install -r requirements.txt
建立生產設定檔案
您指派給兩個核心設定的值為 ALLOWED_HOSTS
和 DATABASES
,該值取決於裝載應用程式的環境。 預設設定是專為開發設計。 為在生產中執行應用程式,請確認這些設定已正確更新。
ALLOWED_HOSTS
控制允許託管或執行應用程式的伺服器。 您將設定其允許從 Azure 和本機執行網站。 DATABASES
包含可用連接字串的清單。
設定這些設定的常見方式,為建立包含用於生產的設定集合的第二個 Python 檔案。 然後 ,settings.py 結尾的檢查會判斷是否要使用生產設定。
現在您要建立生產設定檔案,並新增檢查以判斷您的應用程式是否正在生產環境中執行:
在 [專案] 內建立新的檔案。 將其命名為 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 []
注意
Azure App Service 會自動建立名為
WEBSITE_HOSTNAME
的環境變數。 此變數包含您網站的 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'] } }
注意
您將在稍後步驟中設定 Azure 上的環境變數。
注意
資料庫連線適用於 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
來儲存靜態檔案。透過新增下列程式碼,使用來自環境變數的讀取內容來設定
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 應用程式。