Tutorial: Verbinden einer App Services-Web-App mit einem flexiblen Server von Azure Database for MySQL in einem virtuellen Netzwerk
In diesem Tutorial erfahren Sie, wie Sie eine Azure App Service-Web-App erstellen und mit einer Instanz von Azure Database for MySQL – Flexibler Server verbinden, die im gleichen oder in einem anderen virtuellen Netzwerk isoliert ist.
In diesem Lernprogramm lernen Sie Folgendes:
- Erstellen einer Instanz von Azure Database for MySQL – Flexibler Server in einem virtuellen Netzwerk
- Erstellen eines Subnetzes zum Delegieren an App Service und Erstellen einer Web-App
- Hinzufügen der Web-App zum virtuellen Netzwerk
- Herstellen einer Verbindung mit Azure Database for MySQL – Flexibler Server über die Web-App
- Herstellen einer Verbindung zwischen einer Web-App und einer Instanz von Azure Database for MySQL – Flexibler Server, die in verschiedenen VNets isoliert sind
Voraussetzungen
Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen. Mit einem kostenlosen Azure-Konto können Sie Azure Database for MySQL – Flexibler Server derzeit 12 Monate lang kostenlos testen. Weitere Informationen finden Sie unter Verwenden eines kostenlosen Azure-Kontos, um Azure Database for MySQL – Flexible Server kostenlos zu testen.
Für den Artikel müssen Sie mindestens Version 2.0 der Azure-Befehlszeilenschnittstelle lokal ausführen. Führen Sie den Befehl az --version
aus, um die installierte Version anzuzeigen. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Sie müssen sich mithilfe des Befehls az login bei Ihrem Konto anmelden. Beachten Sie die Eigenschaft id aus der Befehlsausgabe für den entsprechenden Abonnementnamen.
az login
Wenn Sie über mehrere Abonnements verfügen, wählen Sie das entsprechende Abonnement aus, in dem die Ressource fakturiert sein sollte. Wählen Sie mithilfe des Befehls az account set die Abonnement-ID unter Ihrem Konto aus. Ersetzen Sie den Platzhalter für die Abonnement-ID durch die subscription ID-Eigenschaft der Ausgabe von az login für Ihr Abonnement.
az account set --subscription <subscription ID>
Erstellen einer Azure Database for MySQL Flexible Server-Instanz
Führen Sie den folgenden Befehl aus, um eine private Instanz von Azure Database for MySQL – Flexibler Server in einem virtuellen Netzwerk (VNet) zu erstellen:
az mysql flexible-server create --resource-group myresourcegroup --location westus2 --vnet VNETName
Kopieren Sie die Verbindungszeichenfolge und den Namen des neu erstellten virtuellen Netzwerks. Durch diesen Befehl werden folgende Aktionen ausgeführt, was einige Minuten dauern kann:
- Erstellen Sie die Ressourcengruppe, wenn sie noch nicht vorhanden ist.
- Generiert einen Servernamen, wenn er nicht angegeben ist.
- Erstellt ein neues virtuelles Netzwerk (
VNETName
) für Ihre neue Instanz von Azure Database for MySQL – Flexibler Server sowie innerhalb dieses virtuellen Netzwerks ein Subnetz für die Instanz von Azure Database for MySQL – Flexibler Server. Stellen Sie sicher, dass der Name eindeutig ist - Erstellt einen Administratorbenutzernamen und ein Kennwort für Ihren Server, sofern nicht angegeben.
- Erstellt eine leere Datenbank mit dem Namen flexibleserverdb.
Hinweis
Notieren Sie sich das Kennwort, das für Sie generiert wird, falls Sie keines angegeben haben. Wenn Sie das Kennwort vergessen, müssen Sie es mit dem Befehl az mysql flexible-server update
zurücksetzen.
Erstellen eines Subnetzes für den App Service-Endpunkt
Sie benötigen nun ein Subnetz, das an den Endpunkt der App Service-Web-App delegiert wird. Führen Sie den folgenden Befehl aus, um ein neues Subnetz im gleichen virtuellen Netzwerk zu erstellen, in dem auch die Instanz von Azure Database for MySQL – Flexibler Server erstellt wurde.
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
Notieren Sie sich nach diesem Befehl den Namen des virtuellen Netzwerks und des Subnetzes, da Sie diese nach der Erstellung der Web-App zum Hinzufügen einer VNet-Integrationsregel benötigen.
Erstellen einer Web-App
In diesem Abschnitt erstellen Sie einen App-Host in der App Service-App und verbinden die App mit der Datenbank von Azure Database for MySQL – Flexibler Server. Vergewissern Sie sich im Terminal, dass Sie sich im Repositorystamm Ihres Anwendungscodes befinden.
Führen Sie den Befehl „az webapp up“ aus, um eine App Service-App (den Hostprozess) zu erstellen:
az webapp up --resource-group myresourcegroup --location westus2 --plan testappserviceplan --sku P2V2 --name mywebapp
Hinweis
- Verwenden Sie für das Argument „--location“ den gleichen Standort wie für die Datenbank im vorherigen Abschnitt.
- Ersetzen Sie <app-name> durch einen Namen, der in Azure eindeutig ist. (Der Serverendpunkt ist
https://\<app-name>.azurewebsites.net
). Gültige Zeichen für <app-name> sind A-Z, 0-9 und der Bindestrich (-). Ein bewährtes Muster ist eine Kombination aus Ihrem Firmennamen und einer App-ID. - Im Basic-Tarif von App Service wird die VNet-Integration nicht unterstützt. Verwenden Sie den Standard- oder Premium-Tarif.
Durch diesen Befehl werden folgende Aktionen ausgeführt, was einige Minuten dauern kann:
- Erstellen einer Ressourcengruppe (sofern noch nicht vorhanden). Verwenden Sie in diesem Befehl die gleiche Ressourcengruppe, in der Sie zuvor schon die Datenbank erstellt haben.
- Erstellen Sie den App Service-Plan
testappserviceplan
im Basic-Tarif (B1), falls er nicht vorhanden ist. „--plan“ und „--sku“ sind optional. - Erstellen der App Service-App (sofern noch nicht vorhanden)
- Aktivieren der Standardprotokollierung für die App (sofern noch nicht aktiviert)
- Hochladen des Repositorys per ZIP-Bereitstellung mit aktivierter Buildautomatisierung
Hinzufügen der Web-App zum virtuellen Netzwerk
Verwenden Sie den az webapp vnet-integration-Befehl, um eine regionale Integration eines virtuellen Netzwerks einer Web-App hinzuzufügen. Ersetzen Sie <vnet-name> und <subnet-name durch den Namen des virtuellen Netzwerks bzw. des Subnetzes, das die Instanz von Azure Database for MySQL – Flexibler Server verwendet.
az webapp vnet-integration add -g myresourcegroup -n mywebapp --vnet VNETName --subnet webappsubnetName
Konfigurieren der Umgebungsvariablen für die Datenbankverbindung
Nachdem der Code nun in App Service bereitgestellt ist, müssen Sie als Nächstes eine Verbindung zwischen der App und der Instanz von Azure Database for MySQL – Flexibler Server herstellen. Vom App-Code werden Datenbankinformationen in einer Reihe von Umgebungsvariablen erwartet. Erstellen Sie mithilfe des Befehls az webapp config appsettings set
„App-Einstellungen“, um Umgebungsvariablen in App Service festzulegen.
az webapp config appsettings set --settings DBHOST="<mysql-server-name>.mysql.database.azure.com" DBNAME="flexibleserverdb" DBUSER="<username>" DBPASS="<password>"
- Ersetzen Sie <mysql-server-name>, <username> und <password> für den neu erstellten Befehl für Azure Database for MySQL – Flexibler Server.
- Ersetzen Sie <username> und <password> durch die vom Befehl für Sie generierten Anmeldeinformationen.
- Die Ressourcengruppe und der Name der App werden aus den zwischengespeicherten Werten in der Datei .azure/config abgerufen.
- Der Befehl erstellt Einstellungen namens DBHOST, DBNAME, DBUSER und DBPASS. Wenn Ihr Anwendungscode einen anderen Namen für die Datenbankinformationen verwendet, verwenden Sie diese Namen für die App-Einstellungen, wie im Code erwähnt.
Konfigurieren Sie die Web-App so, dass alle ausgehenden Verbindungen, die vom virtuellen Netzwerk ausgehen, zugelassen werden.
az webapp config set --name mywebapp --resource-group myresourcesourcegroup --generic-configurations '{"vnetRouteAllEnabled": true}'
App Service-Web-App und Instanz von Azure Database for MySQL – Flexibler Server in verschiedenen virtuellen Netzwerken
Wenn Sie die App Service-App und die Instanz von Azure Database for MySQL – Flexibler Server in verschiedenen virtuellen Netzwerken (VNets) erstellt haben, müssen die beiden folgenden Schritte ausgeführt werden, um eine nahtlose Verbindung herzustellen:
- Verbinden der beiden VNets mit VNet-Peering (lokal oder global). Siehe Herstellen einer Verbindung zwischen virtuellen Netzwerken mittels Peering.
- Verknüpfen der privaten DNS-Zone der Instanz von Azure Database for MySQL – Flexibler Server mit dem VNet der Web-App mithilfe von Verknüpfungen mit virtuellen Netzwerken: Wenn Sie das Azure-Portal oder die Azure CLI verwenden, um die Instanzen von Azure Database for MySQL – Flexibler Server in einem virtuellen Netzwerk zu erstellen, wird automatisch eine neue private DNS-Zone in Ihrem Abonnement unter Verwendung des angegebenen Servernamens bereitgestellt. Navigieren Sie zur privaten DNS-Zone der Instanz von Azure Database for MySQL – Flexibler Server, und führen Sie die unter Verknüpfen der privaten DNS-Zone mit einem virtuellen Netzwerk beschriebenen Schritte aus, um eine Verbindung mit einem virtuellen Netzwerk einzurichten.
Bereinigen von Ressourcen
Bereinigen Sie alle im Tutorial erstellten Ressourcen mit dem folgenden Befehl. Mit diesem Befehl werden alle Ressourcen in dieser Ressourcengruppe gelöscht.
az group delete -n myresourcegroup