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