Samouczek: tworzenie wystąpienia usługi Azure Database for PostgreSQL — serwer elastyczny za pomocą usługi App Services Web App w sieci wirtualnej

DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny

W tym samouczku pokazano, jak utworzyć aplikację internetową usługi aplikacja systemu Azure Service za pomocą elastycznego serwera usługi Azure Database for PostgreSQL w sieci wirtualnej.

Ten samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Tworzenie wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL w sieci wirtualnej
  • Tworzenie aplikacji internetowej
  • Dodawanie aplikacji internetowej do sieci wirtualnej
  • Połączenie do serwera elastycznego usługi Azure Database for PostgreSQL z poziomu aplikacji internetowej

Wymagania wstępne

  • Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

  • Zainstaluj interfejs wiersza polecenia platformy Azure w wersji 2.0 lub nowszej lokalnie. Aby sprawdzić zainstalowaną wersję, uruchom polecenie az --version.

  • Zaloguj się do swojego konta przy użyciu polecenia az login . Zanotuj właściwość id z danych wyjściowych polecenia dla odpowiedniej nazwy subskrypcji.

    az login
    
  • Jeśli masz wiele subskrypcji, wybierz odpowiednią subskrypcję, w ramach której powinny być naliczane opłaty za ten zasób. Wybierz określony identyfikator subskrypcji na Twoim koncie za pomocą polecenia az account set.

    az account set --subscription <subscription ID>
    

Tworzenie wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL w nowej sieci wirtualnej

Utwórz prywatne wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL w sieci wirtualnej przy użyciu następującego polecenia:

az postgres flexible-server create --resource-group demoresourcegroup --name demoserverpostgres --vnet demoappvnet --location westus2

To polecenie wykonuje następujące akcje, które mogą potrwać kilka minut:

  • Utwórz grupę zasobów, jeśli jeszcze nie istnieje.
  • Generuje nazwę serwera, jeśli nie jest podana.
  • Utwórz nową sieć wirtualną dla nowego wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL i podsieci w tej sieci wirtualnej dla wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL.
  • Tworzy nazwę użytkownika administratora , hasło dla serwera, jeśli nie zostanie podane.
  • Tworzy pustą bazę danych o nazwie postgres

Oto przykładowe dane wyjściowe.

Local context is turned on. Its information is saved in working directory /home/jane. You can run `az local-context off` to turn it off.
Command argument values from local context: --resource-group demoresourcegroup, --location: eastus
Checking the existence of the resource group ''...
Creating Resource group 'demoresourcegroup ' ...
Creating new vnet "demoappvnet" in resource group "demoresourcegroup" ...
Creating new subnet "Subnet095447391" in resource group "demoresourcegroup " and delegating it to "Microsoft.DBforPostgreSQL/flexibleServers"...
Creating Azure Database for PostgreSQL flexible server instance 'demoserverpostgres' in group 'demoresourcegroup'...
Your server 'demoserverpostgres' is using sku 'Standard_D2s_v3' (Paid Tier). Please refer to https://aka.ms/postgres-pricing for pricing details
Make a note of your password. If you forget, you have to reset your password with 'az postgres flexible-server update -n demoserverpostgres --resource-group demoresourcegroup -p <new-password>'.
{
  "connectionString": "postgresql://generated-username:generated-password@demoserverpostgres.postgres.database.azure.com/postgres?sslmode=require",
  "host": "demoserverpostgres.postgres.database.azure.com",
  "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.DBforPostgreSQL/flexibleServers/demoserverpostgres",
  "location": "East US",
  "password": "generated-password",
  "resourceGroup": "demoresourcegroup",
  "skuname": "Standard_D2s_v3",
  "subnetId": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/demoresourcegroup/providers/Microsoft.Network/virtualNetworks/VNET095447391/subnets/Subnet095447391",
  "username": "generated-username",
  "version": "12"
}

Tworzenie aplikacji internetowej

W tej sekcji utworzysz hosta aplikacji w aplikacji usługi App Service, połączysz tę aplikację z elastyczną bazą danych serwera usługi Azure Database for PostgreSQL, a następnie wdrożysz kod na tym hoście. Upewnij się, że jesteś w katalogu głównym repozytorium kodu aplikacji w terminalu. Uwaga Plan podstawowy nie obsługuje integracji z siecią wirtualną. Użyj warstwy Standardowa lub Premium.

