練習 - 在 Azure App Service 上部署 PHP 和 MySQL - 彈性伺服器應用程式

已完成

在此單元中,您會建置樣本 PHP 應用程式並將其部署至 Azure App Service,並將其與後端上「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」整合。

步驟 1 - 建立適用於 MySQL 的 Azure 資料庫彈性伺服器

首先,您會佈建具有公用存取連線能力的 MySQL 彈性伺服器,再將防火牆規則設定為允許應用程式存取伺服器,並建立生產資料庫。

您會使用 Azure 入口網站來逐步解說 MySQL 彈性伺服器建立體驗。

  1. 使用啟用沙箱時所用的相同帳戶來登入 Azure 入口網站

  2. 在頁面頂端的搜尋方塊中,輸入 [MySQL],然後選取 [適用於 MySQL 的 Azure 資料庫彈性伺服器]

    入口網站頂端搜尋列的螢幕擷取畫面,其中顯示搜尋 mysql 的結果。

  3. 在 [適用於 MySQL 的 Azure 資料庫彈性伺服器] 頁面上,選取 [+ 建立],然後選取 [彈性伺服器]

    展開 [建立] 功能表的螢幕擷取畫面,其中反白顯示了彈性伺服器功能表項目。

  4. 在 [彈性伺服器] 頁面的 [基本] 索引標籤上,輸入下表中的資訊。

    設定 建議的值
    訂用帳戶 指引訂用帳戶
    資源群組 從下拉式清單中,選取開頭為 learn- 的資源群組
    伺服器名稱 輸入可識別彈性伺服器的全域唯一名稱。
    MySQL 版本 8.0
    工作負載類型 選取 [用於開發或興趣專案]
    管理員使用者名稱 輸入 mysqladmin。 請勿使用 azure_superuser、admin、administrator、root、guest 或 public。
    密碼 輸入 Passw0rd123。 密碼必須包含介於 8 到 128 個字元之間,且包含來自三個類別的字元:英文大寫字母、英文小寫字母、數字 (0 到 9) 和非英數字元 (例如 !、$、#、%)。

    對於所有其他設定,請保持預設值。

  5. 在 [基本] 索引標籤上的 [計算 + 儲存體] 底下,選取 [設定伺服器]

  6. 在 [計算 + 儲存體] 頁面上,設定下列設定:

    • 計算
      • 選取 [可高載] 計算層。
      • 從 [計算大小] 下拉式清單中,選取 [Standard_B1s (1 個 V 核心、1 GiB 記憶體、400 個最大 iops)]
    • Storage
      • 確認 [儲存體大小 (以 GB 為單位)] 設定為 20
      • 選取 [預先佈建的 IOPS] 並讓值設為 360
      • 確認已選取 [儲存體自動成長] 核取方塊。
    • 高可用性
      • 確認未選取 [啟用高可用性] 核取方塊。
    • 備份
      • 確認 [備份保留期間 (天)] 設為 7
      • 確認未選取 [從區域中斷或災害復原] 核取方塊。
  7. 選取 [儲存],然後瀏覽至 [網路] 索引標籤。

    顯示彈性伺服器建立窗格的螢幕擷取畫面,其中 [網路] 索引標籤周圍有紅色方塊。

  8. 在 [網路] 索引標籤中,選取 [公用存取 (允許的 IP 位址)] 連線方法、核取 [允許使用公用 IP 位址透過網際網路公用存取此資源],並核取 [允許來自 Azure 內的任何 Azure 服務可公用存取此伺服器],如下列螢幕擷取畫面所示。

  9. 選取 [檢閱 + 建立],以檢閱 MySQL 彈性伺服器設定。

  10. 選取 [建立] 以佈建伺服器。 佈建最多可能需要 10 分鐘。

  11. 部署完成後,選取 [移至資源],以檢視適用於 MySQL 的 Azure 資料庫彈性伺服器的 [概觀] 頁面。

在本練習的其餘部分中,您會使用顯示在此視窗右側的 Azure Cloud Shell 來執行命令。

若要建立新的 MySQL 生產資料庫 sampledb 以搭配 PHP 應用程式使用,請執行下列命令:

az mysql flexible-server db create \
--resource-group <rgn>[Sandbox resource group name]</rgn> \
--server-name <your-mysql-server-name> \
--database-name sampledb

步驟 2 - 複製您的應用程式

您會在本練習使用顯示和管理產品目錄的範例 PHP 應用程式。 該應用程式提供基本功能,例如檢視目錄中的產品、新增產品、更新現有項目價格,以及移除產品。

我們會直接複製編碼的應用程式,並了解如何在 Azure App Service 上部署該應用程式。

注意

若要深入了解應用程式程序代碼,請繼續在 GitHub 存放庫中探索該應用程式!

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

    git clone https://github.com/Azure-Samples/php-mysql-app-service.git
    cd php-mysql-app-service
    
  2. 執行下列命令以確保預設分支為 main

    git branch -m main
    

步驟 3 - 建立和設定 Azure App Service 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-learn \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --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 存放庫部署您的應用程式,請執行下列命令。

    注意:使用全域唯一的應用程式名稱 (有效字元為 a-z、0-9 和 -) 取代 <your-app-name>

    az webapp create \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --plan plan-learn \
    --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. 範例 PHP 應用程式中的 config.php 檔案會使用 getenv() 函數,從環境變數擷取資料庫連線資訊 (伺服器名稱、資料庫名稱、伺服器使用者名稱和密碼)。 在 App Service 中,若要將環境變數設為應用程式設定 (appsettings),請執行下列命令:

    az webapp config appsettings set \
    --name <your-app-name> \
    --resource-group <rgn>[Sandbox resource group name]</rgn> \
    --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"
    

    上面的命令會在 Web 應用程式中設定 MySQL 彈性伺服器資料庫連結設定。

步驟 4 - 使用本機 Git 部署您的應用程式

現在,您可以使用 [本機 Git 部署] 選項,將範例 PHP 應用程式部署至 Azure App Service。

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

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

  3. 若要將 Azure 遠端新增至本地 Git 存放庫,請執行下列命令。

    注意:將您在建立 App Service Web 應用程式步驟中儲存的 Git 遠端 URL 取代 <deploymentLocalGitUrl>

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

    git push azure main
    

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

步驟 5 - 測試您的應用程式

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

網頁瀏覽器中顯示的已部署 Web 應用程式的螢幕擷取畫面。

恭喜! 您已成功將樣本 PHP 應用程式部署至 Azure App Service,並將其與後端上「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」整合。