教學課程:在 Azure App 服務 上部署 PHP 和 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器應用程式
適用於:適用於 MySQL 的 Azure 資料庫 - 彈性伺服器
Azure App 服務 使用 Linux 作業系統提供可高度調整、自我修補的 Web 裝載服務。
本教學課程示範如何建置和部署範例 PHP 應用程式以 Azure App 服務,並將其與後端 適用於 MySQL 的 Azure 資料庫 彈性伺服器整合。 在這裡,您將使用 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例中的公用存取連線能力(允許的IP位址)來連線到App Service 應用程式。
在本教學課程中,您將了解如何:
- 建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例
- 將 PHP 應用程式 連線 至 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例
- 將應用程式部署至 Azure App Service
- 更新並重新部署應用程式
如果您沒有 Azure 訂用帳戶,請在開始之前建立 Azure 免費帳戶 。 目前,使用 Azure 免費帳戶,您可以試用 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器免費 12 個月。 如需詳細資訊,請參閱免費試用 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。
必要條件
- 安裝 Git。
- Azure 命令列介面 (CLI)。
- Azure 訂用帳戶 如果您沒有 Azure 訂用帳戶,請在開始之前建立 Azure 免費帳戶 。 目前,使用 Azure 免費帳戶,您可以試用 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器免費 12 個月。 如需詳細資訊,請參閱免費試用 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。
建立 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器
首先,我們將佈建具有公用存取連線能力 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例、設定防火牆規則以允許應用程式存取伺服器,以及建立生產資料庫。
若要瞭解如何改用私人存取連線,並隔離虛擬網路中的應用程式和資料庫資源,請參閱教學課程:將 App Services Web 應用程式 連線 虛擬網路中的 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。
建立資源群組
Azure 資源群組是部署及管理 Azure 資源所在的邏輯群組。 讓我們使用centralus位置中的 az group create 命令,建立資源群組 rg-php-demo。
- 開啟命令提示字元。
- 登入您的 Azure 帳戶。
az login
- 選擇 Azure 訂用帳戶。
az account set -s <your-subscription-ID>
- 建立資源群組。
az group create --name rg-php-demo --location centralus
建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例
若要建立具有公用存取連線能力 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例,請執行下列 az flexible-server create 命令。 取代伺服器名稱、系統管理員使用者名稱和密碼的值。
az mysql flexible-server create \ --name <your-mysql-server-name> \ --resource-group rg-php-demo \ --location centralus \ --admin-user <your-mysql-admin-username> \ --admin-password <your-mysql-admin-password>
您現在已在 CentralUS 區域中建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。 伺服器是以高載 B1MS 計算 SKU 為基礎,具有 32 GB 記憶體、7 天的備份保留期間,以及使用公用存取連線進行設定。
接下來,若要為 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例建立防火牆規則,以允許用戶端連線,請執行下列命令。 當啟動IP和結束IP都設定為0.0.0.0.0時,只有其他 Azure 資源(例如 App Services 應用程式、VM、AKS 叢集等)可以連線到 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。
az mysql flexible-server firewall-rule create \ --name <your-mysql-server-name> \ --resource-group rg-php-demo \ --rule-name AllowAzureIPs \ --start-ip-address 0.0.0.0 \ --end-ip-address 0.0.0.0
若要建立新的 適用於 MySQL 的 Azure 資料庫 彈性伺服器生產資料庫 sampledb 以搭配 PHP 應用程式使用,請執行下列命令:
az mysql flexible-server db create \ --resource-group rg-php-demo \ --server-name <your-mysql-server-name> \ --database-name sampledb
建置您的 應用程式
針對本教學課程的目的,我們將使用顯示和管理產品目錄的 PHP 應用程式範例。 應用程式提供基本功能,例如檢視目錄中的產品、新增產品、更新現有項目價格,以及移除產品。
若要深入瞭解應用程式程式代碼,請繼續探索 GitHub 存放 庫中的應用程式。 若要瞭解如何將 PHP 應用程式連線到 適用於 MySQL 的 Azure 資料庫 彈性伺服器,請參閱快速入門:使用 PHP 連線。
在本教學課程中,我們將直接複製自動程式化範例應用程式,並瞭解如何在 Azure App 服務 上部署。
若要複製範例應用程式存放庫,並變更至儲存機制根路徑,請執行下列命令:
git clone https://github.com/Azure-Samples/php-mysql-app-service.git cd php-mysql-app-service
執行下列命令以確保預設分支為
main
。git branch -m main
建立及設定 Azure App 服務 Web 應用程式
在 Azure App Service (Web Apps、API Apps 或 Mobile Apps) 中,應用程式一律會在 App Service 方案中執行。 App Service 方案會定義一組計算資源,供要執行的 Web 應用程式使用。 在此步驟中,我們將建立 Azure App Service 方案和其中的 App Service Web 應用程式,以裝載範例應用程式。
若要使用免費定價層來建立 App Service 方案,請執行下列命令:
az appservice plan create --name plan-php-demo \ --resource-group rg-php-demo \ --location centralus \ --sku FREE --is-linux
如果您想要使用 FTP 或本地 Git 等部署方法,將應用程式部署至 Azure Web 應用程式,您必須利用使用者名稱和密碼認證來設定部署使用者。 設定部署使用者之後,即可對所有 Azure App Service 部署使用該設定。
az webapp deployment user set \ --user-name <your-deployment-username> \ --password <your-deployment-password>
若要使用 PHP 8.0 執行階段建立 App Service Web 應用程式,並設定本地 Git 部署選項,以從本機電腦上的 Git 存放庫部署您的應用程式,請執行下列命令。 將 取代
<your-app-name>
為全域唯一的應用程式名稱(有效字元為 a-z、0-9 和 -)。az webapp create \ --resource-group rg-php-demo \ --plan plan-php-demo \ --name <your-app-name> \ --runtime "PHP|8.0" \ --deployment-local-git
重要
在 Azure CLI 輸出中,Git 遠端的 URL 會顯示在 deploymentLocalGitUrl 屬性中,格式為
https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git
。 儲存此 URL,稍後您將會用到此資訊。接下來,我們將在 Web 應用程式上設定 適用於 MySQL 的 Azure 資料庫 彈性伺服器資料庫連線設定。
範例 PHP 應用程式中的
config.php
檔案會使用getenv()
函數,從環境變數擷取資料庫連線資訊 (伺服器名稱、資料庫名稱、伺服器使用者名稱和密碼)。 在 App Service 中,若要將環境變數設為應用程式設定 (appsettings),請執行下列命令:az webapp config appsettings set \ --name <your-app-name> \ --resource-group rg-php-demo \ --settings DB_HOST="<your-server-name>.mysql.database.azure.com" \ DB_DATABASE="sampledb" \ DB_USERNAME="<your-mysql-admin-username>" \ DB_PASSWORD="<your-mysql-admin-password>" \ MYSQL_SSL="true"
或者,您可以使用 Service 連線 or 來建立 App Service 應用程式與 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例之間的連線。 如需詳細資訊,請參閱整合 適用於 MySQL 的 Azure 資料庫 彈性伺服器與服務 連線 or。
使用本機 Git 部署您的應用程式
現在,我們將使用 [本地 Git 部署] 選項,將範例 PHP 應用程式部署至 Azure App Service。
由於您要部署主分支,因此您必須將 App Service 應用程式的預設部署分支設定為主要。 若要在應用程式設定下設定 DEPLOYMENT_BRANCH,請執行下列命令:
az webapp config appsettings set \ --name <your-app-name> \ --resource-group rg-php-demo \ --settings DEPLOYMENT_BRANCH='main'
確認您位於應用程式存放庫的根目錄中。
若要將 Azure 遠端新增至本地 Git 存放庫,請執行下列命令。 將取代
<deploymentLocalGitUrl>
為您儲存在建立 App Service Web 應用程式步驟中之 Git 遠端的 URL。git remote add azure <deploymentLocalGitUrl>
若要藉由執行
git push
將應用程式部署至 Azure 遠端,請執行下列命令。 當 Git 認證管理員提示您輸入認證時,請輸入您在設定部署使用者步驟中所建立的部署認證。git push azure main
部署需要幾分鐘才能完成。
測試您的應用程式
最後,瀏覽至 https://<app-name>.azurewebsites.net
來測試應用程式,然後從產品類別目錄新增、檢視、更新或刪除項目。
恭喜! 您已成功部署範例 PHP 應用程式來 Azure App 服務,並與後端 適用於 MySQL 的 Azure 資料庫 彈性伺服器整合。
更新並重新部署應用程式
若要更新 Azure 應用程式,請進行必要的程式代碼變更、認可 Git 中的所有變更,然後將程式代碼變更推送至 Azure。
git add .
git commit -m "Update Azure app"
git push azure main
git push
完成後,流覽至或重新整理 Azure 應用程式以測試新功能。
清除資源
在本教學課程中,您已建立資源群組中的所有 Azure 資源。 如果您未來不需要這些資源,請在 Cloud Shell 中執行下列命令來刪除資源群組:
az group delete --name rg-php-demo