Samouczek: tworzenie aplikacji Django przy użyciu usługi Połączenie or przy użyciu bazy danych Postgres w usłudze aplikacja systemu Azure Service

Uwaga

Używasz Połączenie usługi, która ułatwia łączenie aplikacji internetowej z usługą bazy danych w tym samouczku. W tym samouczku przedstawiono modyfikację samouczka usługi App Service w celu korzystania z tej funkcji, aby zobaczyć podobieństwa. Zapoznaj się z sekcją Konfigurowanie zmiennych środowiskowych w celu nawiązania połączenia z bazą danych w tym samouczku, aby zobaczyć, gdzie usługa Połączenie or wchodzi w grę i upraszcza proces połączenia podany w samouczku usługi App Service.

W tym samouczku pokazano, jak wdrożyć opartą na danych aplikację internetową Języka Python Django w celu aplikacja systemu Azure Service i połączyć ją z bazą danych Azure Database for a Postgres. Możesz również wypróbować serwer elastyczny PostgreSQL, wybierając opcję powyżej. Serwer elastyczny zapewnia prostszy mechanizm wdrażania i obniża koszty bieżące.

W tym samouczku użyjesz interfejsu wiersza polecenia platformy Azure, aby wykonać następujące zadania:

  • Konfigurowanie środowiska początkowego przy użyciu języka Python i interfejsu wiersza polecenia platformy Azure
  • Tworzenie bazy danych usługi Azure Database for PostgreSQL
  • Wdrażanie kodu w usłudze aplikacja systemu Azure i nawiązywanie połączenia z usługą PostgreSQL
  • Aktualizowanie kodu i ponowne wdrażanie
  • Wyświetlanie dzienników diagnostycznych
  • Zarządzanie aplikacją internetową w witrynie Azure Portal

W tym samouczku pokazano, jak wdrożyć opartą na danych aplikację internetową Języka Python Django w usłudze aplikacja systemu Azure Service i połączyć ją z bazą danych serwera elastycznego usługi Azure Database for PostgreSQL. Jeśli nie możesz użyć serwera elastycznego PostgreSQL, wybierz powyżej opcję Pojedynczy serwer.

W tym samouczku użyjesz interfejsu wiersza polecenia platformy Azure, aby wykonać następujące zadania:

  • Konfigurowanie środowiska początkowego przy użyciu języka Python i interfejsu wiersza polecenia platformy Azure
  • Tworzenie bazy danych serwera elastycznego usługi Azure Database for PostgreSQL
  • Wdrażanie kodu w usłudze aplikacja systemu Azure i nawiązywanie połączenia z serwerem elastycznym PostgreSQL
  • Aktualizowanie kodu i ponowne wdrażanie
  • Wyświetlanie dzienników diagnostycznych
  • Zarządzanie aplikacją internetową w witrynie Azure Portal

Wymagania wstępne

Konfigurowanie środowiska początkowego

  1. Zainstaluj środowisko Python w wersji 3.8 lub nowszej. Aby sprawdzić, czy wersja języka Python to 3.8 lub nowsza, uruchom następujący kod w oknie terminalu:

    python3 --version
    
  2. Zainstaluj interfejs wiersza polecenia platformy Azure w wersji 2.30.0 lub nowszej. Aby sprawdzić, czy wersja interfejsu wiersza polecenia platformy Azure to 2.30.0 lub nowsza az --version , uruchom polecenie . Jeśli musisz przeprowadzić uaktualnienie, uruchom polecenie az upgrade (wymaga wersji 2.30.0 lub nowszej).

  3. Zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia za az loginpomocą polecenia . To polecenie otwiera przeglądarkę w celu zebrania poświadczeń. Po zakończeniu polecenia zostanie wyświetlone dane wyjściowe JSON zawierające informacje o subskrypcjach. Po zalogowaniu można uruchamiać polecenia platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure, aby pracować z zasobami w ramach subskrypcji.

Klonowanie lub pobieranie przykładowej aplikacji

Sklonuj przykładowe repozytorium:

git clone https://github.com/Azure-Samples/serviceconnector-webapp-postgresql-django.git

Przejdź do następującego folderu:

cd serviceconnector-webapp-postgresql-django

Użyj gałęzi serwera elastycznego przykładu, która zawiera kilka niezbędnych zmian, takich jak sposób ustawiania adresu URL serwera bazy danych i dodawania 'OPTIONS': {'sslmode': 'require'} do konfiguracji bazy danych Django zgodnie z wymaganiami serwera elastycznego usługi Azure PostgreSQL.

git checkout flexible-server

