教學課程 - 在 Azure App Service 上部署 PHP 以及適用於 MySQL 的 Azure 資料庫 - 彈性伺服器
Azure App Service 使用 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 個月。 如需詳細資訊,請參閱使用 Azure 免費帳戶免費試用 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。
必要條件
- 安裝 Git。
- Azure 命令列介面 (CLI)。
- Azure 訂閱 - 如果您沒有 Azure 訂閱,請在開始前建立 Azure 免費帳戶。 目前,Azure 免費帳戶可讓您免費試用「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」12 個月。 如需詳細資訊,請參閱使用 Azure 免費帳戶免費試用 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。
建立適用於 MySQL 的 Azure 資料庫 - 彈性伺服器
首先,使用公用存取連線布建 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例、設定防火牆規則以允許應用程式存取伺服器,以及建立生產資料庫。
若要瞭解如何改用私人存取連線,並隔離虛擬網路中的應用程式和資料庫資源,請參閱教學課程:將 App Services Web 應用程式連線到虛擬網路中的 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。
建立資源群組
Azure 資源群組是部署及管理 Azure 資源所在的邏輯群組。 我們將使用 az group create 命令,在 centralus 位置建立資源群組 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 資料庫 彈性伺服器,請參閱搭配 適用於 MySQL 的 Azure 資料庫 使用 PHP - 彈性伺服器。
在本教學課程中,我們會直接複製已撰寫程式碼的應用程式範例,並了解如何在 Azure App Service 上部署該應用程式。
若要複製範例應用程式存放庫,並變更至儲存機制根路徑,請執行下列命令:
git clone https://github.com/Azure-Samples/php-mysql-app-service.git cd php-mysql-app-service
執行下列命令以確保預設分支為
main
。git branch -m main
建立和設定 Azure App Service 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"
或者,您可以使用服務連接器,建立 App Service 應用程式與適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體之間的連線。 如需詳細資訊,請參閱使用服務連接器,整合適用於 MySQL 的 Azure 資料庫彈性伺服器。
使用本機 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