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
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Konfigurowanie środowiska początkowego
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
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 polecenieaz upgrade
(wymaga wersji 2.30.0 lub nowszej).Zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia za
az login
pomocą 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ładmsdocs-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
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
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.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 ipsql
, aleaz 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ć zaaz account list-locations
pomocą polecenia . W przypadku aplikacji produkcyjnych umieść bazę danych i aplikację w tej samej lokalizacji.
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
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
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ślnejStandard_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-rg
eastus
zasobów w regionie.
- Domyślnie polecenie używa wygenerowanej nazwy, takiej jak
- 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
.
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
W terminalu upewnij się, że jesteś w folderze repozytorium djangoapp zawierającym kod aplikacji.
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 toA
-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 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 jakaz 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ątkowegoaz webapp up
użycia polecenia .
- W przypadku argumentu
W terminalu upewnij się, że jesteś w folderze repozytorium djangoapp zawierającym kod aplikacji.
Przejdź do gałęzi przykładowej
flexible-server
aplikacji. Ta gałąź zawiera konkretną konfigurację wymaganą dla serwera elastycznego PostgreSQL:git checkout flexible-server
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 (grupyPython-Django-PGFlex-rg
weastus
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.
- Utwórz plan usługi App Service w warstwie cenowej Podstawowa (B1). Możesz pominąć
Po pomyślnym wdrożeniu polecenie generuje dane wyjściowe JSON, takie jak w poniższym przykładzie:
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_USER
i 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.
Uruchom polecenie
az webapp ssh
, aby otworzyć sesję SSH dla aplikacji internetowej w przeglądarce:az webapp ssh
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.
Polecenie
createsuperuser
wyświetla monit o podanie poświadczeń administratora. Na potrzeby tego samouczka użyj domyślnej nazwy użytkownikaroot
, naciśnij klawisz Enter , aby adres e-mail pozostawić go pusty, a następnie wprowadźPollsdb1
hasło.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
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ę.
Przejdź do strony administratora aplikacji internetowej, dołączając
/admin
adres URL, na przykładhttp://<app-name>.azurewebsites.net/admin
. Zaloguj się przy użyciu poświadczeń administratora Django z poprzedniej sekcji (root
iPollsdb1
). W obszarze Ankiety wybierz pozycję Dodaj obok pozycji Pytania i utwórz pytanie ankiety z wybranymi opcjami.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.