Share via


教學課程:在 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

  1. 開啟命令提示字元。
  2. 登入您的 Azure 帳戶。
    az login
    
  3. 選擇 Azure 訂用帳戶。
    az account set -s <your-subscription-ID>
    
  4. 建立資源群組。
    az group create --name rg-php-demo --location centralus
    

建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例

  1. 若要建立具有公用存取連線能力 適用於 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 天的備份保留期間,以及使用公用存取連線進行設定。

  2. 接下來,若要為 適用於 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
    
  3. 若要建立新的 適用於 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 服務 上部署。

  1. 若要複製範例應用程式存放庫,並變更至儲存機制根路徑,請執行下列命令:

    git clone https://github.com/Azure-Samples/php-mysql-app-service.git
    cd php-mysql-app-service
    
  2. 執行下列命令以確保預設分支為 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 應用程式,以裝載範例應用程式。

  1. 若要使用免費定價層來建立 App Service 方案,請執行下列命令:

    az appservice plan create --name plan-php-demo \
    --resource-group rg-php-demo \
    --location centralus \
    --sku FREE --is-linux
    
  2. 如果您想要使用 FTP 或本地 Git 等部署方法,將應用程式部署至 Azure Web 應用程式,您必須利用使用者名稱和密碼認證來設定部署使用者。 設定部署使用者之後,即可對所有 Azure App Service 部署使用該設定。

    az webapp deployment user set \
    --user-name <your-deployment-username> \
    --password <your-deployment-password>
    
  3. 若要使用 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,稍後您將會用到此資訊。

  4. 接下來,我們將在 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。

  1. 由於您要部署主分支,因此您必須將 App Service 應用程式的預設部署分支設定為主要。 若要在應用程式設定下設定 DEPLOYMENT_BRANCH,請執行下列命令:

    az webapp config appsettings set \
    --name <your-app-name> \
    --resource-group rg-php-demo \
    --settings DEPLOYMENT_BRANCH='main'
    
  2. 確認您位於應用程式存放庫的根目錄中。

  3. 若要將 Azure 遠端新增至本地 Git 存放庫,請執行下列命令。 將取代<deploymentLocalGitUrl>為您儲存在建立 App Service Web 應用程式步驟中之 Git 遠端的 URL。

    git remote add azure <deploymentLocalGitUrl>
    
  4. 若要藉由執行 git push 將應用程式部署至 Azure 遠端,請執行下列命令。 當 Git 認證管理員提示您輸入認證時,請輸入您在設定部署使用者步驟中所建立的部署認證。

    git push azure main
    

部署需要幾分鐘才能完成。

測試您的應用程式

最後,瀏覽至 https://<app-name>.azurewebsites.net 來測試應用程式,然後從產品類別目錄新增、檢視、更新或刪除項目。

Screenshot showing the sample Product Catalog PHP Web App.

恭喜! 您已成功部署範例 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

下一步