Przykład djangoapp zawiera aplikację do sondowania Django opartą na danych, którą otrzymujesz, postępując zgodnie z instrukcjami Pisanie pierwszej aplikacji Django w dokumentacji platformy Django. Ukończona aplikacja jest dostępna dla Twojej wygody.

Przykład został również zmodyfikowany tak, aby był uruchamiany w środowisku produkcyjnym, na przykład App Service:

  • Ustawienia produkcyjne znajdują się w pliku azuresite/production.py . Ustawienia programowania znajdują się w witrynie azuresite/settings.py.
  • Aplikacja używa ustawień produkcyjnych, gdy zmienna środowiskowa jest ustawiona WEBSITE_HOSTNAME . usługa aplikacja systemu Azure automatycznie ustawia tę zmienną na adres URL aplikacji internetowej, na przykład msdocs-django.azurewebsites.net.

Ustawienia produkcyjne są specyficzne dla konfigurowania platformy Django do uruchamiania w dowolnym środowisku produkcyjnym i nie są specyficzne dla usługi App Service. Aby uzyskać więcej informacji, zobacz listę kontrolną wdrażania Django. Aby uzyskać szczegółowe informacje na temat niektórych zmian, zobacz Ustawienia produkcyjne dla platformy Django na platformie Azure .

Masz problemy? Daj nam znać.

