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 przy użyciu elastycznego serwera usługi Azure Database for PostgreSQL w sieci wirtualnej.
Niniejszy 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
- Nawiązywanie połączenia z serwerem elastycznym 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 (lub użyj usługi Azure Cloud Shell , która ma wstępnie zainstalowany interfejs wiersza polecenia). 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.
- Tworzy sieć wirtualną i podsieć dla wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL.
- Tworzy nazwę użytkownika administratora i hasło dla serwera, jeśli nie zostanie podane.
- Tworzy pustą bazę danych o nazwie postgres.
Oto przykładowe dane wyjściowe.
Creating Resource Group 'demoresourcegroup'...
Creating new Vnet "demoappvnet" in resource group "demoresourcegroup"
Creating new Subnet "Subnetdemoserverpostgres" in resource group "demoresourcegroup"
Creating a private dns zone demoserverpostgres.private.postgres.database.azure.com in resource group "demoresourcegroup"
Creating PostgreSQL Server '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
Creating PostgreSQL database 'flexibleserverdb'...
Make a note of your password. If you forget, you would have to reset your password with "az postgres flexible-server update -n demoserverpostgres -g demoresourcegroup -p <new-password>".
Try using 'az postgres flexible-server connect' command to test out connection.
{
"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/demoappvnet/subnets/Subnetdemoserverpostgres",
"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.
Utwórz aplikację 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