在本快速入門中,您會將 Python Web 應用程式 (Django、Flask 或 FastAPI) 部署至 Azure App 服務。 Azure App 服務 是完全受控的 Web 裝載服務,支援裝載於 Linux 伺服器環境的 Python 應用程式。
若要完成本快速入門,您需要:
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- 本地安裝了 Python 3.14 或更高版本。
附註
本文包含使用 Azure App 服務 部署 Python Web 應用程式的最新指示。 Windows 上的 Python 已不再受到支援。
跳到結尾
您可以使用 Azure 開發人員 CLI 快速部署本教學課程中的範例應用程式,並查看它在 Azure 中執行。 只要在 Azure Cloud Shell 中執行下列命令,按照提示操作即可。
mkdir flask-quickstart
cd flask-quickstart
azd init --template https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
azd up
而且,若要刪除資源:
azd down
範例應用程式
您可以使用 Flask、Django 或 FastAPI 完成本快速入門。 我們會針對各個架構提供應用程式範例,協助您按照本快速入門的說明操作。 將應用程式範例下載或複製到本機工作站。
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
在本機執行應用程式:
前往應用程式資料夾:
cd msdocs-python-flask-webapp-quickstart建立應用程式的虛擬環境:
py -m venv .venv .venv\scripts\activate安裝相依性:
pip install -r requirements.txt執行應用程式:
flask run在網路瀏覽器中前往位於
http://localhost:5000的應用程式範例。
有問題嗎? 請告訴我們。
在 Azure 中建立 Web 應用程式
若要在 Azure 中裝載應用程式,您必須在 Azure 中建立 Azure App 服務 Web 應用程式。 您可利用 Azure CLI、VS Code、Azure Tools 延伸模組套件,或 Azure 入口網站來建立 Web 應用程式。
Azure CLI 命令可以在已安裝 Azure CLI 的電腦上執行。
建立 Azure 資源,然後用不同的 Azure CLI 指令部署你的應用程式。
如有必要,請使用 az login 登入 Azure。
az login
用一個全球唯一的名稱取代 <app-name> 。 建立資源群組和 App Service 計畫,然後使用 az webapp create 建立網頁應用程式。
az group create --name myResourceGroup --location eastus
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku P0v3 --is-linux
az webapp create --name <app-name> --resource-group myResourceGroup --plan myAppServicePlan --runtime "PYTHON:3.14"
az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
- 用參數
--runtime指定你的應用程式執行的 Python 版本。 這個範例使用 Python 3.14。 若要列出支援的 Python 執行環境,請使用az webapp list-runtimes --os-type linux --runtime python --output table. - 使用參數
--sku來定義 App Service 方案的大小(CPU 與記憶體)與成本。 這個範例使用 P0v3(Premium v3)服務方案,會在您的 Azure 訂閱中產生費用。 完整 App Service 方案清單請參閱 App Service 價格。 - 請替換
eastus成你偏好的地區。 若要列出可用的區域,請執行az account list-locations搭配--output table。 - 此設定會啟用
SCM_DO_BUILD_DURING_DEPLOYMENTOryx 建置,包括在您部署原始碼封存檔時安裝 requirements.txt 中列出的相依性。
建立一個包含應用程式檔案 (包括 requirements.txt) 的 ZIP 檔案,並將這些檔案置於 ZIP 封存的根目錄。 排除本地檔案如 .venv、 .git 和 .env。 有關平台特定的指示,請參閱使用 ZIP 檔案部署索引標籤中建立應用程式的 ZIP 檔案。接著使用 az webapp 部署來部署封存:
az webapp deploy --name <app-name> --resource-group myResourceGroup --src-path <zip-file-path> --type zip
部署可能需要幾分鐘。 瀏覽至 https://<app-name>.azurewebsites.net 以檢視您的應用程式。 要串流日誌,請先執行 az webapp log config --name <app-name> --resource-group myResourceGroup --docker-container-logging filesystem 以啟用日誌,然後執行 az webapp log tail --name <app-name> --resource-group myResourceGroup。
有問題嗎? 請告訴我們。
將應用程式程式碼部署至 Azure
Azure App 服務 支援多種將應用程式程式碼部署至 Azure 的方法,包括對 GitHub Actions 和所有主要的 CI/CD 工具。 本文著重於如何將程式碼從本機工作站部署到 Azure。
前一步的 Azure CLI 指令建立了資源並部署了你的應用程式。 你可以繼續下一步。
有問題嗎? 請先參閱疑難排解指南。 如果沒有幫助,請告訴我們。
設定啟動指令碼
App Service 會根據部署中存在的特定檔案,自動偵測應用程式是 Django 或 Flask 應用程式,然後執行預設步驟來執行您的應用程式。 對於基於其他網頁框架(如 FastAPI)的應用程式,你可能需要設定啟動腳本讓 App Service 執行應用程式。 否則,App Service 會執行一個預設唯讀應用程式,位於 opt/defaultsite 資料夾中。
- Python 3.14 及以後版本:App Service 會自動偵測並執行 FastAPI 應用程式。 不需要啟動指令。
- Python 3.13 及更早版本:你必須設定自訂啟動指令。
若要深入了解 App Service 如何執行 Python 應用程式,以及如何設定和自訂其搭配您應用程式的行為,請參閱設定適用於 Azure App 服務 的 Linux Python 應用程式 (部分機器翻譯)。
App Service 會自動偵測 Flask 應用程式是否存在。 此快速入門不需要其他設定。
瀏覽至應用程式
流覽至網頁瀏覽器中已部署的應用程式。 您可以從 Azure 入口網站追蹤連結。 移至 [ 概觀] 頁面,然後選取 [預設網域]。 如果您看到預設應用程式頁面,請等候一分鐘並重新整理瀏覽器。
Python 範例程式碼目前使用內建映像在 App Service 中執行 Linux 容器。
恭喜! 您已將 Python 應用程式部署至 App Service。
有問題嗎? 請先參閱疑難排解指南。 如果沒有幫助,請告訴我們。
串流記錄
Azure App 服務 會擷取所有輸出到主控台的訊息,以協助您診斷應用程式的問題。 以下應用程式範例中包含的 print() 陳述式可示範這項功能。
@app.route('/')
def index():
print('Request for index page received')
return render_template('index.html')
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),
'favicon.ico', mimetype='image/vnd.microsoft.icon')
@app.route('/hello', methods=['POST'])
def hello():
name = request.form.get('name')
if name:
print('Request for hello page received with name=%s' % name)
return render_template('hello.html', name = name)
else:
print('Request for hello page received with no name or blank name -- redirecting')
return redirect(url_for('index'))
您可以使用 Azure CLI、VS Code 或 Azure 入口網站來檢閱 App Service 診斷記錄的內容。
首先,您必須使用 az webapp log config 命令設定 Azure App 服務,以將記錄輸出至 App Service 檔案系統。
az webapp log config \
--web-server-logging filesystem \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
若要串流記錄,請使用 az webapp log tail (機器翻譯) 命令。
az webapp log tail \
--name $APP_SERVICE_NAME \
--resource-group $RESOURCE_GROUP_NAME
重新整理應用程式中的首頁,或嘗試其他要求以產生一些記錄訊息。 輸出應該會顯示如下。
Starting Live Log Stream ---
2021-12-23T02:15:52.740703322Z Request for index page received
2021-12-23T02:15:52.740740222Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET / HTTP/1.1" 200 1360 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.841043070Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:52.884541951Z 169.254.130.1 - - [23/Dec/2021:02:15:52 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 200 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:15:53.043211176Z 169.254.130.1 - - [23/Dec/2021:02:15:53 +0000] "GET /favicon.ico HTTP/1.1" 404 232 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.304306845Z Request for hello page received with name=David
2021-12-23T02:16:01.304335945Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "POST /hello HTTP/1.1" 200 695 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.398399251Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
2021-12-23T02:16:01.430740060Z 169.254.130.1 - - [23/Dec/2021:02:16:01 +0000] "GET /static/images/azure-icon.svg HTTP/1.1" 304 0 "https://msdocs-python-webapp-quickstart-123.azurewebsites.net/hello" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0"
有問題嗎? 請先參閱疑難排解指南。 如果沒有幫助,請告訴我們。
清除資源
當您完成範例應用程式時,您可以從 Azure 移除應用程式的所有資源。 移除資源群組可確保不會再產生額外費用,並有助於保持 Azure 訂用帳戶的整潔。 移除資源群組也會移除該資源群組中的所有資源,而且是移除應用程式所有 Azure 資源最快的方式。
使用 az group delete (機器翻譯) 命令刪除資源群組。
az group delete \
--name msdocs-python-webapp-quickstart \
--no-wait
--no-wait 引數可讓命令在作業完成之前傳回。
有問題嗎? 請告訴我們。