Tworzenie bazy danych Postgres na platformie Azure

  1. Włącz buforowanie parametrów za pomocą interfejsu wiersza polecenia platformy Azure, aby nie trzeba było udostępniać tych parametrów za pomocą każdego polecenia. (Buforowane wartości są zapisywane w folderze .azure ).

    az config param-persist on 
    
  2. db-up Zainstaluj rozszerzenie dla interfejsu wiersza polecenia platformy Azure:

    az extension add --name db-up
    

    az Jeśli polecenie nie jest rozpoznawane, upewnij się, że masz zainstalowany interfejs wiersza polecenia platformy Azure zgodnie z opisem w temacie Konfigurowanie środowiska początkowego.

  3. Utwórz bazę danych Postgres na platformie Azure za az postgres up pomocą polecenia :

    az postgres up --resource-group ServiceConnector-tutorial-rg --location eastus --sku-name B_Gen5_1 --server-name <postgres-server-name> --database-name pollsdb --admin-user <admin-username> --admin-password <admin-password> --ssl-enforcement Enabled
    

    Zastąp następujące teksty zastępcze własnymi danymi:

    • Zastąp<postgres-server-name> ciąg nazwą unikatową dla całej platformy Azure (punkt końcowy serwera staje się ).https://<postgres-server-name>.postgres.database.azure.com Dobrym wzorcem jest użycie kombinacji nazwy firmy i innej unikatowej wartości.

    • W przypadku <admin-username> poleceń i <admin-password>określ poświadczenia, aby utworzyć użytkownika administratora dla tego serwera Postgres. Nazwa użytkownika administratora nie może być azure_superuser, azure_pg_admin, administrator, administrator, główny, gość lub publiczny. Nie może ona zaczynać się od pg_. Hasło musi zawierać od 8 do 128 znaków z trzech z następujących kategorii: wielkie litery angielskie, małe litery angielskie, cyfry (od 0 do 9) i znaki inne niż alfanumeryczne (na przykład !, #, %). Hasło nie może zawierać nazwy użytkownika.

    • Nie używaj $ znaku w nazwie użytkownika ani haśle. Później utworzysz zmienne środowiskowe z tymi wartościami, w których $ znak ma specjalne znaczenie w kontenerze systemu Linux używanym do uruchamiania aplikacji języka Python.

    • Używana tutaj warstwa cenowa (Podstawowa *B_Gen5_1* , Gen5, 1. rdzeń) jest najtańsza. W przypadku produkcyjnych baz danych pomiń --sku-name argument , aby zamiast tego użyć warstwy GP_Gen5_2 (Ogólnego przeznaczenia, Gen 5, 2 rdzeni).

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

    • Utwórz grupę zasobów o nazwie ServiceConnector-tutorial-rg, jeśli jeszcze nie istnieje.
    • Utwórz serwer Postgres o nazwie argumentu --server-name .
    • Utwórz konto administratora przy użyciu --admin-user argumentów i --admin-password . Możesz pominąć te argumenty, aby umożliwić polecenie generowania unikatowych poświadczeń.
    • pollsdb Utwórz bazę danych o nazwie według argumentu--database-name.
    • Włącz dostęp z lokalnego adresu IP.
    • Włącz dostęp z usług platformy Azure.
    • Utwórz użytkownika bazy danych z dostępem pollsdb do bazy danych.

    Wszystkie kroki można wykonać oddzielnie z innymi az postgres poleceniami i psql , ale az postgres up wszystkie kroki są wykonywane razem.

    Po zakończeniu polecenia zwraca on obiekt JSON zawierający różne parametry połączenia dla bazy danych wraz z adresem URL serwera, wygenerowaną nazwą użytkownika (taką jak "joyfulKoala@msdocs-djangodb-12345") i hasłem GUID.

    Ważne

    Skopiuj nazwę użytkownika i hasło do tymczasowego pliku tekstowego, ponieważ będą one potrzebne w dalszej części tego samouczka.

    Napiwek

    -l <location-name> można ustawić na dowolne regiony platformy Azure. Regiony dostępne dla subskrypcji można uzyskać za az account list-locations pomocą polecenia . W przypadku aplikacji produkcyjnych umieść bazę danych i aplikację w tej samej lokalizacji.

  1. Włącz buforowanie parametrów za pomocą interfejsu wiersza polecenia platformy Azure, aby nie trzeba było udostępniać tych parametrów za pomocą każdego polecenia. (Buforowane wartości są zapisywane w folderze .azure ).

    az config param-persist on 
    
  2. Utwórz grupę zasobów (w razie potrzeby możesz zmienić nazwę). Nazwa grupy zasobów jest buforowana i automatycznie stosowana do kolejnych poleceń.

    az group create --name ServiceConnector-tutorial-rg --location eastus
    
  3. Tworzenie serwera bazy danych (proces trwa kilka minut):

    az postgres flexible-server create --sku-name Standard_B1ms --public-access all
    

    az Jeśli polecenie nie jest rozpoznawane, upewnij się, że masz zainstalowany interfejs wiersza polecenia platformy Azure zgodnie z opisem w temacie Konfigurowanie środowiska początkowego.

    Polecenie az postgres flexible-server create wykonuje następujące akcje, które potrwają kilka minut:

    • Utwórz domyślną grupę zasobów, jeśli nazwa nie jest już buforowana.
    • Tworzenie serwera elastycznego PostgreSQL:
      • Domyślnie polecenie używa wygenerowanej nazwy, takiej jak server383813186. Możesz określić własną nazwę za pomocą parametru --name . Nazwa musi być unikatowa na platformie Azure.
      • Polecenie używa warstwy cenowej o najniższych kosztach Standard_B1ms . Pomiń argument, --sku-name aby użyć warstwy domyślnej Standard_D2s_v3 .
      • Polecenie używa grupy zasobów i lokalizacji buforowanej z poprzedniego az group create polecenia, które w tym przykładzie jest grupą ServiceConnector-tutorial-rgeastus zasobów w regionie.
    • Utwórz konto administratora z nazwą użytkownika i hasłem. Te wartości można określić bezpośrednio za pomocą parametrów --admin-user i .--admin-password
    • Utwórz bazę danych o nazwie flexibleserverdb domyślnie. Nazwę bazy danych można określić za pomocą parametru --database-name .
    • Włącza pełny dostęp publiczny, który można kontrolować przy użyciu parametru --public-access .
  4. Po zakończeniu polecenia skopiuj dane wyjściowe JSON polecenia do pliku, ponieważ będą potrzebne wartości z danych wyjściowych w dalszej części tego samouczka, w szczególności hosta, nazwy użytkownika i hasła wraz z nazwą bazy danych.

Masz problemy? Daj nam znać.

Wdrażanie kodu w usłudze aplikacja systemu Azure

W tej sekcji utworzysz hosta aplikacji w aplikacji usługi App Service, połączysz tę aplikację z bazą danych Postgres, a następnie wdrożysz kod na tym hoście.

Tworzenie aplikacji usługi App Service

  1. W terminalu upewnij się, że jesteś w folderze repozytorium djangoapp zawierającym kod aplikacji.

  2. Utwórz aplikację usługi App Service (proces hosta) za az webapp up pomocą polecenia :

    az webapp up --resource-group ServiceConnector-tutorial-rg --location eastus --plan ServiceConnector-tutorial-plan --sku B1 --name <app-name>
    
    • W przypadku argumentu --location upewnij się, że używasz lokalizacji obsługiwanej przez usługę Połączenie or.
    • Zastąp<ciąg app-name> unikatową nazwą na całej platformie Azure (punkt końcowy serwera to https://<app-name>.azurewebsites.net). Dozwolone znaki dla <nazwy> aplikacji to A-Z,-09 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 planusługi App Service DjangoPostgres-tutorial-plan w warstwie cenowej Podstawowa (B1), jeśli nie istnieje. --plan i --sku są opcjonalne.
    • 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.
    • Buforuj typowe parametry, takie jak nazwa grupy zasobów i plan usługi App Service, do pliku .azure/config. W związku z tym nie trzeba określać wszystkich tych samych parametrów przy użyciu późniejszych poleceń. Aby na przykład ponownie wdrożyć aplikację po wprowadzeniu zmian, możesz po prostu uruchomić az webapp up ponownie bez żadnych parametrów. Polecenia pochodzące z rozszerzeń interfejsu wiersza polecenia, takie jak az postgres up, nie korzystają obecnie z pamięci podręcznej, dlatego konieczne jest określenie grupy zasobów i lokalizacji w tym miejscu przy użyciu początkowego az webapp upużycia polecenia .
  1. W terminalu upewnij się, że jesteś w folderze repozytorium djangoapp zawierającym kod aplikacji.

  2. Przejdź do gałęzi przykładowej flexible-server aplikacji. Ta gałąź zawiera konkretną konfigurację wymaganą dla serwera elastycznego PostgreSQL:

    git checkout flexible-server
    
  3. Uruchom następujące az webapp up polecenie, aby utworzyć hosta usługi App Service dla aplikacji:

    az webapp up --name <app-name> --sku B1 
    

    To polecenie wykonuje następujące akcje, które mogą potrwać kilka minut przy użyciu grupy zasobów i lokalizacji buforowanej z poprzedniego az group create polecenia (grupy Python-Django-PGFlex-rg w eastus regionie w tym przykładzie).

    • Utwórz plan usługi App Service w warstwie cenowej Podstawowa (B1). Możesz pominąć --sku używanie wartości domyślnych.
    • Utwórz aplikację usługi App Service.
    • Włącz domyślne rejestrowanie dla aplikacji.
    • Przekaż repozytorium przy użyciu wdrożenia ZIP z włączoną automatyzacją kompilacji.

Po pomyślnym wdrożeniu polecenie generuje dane wyjściowe JSON, takie jak w poniższym przykładzie:

Screenshot of the terminal, showing an example output for the az webapp up command.

Masz problemy? Najpierw zapoznaj się z przewodnikiem rozwiązywania problemów. W przeciwnym razie daj nam znać.

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 bazą danych Postgres na platformie Azure.

Kod aplikacji oczekuje znalezienia informacji o bazie danych w czterech zmiennych środowiskowych o nazwach AZURE_POSTGRESQL_HOST, AZURE_POSTGRESQL_NAME, AZURE_POSTGRESQL_USERi AZURE_POSTGRESQL_PASS.

Aby ustawić zmienne środowiskowe w usłudze App Service, utwórz "ustawienia aplikacji" za pomocą następującego az connection create polecenia.

az webapp connection create postgres --client-type django

Grupa zasobów, nazwa aplikacji, nazwa bazy danych są pobierane z buforowanych wartości. Podczas wykonywania tego polecenia należy podać hasło administratora bazy danych postgres.

  • Polecenie tworzy ustawienia o nazwie "AZURE_POSTGRESQL_HOST", "AZURE_POSTGRESQL_NAME", "AZURE_POSTGRESQL_USER", "AZURE_POSTGRESQL_PASS" zgodnie z oczekiwaniami w kodzie aplikacji.
  • Jeśli nie pamiętasz poświadczeń administratora, polecenie przeprowadzi Cię przez proces jego resetowania.
az webapp connection create postgres-flexible --client-type django

Grupa zasobów, nazwa aplikacji, nazwa bazy danych są pobierane z buforowanych wartości. Podczas wykonywania tego polecenia należy podać hasło administratora bazy danych postgres.

  • Polecenie tworzy ustawienia o nazwie "AZURE_POSTGRESQL_HOST", "AZURE_POSTGRESQL_NAME", "AZURE_POSTGRESQL_USER", "AZURE_POSTGRESQL_PASS" zgodnie z oczekiwaniami w kodzie aplikacji.
  • Jeśli nie pamiętasz poświadczeń administratora, polecenie przeprowadzi Cię przez proces jego resetowania.

Uwaga

Jeśli zostanie wyświetlony komunikat o błędzie "Subskrypcja nie jest zarejestrowana do korzystania z microsoft.ServiceLinker", uruchom polecenie az provider register -n Microsoft.ServiceLinker , aby zarejestrować dostawcę zasobów usługi Połączenie or i ponownie uruchomić polecenie połączenia.

W kodzie języka Python uzyskujesz dostęp do tych ustawień jako zmiennych środowiskowych z instrukcjami takimi jak os.environ.get('AZURE_POSTGRESQL_HOST'). Aby uzyskać więcej informacji, zobacz Access environment variables (Uzyskiwanie dostępu do zmiennych środowiskowych).

Masz problemy? Najpierw zapoznaj się z przewodnikiem rozwiązywania problemów. W przeciwnym razie daj nam znać.

Uruchamianie migracji baz danych Django

Migracje baz danych Django zapewniają, że schemat w bazie danych PostgreSQL na platformie Azure jest zgodny z kodem.

  1. Uruchom polecenie az webapp ssh , aby otworzyć sesję SSH dla aplikacji internetowej w przeglądarce:

    az webapp ssh
    
  2. W sesji SSH uruchom następujące polecenia:

    # Run database migrations
    python manage.py migrate
    
    # Create the super user (follow prompts)
    python manage.py createsuperuser
    

    Jeśli wystąpią jakiekolwiek błędy związane z nawiązywaniem połączenia z bazą danych, sprawdź wartości ustawień aplikacji utworzonych w poprzedniej sekcji.

  3. Polecenie createsuperuser wyświetla monit o podanie poświadczeń administratora. Na potrzeby tego samouczka użyj domyślnej nazwy użytkownika root, naciśnij klawisz Enter , aby adres e-mail pozostawić go pusty, a następnie wprowadź Pollsdb1 hasło.

  4. Jeśli zostanie wyświetlony błąd, że baza danych jest zablokowana, upewnij się, że uruchomiono az webapp settings polecenie w poprzedniej sekcji. Bez tych ustawień polecenie migracji nie może komunikować się z bazą danych, co powoduje błąd.

Masz problemy? Najpierw zapoznaj się z przewodnikiem rozwiązywania problemów. W przeciwnym razie daj nam znać.

Tworzenie pytania ankiety w aplikacji

  1. Otwórz witrynę internetową aplikacji. Aplikacja powinna wyświetlić komunikat "Aplikacja sondowania" i "Brak dostępnych ankiet", ponieważ w bazie danych nie ma jeszcze określonych ankiet.

    az webapp browse
    

    Jeśli zostanie wyświetlony komunikat "Błąd aplikacji", prawdopodobnie nie utworzono wymaganych ustawień w poprzednim kroku "Konfigurowanie zmiennych środowiskowych w celu połączenia z bazą danych" lub że te wartości zawierają błędy. Uruchom polecenie az webapp config appsettings list , aby sprawdzić ustawienia.

    Po zaktualizowaniu ustawień w celu skorygowania błędów przekaż aplikacji minutę do ponownego uruchomienia, a następnie odśwież przeglądarkę.

  2. Przejdź do strony administratora aplikacji internetowej, dołączając /admin adres URL, na przykład http://<app-name>.azurewebsites.net/admin. Zaloguj się przy użyciu poświadczeń administratora Django z poprzedniej sekcji (root i Pollsdb1). W obszarze Ankiety wybierz pozycję Dodaj obok pozycji Pytania i utwórz pytanie ankiety z wybranymi opcjami.

  3. Wróć do głównej witryny internetowej (http://<app-name>.azurewebsites.net), aby potwierdzić, że pytania są teraz prezentowane użytkownikowi. Odpowiedz na pytania, jednak chcesz wygenerować dane w bazie danych.

Gratulacje! Używasz aplikacji internetowej Django w języku Python w usłudze aplikacja systemu Azure Service dla systemu Linux z aktywną bazą danych Postgres.

Uwaga

Usługa App Service wykrywa projekt Django, wyszukując plik wsgi.py w każdym podfolderze, który manage.py startproject domyślnie tworzy. Gdy usługa App Service wykryje ten plik, ładuje aplikację internetową Django. Aby uzyskać więcej informacji, zobacz Konfigurowanie wbudowanego obrazu języka Python.

Czyszczenie zasobów

Jeśli chcesz zachować aplikację lub kontynuować korzystanie z dodatkowych samouczków, przejdź do sekcji Następne kroki. W przeciwnym razie, aby uniknąć naliczania bieżących opłat, usuń grupę zasobów utworzoną na potrzeby tego samouczka:

az group delete --name ServiceConnector-tutorial-rg --no-wait

Usunięcie grupy zasobów spowoduje również cofnięcie przydziału i usunięcie wszystkich zawartych w niej zasobów. Przed użyciem polecenia upewnij się, że zasoby w grupie nie są już potrzebne.

Usunięcie wszystkich zasobów może zająć trochę czasu. Argument --no-wait umożliwia natychmiastowe zwrócenie polecenia.

Masz problemy? Daj nam znać.

Następne kroki

Postępuj zgodnie z samouczkami wymienionymi poniżej, aby dowiedzieć się więcej o usłudze Połączenie or.