共用方式為


教學課程:將 App Services Web 應用程式連線到虛擬網路中適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

本教學課程說明如何建立和連線 Azure App 服務 Web 應用程式至隔離在相同或不同虛擬網路內的 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。

在本教學課程中,您將了解如何:

  • 在虛擬網路中建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例
  • 建立要委派給 App Service 的子網路並建立 Web 應用程式
  • 將 Web 應用程式新增至虛擬網路
  • 從 Web 應用程式連線到 適用於 MySQL 的 Azure 資料庫 彈性伺服器
  • 線上 Web 應用程式和 適用於 MySQL 的 Azure 資料庫 在不同 VNet 中隔離的彈性伺服器實例

必要條件

如果您沒有 Azure 訂用帳戶,請在開始之前建立 Azure 免費帳戶 。 目前,Azure 免費帳戶可讓您免費試用「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」12 個月。 如需詳細資訊,請參閱使用 Azure 免費帳戶免費試用 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

本文需要您以本機方式執行 Azure CLI 2.0 版或更新版本。 若要查看所安裝的版本,請執行 az --version 命令。 如果您需要安裝或升級,請參閱安裝 Azure CLI

您必須使用 az login 命令登入您的帳戶。 請記下命令輸出中的識別碼屬性,以取得對應的訂用帳戶名稱。

az login

如果您有多個訂用帳戶,請選擇資源計費的適當訂用帳戶。 使用 az account set 命令來選取您帳戶底下的特定訂用帳戶 ID。 以訂用帳戶之 az login 輸出中的訂用帳戶識別碼屬性,替代訂用帳戶識別碼的預留位置。

az account set --subscription <subscription ID>

建立適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體

使用下列指令在虛擬網路 (VNET) 內建立私人 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例:

az mysql flexible-server create --resource-group myresourcegroup --location westus2 --vnet VNETName

複製連接字串和新建立的虛擬網路名稱。 此命令會執行下列動作,這可能需要幾分鐘的時間:

  • 建立資源群組 (若尚不存在)。
  • 若未提供,系統會產生伺服器名稱。
  • 為 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例在此虛擬網路內的新 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例和子網建立新的VNETName虛擬網路。 請確定名稱是唯一的。
  • 建立伺服器的管理使用者名稱、密碼 (如果未提供)。
  • 建立名為 flexibleserverdb 的空白資料庫。

注意

記下您的密碼,若未提供,系統會為您產生密碼。 如果忘記密碼,您必須使用 az mysql flexible-server update 命令來重設密碼。

建立 App Service 端點的子網路

您現在需要已委派給 App Service Web 應用程式端點的子網路。 執行下列命令,在與建立彈性伺服器實例 適用於 MySQL 的 Azure 資料庫 相同的虛擬網路中建立新的子網。

az network vnet subnet create -g myresourcegroup --vnet-name VNETName --name webappsubnetName  --address-prefixes 10.0.1.0/24  --delegations Microsoft.Web/serverFarms --service-endpoints Microsoft.Web

記下此命令之後的虛擬網路名稱和子網路名稱,如同在建立 Web 應用程式之後新增 Web 應用程式的 VNET 整合規則所需。

建立 Web 應用程式

在本節中,您會在 App Service 應用程式中建立應用程式主機,並將此應用程式連線到 適用於 MySQL 的 Azure 資料庫 彈性伺服器資料庫。 確定您位於終端中包含應用程式程式碼的儲存機制根路徑。

使用 az webapp up 命令建立 App Service 應用程式 (主機處理序)。

az webapp up --resource-group myresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp

注意

  • 針對 --location 引數,使用與您在上一節針對資料庫所做的相同位置。
  • 使用所有 Azure 中的唯一名稱取代 <app-name> (伺服器端點為 https://\<app-name>.azurewebsites.net)。 <app-name> 的允許字元為 A-Z、0-9 和 -。 良好的模式是使用您的公司名稱和應用程式識別碼的組合。
  • App Service 基本層不支援 VNET 整合。 請使用標準或進階層。

此命令會執行下列動作,這可能需要幾分鐘的時間:

  • 建立資源群組 (若尚不存在)。 (在此命令中,您使用先前用來建立資料庫的相同資源群組)。
  • 如果不存在,請在基本定價層 (B1) 中建立 App Service 方案 testappserviceplan。 --plan 和 --sku 是選用引數。
  • 建立 App Service 應用程式 (如果不存在)。
  • 啟用應用程式的預設記錄 (如果尚未啟用)。
  • 使用已啟用建置自動化的 ZIP 部署來上傳存放庫。

將 Web 應用程式新增至虛擬網路

使用 az webapp vnet-integration 命令,將區域虛擬網路整合新增至 WebApp。 將 vnet-name><subnet-name 取代<為 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例所使用的虛擬網路和子網名稱。

az webapp vnet-integration add -g myresourcegroup -n  mywebapp --vnet VNETName --subnet webappsubnetName

設定環境變數以連線資料庫

現在將程式代碼部署至 App Service,下一個步驟是將應用程式連線至 Azure 中的 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例。 應用程式程式碼預期會在數個環境變數中尋找資料庫資訊。 若要在 App Service 中設定環境變數,您可以使用 az webapp config appsettings set 命令來建立「應用程式設定」。

az webapp config appsettings set --settings DBHOST="<mysql-server-name>.mysql.database.azure.com" DBNAME="flexibleserverdb" DBUSER="<username>" DBPASS="<password>"
  • 為新建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器命令取代 mysql-server-name>、<username> 和< password。<>
  • 使用此命令也會以為您產生的認證來取代 <username><password>
  • 資源群組和應用程式名稱均提取自 .azure/config 檔案中的快取值。
  • 此命令會建立名為 DBHOST、DBNAME、DBUSER 和 DBPASS 的設定。 如果您的應用程式程式碼針對資料庫資訊使用不同的名稱,則請使用這些名稱作為程式碼中提到的應用程式設定。

設定 Web 應用程式以允許虛擬網路中的所有輸出連線。

az webapp config set --name mywebapp --resource-group myresourcesourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'

不同虛擬網路中的 App Service Web 應用程式和 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例

如果您已在不同的虛擬網路中建立 App Service 應用程式和 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例,您必須執行下列兩個步驟來建立無縫連線:

  • 使用 VNet 對等互連來連線兩個 VNet (本機或全域)。 請參閱使用虛擬網路對等互連連線到虛擬網路指南。
  • 使用虛擬網路連結,將 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例 私用 DNS 區域連結至 Web 應用程式的 VNet。 如果您使用 Azure 入口網站 或 Azure CLI 在 VNet 中建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例,則會使用所提供的伺服器名稱,在您的訂用帳戶中自動布建新的私人 DNS 區域。 流覽至 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例的私人 DNS 區域,並遵循如何將私人 DNS 區域連結至虛擬網路指南,以設定虛擬網路連結。

清除資源

使用下列命令清除您在教學課程中建立的所有資源。 此命會刪除此資源群組內的所有資源。

az group delete -n myresourcegroup

後續步驟