Tworzenie aplikacji usługi App Service (proces hosta) za pomocą polecenia az webapp up

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

Uwaga

  • W przypadku argumentu --location użyj tej samej lokalizacji, co w przypadku bazy danych w poprzedniej sekcji.
  • Zastąp <ciąg app-name> unikatową nazwą na całej platformie Azure. Dozwolone znaki dla <nazwy> aplikacji to A-Z, 0-9 i -. Dobrym wzorcem jest użycie kombinacji nazwy firmy i identyfikatora aplikacji.

To polecenie wykonuje następujące akcje, które mogą potrwać kilka minut:

  • Utwórz grupę zasobów, jeśli jeszcze nie istnieje. (W tym poleceniu użyjesz tej samej grupy zasobów, w której utworzono wcześniej bazę danych).
  • Utwórz aplikację usługi App Service, jeśli nie istnieje.
  • Włącz domyślne rejestrowanie dla aplikacji, jeśli nie jest jeszcze włączone.
  • Przekaż repozytorium przy użyciu wdrożenia ZIP z włączoną automatyzacją kompilacji.

Tworzenie podsieci dla aplikacji internetowej

Przed włączeniem integracji z siecią wirtualną musisz mieć podsieć delegowana do aplikacji internetowej usługi App Service. Przed utworzeniem podsieci wyświetl adres podsieci bazy danych, aby uniknąć używania tego samego prefiksu adresu dla podsieci aplikacji internetowej.

az network vnet show --resource-group demoresourcegroup -n demoappvnet

Uruchom następujące polecenie, aby utworzyć nową podsieć w tej samej sieci wirtualnej co wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL. Zaktualizuj prefiks adresu, aby uniknąć konfliktu z podsiecią serwera elastycznego usługi Azure Database for PostgreSQL.

az network vnet subnet create --resource-group demoresourcegroup --vnet-name demoappvnet --name webappsubnet  --address-prefixes 10.0.1.0/24  --delegations Microsoft.Web/serverFarms

Dodawanie aplikacji internetowej do sieci wirtualnej

Użyj polecenia az webapp vnet-integration , aby dodać regionalną integrację sieci wirtualnej do aplikacji internetowej.

az webapp vnet-integration add --resource-group demoresourcegroup -n  mywebapp --vnet demoappvnet --subnet webappsubnet

Konfigurowanie zmiennych środowiskowych w celu nawiązania połączenia z bazą danych

Po wdrożeniu kodu w usłudze App Service następnym krokiem jest połączenie aplikacji z elastycznym wystąpieniem serwera usługi Azure Database for PostgreSQL na platformie Azure. Kod aplikacji oczekuje znalezienia informacji o bazie danych w wielu zmiennych środowiskowych. Aby ustawić zmienne środowiskowe w usłudze App Service, użyj polecenia az webapp config appsettings set .

  
az webapp config appsettings set  --name mywebapp --settings DBHOST="<postgres-server-name>.postgres.database.azure.com" DBNAME="postgres" DBUSER="<username>" DBPASS="<password>" 
  • Zastąp wartość postgres-server-name,username,password dla nowo utworzonego polecenia wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL.
  • Zastąp <nazwę użytkownika> i <hasło> poświadczeniami wygenerowanymi przez polecenie.
  • Grupa zasobów i nazwa aplikacji są pobierane z buforowanych wartości w pliku .azure/config.
  • Polecenie tworzy ustawienia o nazwach DBHOST, DBNAME, DBUSER*i DBPASS. Jeśli kod aplikacji używa innej nazwy informacji o bazie danych, użyj tych nazw dla ustawień aplikacji, jak wspomniano w kodzie.

Skonfiguruj aplikację internetową, aby zezwalać na wszystkie połączenia wychodzące z sieci wirtualnej.

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

Czyszczenie zasobów

Wyczyść wszystkie zasoby utworzone w samouczku przy użyciu następującego polecenia. To polecenie usuwa wszystkie zasoby w tej grupie zasobów.

az group delete -n demoresourcegroup

Następne kroki