Share via


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

適用於:適用於 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 個月。 如需詳細資訊,請參閱免費試用 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。

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

您必須使用 az login 命令登入您的帳戶。 請記下對應訂用帳戶名稱之命令輸出中的 id 屬性。

az login

如果您有多個訂用帳戶,請選擇應該計費資源的適當訂用帳戶。 使用 az account set 命令,選取您的帳戶下的特定訂用帳戶標識碼。 將訂用帳戶的 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 應用程式之後需要它新增 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 中的應用程式名稱>取代<為唯一的名稱(伺服器端點為 https://\<app-name>.azurewebsites.net)。 應用程式名稱>允許的<字元為 A-Z、0-9 和 -。 良好的模式是使用公司名稱和應用程式識別碼的組合。
  • App Service 基本層不支援 VNET 整合。 請使用標準或 進階版。

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

  • 如果資源群組不存在,請建立資源群組。 (在此命令中,您會使用您稍早建立資料庫的相同資源群組。
  • 如果 App Service 方案不存在,請在基本定價層中建立 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。<>
  • 將使用者>名稱和<密碼>取代<為命令也為您產生的認證。
  • 資源群組和應用程式名稱是從 .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

下一步