Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu nasadíte webovou aplikaci Python řízenou daty do služby Azure App Service , která používá službu relační databáze Azure Database for PostgreSQL . služba Aplikace Azure podporuje Python v linuxovém serverovém prostředí Tento článek používá Django. Alternativy zahrnují Flask nebo kurz FastAPI.
V tomto kurzu se naučíte:
- Vytvořte ve výchozím nastavení zabezpečenou architekturu služby App Service, PostgreSQL a mezipaměti Redis.
- Zabezpečení tajných kódů připojení pomocí spravované identity a odkazů na Key Vault
- Nasaďte ukázkovou aplikaci v Pythonu do služby App Service z úložiště GitHub.
- Přístup k připojovacím řetězcům služby App Service a nastavení aplikace v aplikačním kódu.
- Proveďte aktualizace a znovu nasaďte kód aplikace.
- Generování schématu databáze spuštěním migrací databází
- Streamování diagnostických protokolů z Azure
- Správa aplikace na webu Azure Portal
- Zřiďte stejnou architekturu a nasaďte ji pomocí Azure Developer CLI.
- Optimalizujte svůj vývojový pracovní postup pomocí GitHub Codespaces a GitHub Copilotu.
Požadavky
- Účet Azure s aktivním předplatným. Pokud účet Azure nemáte, můžete si ho zdarma vytvořit.
- Účet GitHubu. můžete si jeden zdarma pořídit.
- Znalost Pythonu s vývojem Django
- (Volitelné) Pokud chcete vyzkoušet GitHub Copilot, potřebujete účet GitHub Copilot. K dispozici je 30denní bezplatná zkušební verze.
- Účet Azure s aktivním předplatným. Pokud účet Azure nemáte, můžete si ho zdarma vytvořit.
- Nainstalované rozhraní příkazového řádku pro vývojáře Azure Pomocí Azure Cloud Shellu můžete postupovat podle kroků, protože už má nainstalované rozhraní příkazového řádku Azure Developer CLI.
- Znalost Pythonu a vývoje v Django.
- (Volitelné) Pokud chcete vyzkoušet GitHub Copilot, potřebujete účet GitHub Copilot. K dispozici je 30denní bezplatná zkušební verze.
Přeskočit na konec
Pokud chcete jenom zobrazit ukázkovou aplikaci v tomto kurzu spuštěném v Azure, spusťte v Azure Cloud Shellu následující příkazy a postupujte podle pokynů:
mkdir msdocs-django-postgresql-sample-app
cd msdocs-django-postgresql-sample-app
azd init --template msdocs-django-postgresql-sample-app
azd up
Spusťte ukázku
Jako výchozí bod nastavte ukázkovou aplikaci řízenou daty. Ukázkové úložiště zahrnuje konfiguraci vývojového kontejneru. Vývojový kontejner má vše, co potřebujete k vývoji aplikace, včetně databáze, mezipaměti a všech proměnných prostředí, které ukázková aplikace potřebuje. Vývojový kontejner může běžet v prostředí codespace GitHubu, takže ukázku můžete spustit na libovolném počítači s webovým prohlížečem.
Poznámka:
Pokud budete postupovat společně s tímto kurzem u vaší vlastní aplikace, podívejte se na popis souboru requirements.txt v README.md, abyste zjistili, jaké balíčky potřebujete.
Krok 1: V novém okně prohlížeče:
- Přihlaste se k účtu GitHub.
- Přejděte na https://github.com/Azure-Samples/msdocs-django-postgresql-sample-app/fork.
- Zrušte výběr možnosti Kopírovat pouze hlavní větev. Chcete všechny větve.
- Vyberte Vytvořit fork.
Krok 2: Ve forku na GitHubu:
- Vyberte hlavní>starter-no-infra pro počáteční větev. Tato větev obsahuje pouze ukázkový projekt a žádné soubory ani konfiguraci související s Azure.
- Vyberte Code>Create codespace on starter-no-infra.
Nastavení codespace trvá několik minut.
pip install -r requirements.txtSpustí se pro vaše úložiště. Zadaný soubor .env již obsahuje fiktivníSECRET_KEYproměnnou , kterou Django musí spustit místně.
Krok 3: V terminálu codespace:
- Spusťte migrace databází pomocí
python manage.py migratepříkazu . - Spusťte aplikaci pomocí
python manage.py runserverpříkazu . - Až se zobrazí oznámení
Your application running on port 8000 is available., vyberte Otevřít v prohlížeči. Ukázkovou aplikaci byste měli vidět na nové kartě prohlížeče. Chcete-li aplikaci zastavit, zadejteCtrl+C.
Návod
Můžete se zeptat GitHub Copilot na toto úložiště. Příklad:
- @workspace Co tento projekt dělá?
- @workspace Co dělá složka .devcontainer?
Máte problémy? Projděte si část Řešení potíží.
Vytvoření služby App Service, databáze a mezipaměti
V tomto kroku vytvořte prostředky Azure. Tento kurz vytvoří sadu prostředků zabezpečení ve výchozím nastavení, mezi které patří App Service, Azure Database for PostgreSQL a Azure Cache. Pro proces vytváření zadáte:
- Název webové aplikace. Používá se jako součást názvu DNS pro vaši aplikaci.
- Oblast, ve které se má aplikace spouštět fyzicky v reálném světě. Je také součástí názvu DNS vaší aplikace.
- Zásobník běhového prostředí pro aplikaci. Vyberete verzi Pythonu, kterou chcete použít pro vaši aplikaci.
- Plán hostování aplikace. Cenová úroveň zahrnuje sadu funkcí a kapacitu škálování vaší aplikace.
- Skupina prostředků
pro aplikaci. Skupina prostředků umožňuje seskupovat všechny prostředky Azure potřebné pro aplikaci v logickém kontejneru.
Přihlaste se do Azure Portalu. Podle těchto kroků vytvořte prostředky Azure App Service.
Krok 1: Na webu Azure Portal:
- V horní části webu Azure Portal do vyhledávacího pole zadejte databázi webové aplikace.
- Pod nadpisem Marketplace vyberte položku s popiskem Webová aplikace a databáze. Můžete také přejít přímo k vytvoření webové aplikace .
Krok 2: Na stránce Vytvořit webovou aplikaci a databázi vyplňte formulář následujícím způsobem.
- Skupina prostředků: Vyberte Vytvořit nový a zadejte msdocs-django-postgres-tutorial.
- Oblast: Libovolná oblast Azure, která je blízko vás.
- Název: msdocs-python-postgres-XYZ.
- Zásobník modulu runtime: Python 3.14.
- Databáze: Flexibilní server PostgreSQL je ve výchozím nastavení vybraný jako databázový stroj. Název serveru a název databáze jsou také standardně nastavené na odpovídající hodnoty.
- Přidat Azure Cache for Redis: Ano.
- Plán hostování: Basic. Až budete připraveni, můžete zvýšit úroveň na produkční cenovou hladinu.
- Vyberte Zkontrolovat a vytvořit.
- Po dokončení ověření vyberte Vytvořit.
Krok 3: Dokončení nasazení trvá několik minut. Po dokončení nasazení vyberte Přejít k prostředku. Nasazení vytvoří následující prostředky:
- Skupina prostředků: Kontejner pro všechny vytvořené prostředky.
- Plán služby App Service: Definuje výpočetní prostředky pro Službu App Service. Tato instance je varianta Linuxu na úrovni Basic.
- App Service: Představuje vaši aplikaci a spouští se v plánu služby App Service.
- Virtuální síť: Integrovaná s aplikací App Service a izoluje provoz back-endové sítě.
- Privátní koncový bod: Koncový bod přístupu pro mezipaměť Redis ve virtuální síti.
- Síťová rozhraní: Privátní IP adresy, jedna pro každý privátní koncový bod.
- Flexibilní server Azure Database for PostgreSQL: Přístupný pouze z virtuální sítě. Nasazení vytvoří databázi a uživatele na serveru.
- Azure Cache for Redis: Přístupná pouze ze své privátní sítě.
- Privátní DNS zóny: Umožňuje rozlišení DNS pro databázový server a Redis mezipaměť ve virtuální síti.
Zabezpečte tajemství připojení a přidejte SECRET_KEY
Proces nasazení vygeneruje proměnné připojení pro vás jako nastavení aplikace. Osvědčeným postupem zabezpečení je úplné zachování tajných kódů mimo službu App Service. Přesuňte tajné kódy do trezoru klíčů a změňte nastavení aplikace na odkazy služby Key Vault pomocí konektorů služeb.
Krok 1: Načtení existujícího připojovacího řetězce
- V nabídce vlevo na stránce služby App Service vyberte Nastavení>Proměnné prostředí.
- Vyberte AZURE_POSTGRESQL_CONNECTIONSTRING.
- V nastavení Přidat/Upravit aplikaci v poli Hodnota najděte část heslo= na konci řetězce.
- Zkopírujte řetězec hesla za heslem= pro pozdější použití.
Toto nastavení aplikace umožňuje připojit se k databázi Postgres a mezipaměti Redis zabezpečené za privátními koncovými body. Tajné kódy se ukládají přímo v aplikaci App Service, což není nejlepší přístup. Tuto konfiguraci změníte. Přidáte také
SECRET_KEYnastavení, které vaše aplikace Django vyžaduje.
Krok 2: Vytvoření trezoru klíčů pro zabezpečenou správu tajných kódů
- Na horním panelu hledání zadejte trezor klíčů a pak vyberte Marketplace>Key Vault.
- Ve skupina prostředků vyberte msdocs-python-postgres-tutorial.
- Do názvu trezoru klíčů zadejte název, který se skládá jenom z písmen a číslic.
- V oblasti vyberte stejné umístění jako je skupina zdrojů.
Krok 3: Zabezpečení trezoru klíčů pomocí privátního koncového bodu
- Vyberte kartu Sítě.
- Zrušte výběr možnosti Povolit veřejný přístup.
- Vyberte Vytvořit privátní koncový bod.
- Ve skupina prostředků vyberte msdocs-python-postgres-tutorial.
- V dialogovém okně v umístění vyberte stejné umístění jako vaše aplikace App Service.
- Do pole Název zadejte msdocs-python-postgres-XYZVaultEndpoint.
- Ve virtuální síti vyberte msdocs-python-postgres-XYZVnet.
- V podsítimsdocs-python-postgres-XYZSubnet.
- Vyberte OK.
- Vyberte Zkontrolovat a vytvořit a potom Vytvořit. Počkejte na dokončení nasazení trezoru klíčů. Měli byste vidět , že je vaše nasazení dokončené.
Krok 4: Konfigurace konektoru PostgreSQL
- Na horním panelu hledání zadejte msdocs-python-postgres a pak vyberte prostředek služby App Service msdocs-python-postgres-XYZ.
- Na stránce služby App Service v nabídce vlevo vyberteKonektor služby>. Už existují dva konektory, které pro vás vytvořil proces vytváření aplikace.
- Zaškrtněte políčko vedle konektoru PostgreSQL a pak vyberte Upravit.
- V Klient typu vyberte Django. Typ klienta Django v konektoru služby PostgreSQL poskytuje proměnné databáze jako samostatná nastavení místo jednoho připojovacího řetězce. Samostatné proměnné jsou pro vás jednodušší používat v nastavení databáze Django.
- Vyberte Ověřování.
- Do pole Heslo vložte dříve zkopírované heslo.
- Vyberte Uložit tajný klíč ve službě Key Vault.
- Pod Připojení ke službě Key Vault vyberte Vytvořit nový. Tato akce otevře dialogové okno Vytvořit připojení v horní části dialogového okna pro úpravy.
Krok 5: Vytvoření připojení ke službě Key Vault
- V dialogovém okně Vytvořit připojení pro připojení ke službě Key Vault vyberte ve službě Key Vault trezor klíčů, který jste vytvořili dříve.
- Vyberte Zkontrolovat a vytvořit.
- Po dokončení ověření vyberte Vytvořit.
Krok 6: Dokončení nastavení konektoru PostgreSQL
- Jste zpátky v dialogovém okně pro úpravy pro defaultConnector. V části Ověřování počkejte na vytvoření konektoru trezoru klíčů. Rozevírací seznam Připojení ke službě Key Vault automaticky vybere.
- Vyberte Další: Sítě.
- Zvolte Uložit. Počkejte, až se zobrazí oznámení o úspěšném dokončení aktualizace.
Krok 7: Konfigurace konektoru Redis tak, aby používal tajné kódy služby Key Vault
- Na stránce Konektory služeb zaškrtněte políčko vedle konektoru Cache for Redis a pak vyberte Upravit.
- Vyberte Ověřování.
- Vyberte Uložit tajný klíč ve službě Key Vault.
- V části Připojení ke službě Key Vault vyberte trezor klíčů, který jste vytvořili.
- Vyberte Další: Sítě.
- Vyberte Konfigurovat pravidla brány firewall pro povolení přístupu k cílové službě. Proces vytváření aplikace již zabezpečil SQL databázi pomocí soukromého koncového bodu.
- Zvolte Uložit. Počkejte, až se zobrazí oznámení o úspěšném dokončení aktualizace.
Krok 8: Ověření integrace služby Key Vault
- V nabídce vlevo znovu vyberte Nastavení > Proměnné prostředí.
-
Vedle AZURE_POSTGRESQL_PASSWORD vyberte Zobrazit hodnotu. Hodnota by měla být
@Microsoft.KeyVault(...), což znamená, že se jedná o odkaz na trezor klíčů, protože tajný klíč je teď spravovaný v trezoru klíčů. - Pokud chcete ověřit připojovací řetězec Redis, vyberte Zobrazit hodnotu vedle AZURE_REDIS_CONNECTIONSTRING.
Krok 9: Ukázková aplikace přečte proměnnou prostředí SECRET_KEY a nastaví požadované SECRET_KEY nastavení. V tomto kroku ho vytvoříte jako nastavení aplikace.
- Na kartě Nastavení aplikace vyberte Přidat.
- Nastavte název na SECRET_KEY.
- Nastavte hodnotu na dlouhý náhodný řetězec.
- Vyberte Použít a pak znovu Použít a pak Potvrďte.
Shrnutí: Proces zabezpečení tajných kódů připojení:
- Načítání tajných kódů připojení z proměnných prostředí aplikace App Service
- Vytvoření trezoru klíčů
- Vytvoření připojení ke službě Key Vault se spravovanou identitou přiřazenou systémem
- Aktualizace konektorů služby tak, aby ukládaly tajné kódy do trezoru klíčů.
Poznámka:
SECRET_KEY V ideálním případě by se nastavení aplikace mělo nakonfigurovat jako odkaz na trezor klíčů, což je proces s více kroky. Další informace najdete v tématu Jak změnit nastavení aplikace SECRET_KEY na referenci pro Key Vault?
Máte problémy? Projděte si část Řešení potíží.
Nasazení ukázkového kódu
V této části nakonfigurujte nasazení GitHubu pomocí GitHub Actions. Je to jeden z mnoha způsobů nasazení do služby App Service. Je to skvělý způsob, jak mít kontinuální integraci v procesu nasazení. Ve výchozím nastavení spustí každá git push z vašich úložišť GitHub akci sestavení a nasazení.
Krok 1: V nabídce vlevo vyberte Deployment>Deployment Center.
Krok 2: Na stránce Deployment Center :
- Ve zdroji vyberte GitHub. Ve výchozím nastavení je jako zprostředkovatel sestavení vybrán GitHub Actions .
- Přihlaste se ke svému účtu GitHub a postupujte podle pokynů k autorizaci Azure.
- V organizaci vyberte svůj účet.
- V úložišti vyberte msdocs-django-postgresql-sample-app.
- Ve větvi zvolte starter-no-infra. Tato větev je stejná jako ta, ve které jste pracovali s ukázkovou aplikací bez jakýchkoli souborů nebo konfigurace souvisejících s Azure.
- Jako typ ověřování vyberte identitu přiřazenou uživatelem.
- V horní nabídce vyberte Uložit.
App Service potvrdí soubor pracovního postupu do úložiště GitHub v
.github/workflowsadresáři. Ve výchozím nastavení nasazovací centrum vytvoří uživatelsky přiřazenou identitu pro pracovní postup k ověření pomocí ověřování Microsoft Entra (ověřování OIDC). Další možnosti ověřování najdete v tématu Nasazení do služby App Service pomocí GitHub Actions.
Krok 3: Zpět v prostoru kódu GitHubu ukázkového forku spusťte git pull origin starter-no-infra.
Tento příkaz načte nově potvrzený soubor pracovního postupu do vašeho prostoru kódu.
Krok 4 (možnost 1: s GitHub Copilotem):
- Začněte nový chat výběrem zobrazení Chat, pak výběrem +.
- Zeptejte se na @workspace Jak se aplikace připojuje k databázi a redis? Copilot vám může vysvětlit, jak se nastavení konfiguruje v azureproject/development.py a azureproject/production.py.
- Zeptejte se: "@workspace V produkčním režimu je moje aplikace spuštěná ve webové aplikaci App Service, která používá konektor služby Azure k připojení k flexibilnímu serveru PostgreSQL pomocí typu klienta Django. Jaké jsou názvy proměnných prostředí, které potřebuji použít? Copilot vám může poskytnout návrh kódu podobný návrhu v možnosti 2: bez následujících kroků GitHub Copilotu a dokonce vám řekněte, abyste udělali změnu v souboru azureproject/production.py .
- Otevřete azureproject/production.py v průzkumníku a přidejte návrh kódu.
- Zeptejte se, "@workspace Moje aplikace App Service také používá konektor služby Azure Service pro připojení ke službě Cache for Redis pomocí typu klienta Django. "Jaké jsou názvy proměnných prostředí, které potřebuji použít?" Copilot vám může poskytnout návrh kódu podobný tomu z možnosti 2: bez GitHub Copilotu a dokonce vám může říci, abyste provedli změnu v souboru azureproject/production.py.
- Přidejte návrh kódu. GitHub Copilot vám pokaždé nedává stejnou odpověď. Odpovědi nejsou vždy správné. Možná budete muset položit další otázky, abyste vyladili jeho odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?.
Krok 4 (možnost 2: bez GitHub Copilotu):
- V průzkumníku otevřete azureproject/production.py.
- Najděte okomentovaný kód (řádky 29–48) a odkomentujte ho.
Tento kód vytvoří připojení PostgreSQL a Redis pomocí
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOST,AZURE_POSTGRESQL_NAMEaAZURE_REDIS_CONNECTIONSTRING.
Krok 5:
- Vyberte rozšíření správy zdrojů.
- Do textového pole zadejte zprávu potvrzení, například
Configure Azure database and cache connections. Nebo vyberte
a nechte GitHub Copilot vygenerovat potvrzovací zprávu za vás. - Vyberte Potvrdit a potvrďte akcí Ano.
- Vyberte Synchronizovat změny 1 a potvrďte s OK.
Krok 6: Zpět v Centru nasazení na webu Azure Portal:
- Vyberte Protokoly, pak zvolte Aktualizovat pro zobrazení nového spuštění nasazení.
- V položce protokolu pro spuštění nasazení vyberte položku Protokoly Sestavení/Nasazení s nejnovějším časovým razítkem.
Krok 7: Přejdete do úložiště GitHub. Akce GitHubu je spuštěná. Soubor pracovního postupu definuje dvě samostatné fáze, sestavení a nasazení. Počkejte na spuštění GitHubu a zobrazte stav Úspěch. Trvá to asi 5 minut.
Máte problémy? Projděte si průvodce odstraňováním potíží.
Generování schématu databáze
S databází PostgreSQL chráněnou virtuální sítí je nejjednodušší způsob, jak spustit migrace databází Django, v relaci SSH s kontejnerem Linuxu ve službě App Service.
Krok 1: Zpět na stránce služby App Service v nabídce vlevo:
- Vyberte Vývojové nástroje>SSH.
- Vyberte Spustit.
Krok 2: V relaci SSH spusťte python manage.py migratepříkaz . Pokud proběhne úspěšně, služba App Service se úspěšně připojuje k databázi.
Návod
V relaci SSH se změny souborů v /home můžou zachovat i po restartování aplikace. Změny mimo /home se neuchovávají.
Relace SSH je užitečná pro spouštění běžných python manage.py příkazů, jako je vytvoření uživatele pomocí python manage.py createsuperuser. Další informace najdete v tématu django django-admin a manage.py. Pro přístup /admin k části webu použijte účet superuživatele.
Máte problémy? Projděte si část Řešení potíží.
Přechod do aplikace
Krok 1: Na stránce služby App Service :
- V nabídce vlevo vyberte Přehled.
- Vyberte adresu URL aplikace.
Krok 2: Přidejte do seznamu několik restaurací. Gratulujeme! Spouštíte webovou aplikaci ve službě Azure App Service se zabezpečeným připojením ke službě Azure Database for PostgreSQL.
Přenášet diagnostické protokoly
Aplikace Azure Service zachytává všechny protokoly konzoly, které vám pomůžou diagnostikovat problémy s aplikací. Ukázková aplikace obsahuje print() příkazy pro předvedení této funkce.
def index(request):
print('Request for index page received')
restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)
Krok 1: Na stránce služby App Service :
- V nabídce vlevo vyberte Monitorování>protokolů služby App Service.
- V části Protokolování aplikací vyberte Systém souborů.
- V horní nabídce vyberte Uložit.
Krok 2: V nabídce vlevo vyberte Stream protokolu. Zobrazí se protokoly pro vaši aplikaci, včetně protokolů platformy a protokolů z kontejneru.
Další informace o protokolování v aplikacích v Pythonu najdete v tématu Nastavení služby Azure Monitor pro vaši aplikaci v Pythonu.
Vyčistěte zdroje
Po dokončení můžete odstranit všechny prostředky z předplatného Azure odstraněním skupiny prostředků.
Krok 1: Na panelu hledání v horní části webu Azure Portal:
- Zadejte název skupiny prostředků.
- Vyberte tuto skupinu prostředků.
Krok 2: Na stránce skupiny prostředků vyberte Odstranit skupinu prostředků.
Krok 3:
- Pro potvrzení odstranění zadejte název skupiny prostředků.
- Vyberte Odstranit.
Vytvoření prostředků Azure a nasazení ukázkové aplikace
V této části vytvořte prostředky Azure a nasaďte ukázkovou aplikaci do služby App Service v Linuxu. Kroky použité v tomto kurzu vytvoří sadu prostředků zabezpečení ve výchozím nastavení, které zahrnují App Service, Azure Database for PostgreSQL a Azure Cache for Redis.
Vývojový kontejner už má Azure Developer CLI (AZD).
V kořenovém adresáři úložiště spusťte
azd initpříkaz.azd init --template python-app-service-postgresql-infraPo zobrazení výzvy zadejte následující odpovědi:
Otázka Odpověď Aktuální adresář není prázdný. Chcete inicializovat projekt zde v '<vašem adresáři>'? Y Co chcete s těmito soubory dělat? Zachovat stávající soubory beze změny Zadejte nový název prostředí. Zadejte jedinečný název. Šablona AZD používá tento název jako součást názvu DNS vaší webové aplikace v Azure ( <app-name>-<hash>.azurewebsites.net). Jsou povoleny alfanumerické znaky a spojovníky.Přihlaste se k Azure spuštěním příkazu
azd auth logina podle pokynů.azd auth loginPomocí příkazu
azd provisionvytvořte potřebné prostředky Azure. Podle pokynů vyberte požadované předplatné a umístění prostředků Azure.azd provisionDokončení
azd provisionpříkazu trvá přibližně 15 minut. Mezipaměť Redis trvá nejvíce času. Následně upravte kód tak, aby fungoval se službou App Service a nasadit změny pomocíazd deploy. Když je spuštěný, příkaz poskytuje zprávy o procesu zřizování a nasazení. Výstup obsahuje odkaz na nasazení v Azure.Tato šablona AZD obsahuje soubory (azure.yaml a adresář infrastruktury ), které ve výchozím nastavení generují zabezpečenou architekturu s následujícími prostředky Azure:
- Skupina prostředků: Kontejner pro všechny vytvořené prostředky.
- Plán služby App Service: Definuje výpočetní prostředky pro Službu App Service. Vytvoří plán Linuxu na úrovni Basic .
- App Service: Představuje vaši aplikaci a spouští se v plánu služby App Service.
- Virtuální síť: Integrovaná s aplikací App Service a izoluje provoz back-endové sítě.
- Privátní koncové body: Přístupové koncové body pro trezor klíčů a mezipaměť Redis ve virtuální síti.
- Síťová rozhraní: Privátní IP adresy, jedna pro každý privátní koncový bod.
- Flexibilní server Azure Database for PostgreSQL: Přístupný pouze z virtuální sítě. Vytvoří databázi a uživatele na serveru.
- Privátní DNS zóna: Umožňuje vyřešení DNS serveru PostgreSQL ve virtuální síti.
- Pracovní prostor Log Analytics: Slouží jako cílový kontejner vaší aplikace pro přenášení protokolů, kde můžete také vyhledávat protokoly.
- Azure Cache for Redis: Přístupné pouze ze svého privátního koncového bodu.
- Trezor klíčů: Přístupný pouze ze svého privátního koncového bodu. Slouží ke správě tajných kódů pro aplikaci App Service.
Jakmile příkaz dokončí vytváření prostředků a nasazení kódu aplikace poprvé, nasazená ukázková aplikace ještě nefunguje. Pokud se chcete připojit k databázi v Azure, musíte provést malé změny.
Máte problémy? Projděte si část Řešení potíží.
Použijte připojovací řetězec databáze
Šablona AZD, kterou použijete, vygenerovala proměnné připojení pro vás jako nastavení aplikace. Vypíše je do terminálu. Nastavení aplikace je jedním ze způsobů, jak udržovat tajné kódy připojení mimo úložiště kódu.
Ve výstupu AZD vyhledejte nastavení
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOST,AZURE_POSTGRESQL_NAMEaAZURE_REDIS_CONNECTIONSTRING. Pokud chcete tajné kódy zachovat v bezpečí, zobrazí se jenom názvy nastavení. Ve výstupu AZD vypadají takto:App Service app has the following connection settings: - AZURE_POSTGRESQL_NAME - AZURE_POSTGRESQL_HOST - AZURE_POSTGRESQL_USER - AZURE_POSTGRESQL_PASSWORD - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPEŠablona AZD vám pro usnadnění práci ukáže přímý odkaz na stránku nastavení aplikace. Najděte odkaz a otevřete ho na nové kartě prohlížeče.
Máte problémy? Projděte si část Řešení potíží.
Úprava vzorového kódu a opětovné nasazení
V codespace GitHubu spusťte novou chatovací relaci tím, že vyberete zobrazení Chat, a pak vyberete +.
Zeptejte se na @workspace Jak se aplikace připojuje k databázi? Copilot vám může vysvětlit, jak se nastavení připojení konfiguruje v azureproject/development.py a azureproject/production.py.
Zeptejte se: "@workspace V produkčním režimu je moje aplikace spuštěná ve webové aplikaci App Service, která používá konektor služby Azure k připojení k flexibilnímu serveru PostgreSQL pomocí typu klienta Django. Jaké jsou názvy proměnných prostředí, které potřebuji použít? Copilot vám může poskytnout návrh kódu podobný návrhu v možnosti 2: bez následujících kroků GitHub Copilotu a dokonce vám řekněte, abyste udělali změnu v souboru azureproject/production.py .
Otevřete azureproject/production.py v průzkumníku a přidejte návrh kódu.
GitHub Copilot vám pokaždé nedává stejnou odpověď. Odpovědi nejsou vždy správné. Možná budete muset položit další otázky, abyste vyladili jeho odpověď. Tipy najdete v tématu Co můžu dělat s GitHub Copilotem v kódu?.
V terminálu spusťte
azd deploy.azd deploy
Máte problémy? Projděte si část Řešení potíží.
Generování schématu databáze
S databází PostgreSQL chráněnou virtuální sítí je nejjednodušší způsob, jak spustit migrace databází Django, v relaci SSH s kontejnerem Linuxu ve službě App Service.
Ve výstupu AZD vyhledejte adresu URL relace SSH a přejděte na ni v prohlížeči. Ve výstupu to vypadá takto:
Open SSH session to App Service container at: <URL>V relaci SSH spusťte
python manage.py migrate. Pokud je příkaz úspěšný, služba App Service se úspěšně připojuje k databázi.Poznámka:
Kromě restartování aplikace se můžou zachovat jenom změny v
/homesouborech. Změny mimo/homese neuchovávají.
Máte problémy? Projděte si část Řešení potíží.
Přechod do aplikace
Ve výstupu AZD najděte adresu URL aplikace a přejděte na ni v prohlížeči. Adresa URL vypadá takto ve výstupu AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>Přidejte do seznamu několik restaurací.
Gratulujeme! Spouštíte webovou aplikaci ve službě Azure App Service se zabezpečeným připojením ke službě Azure Database for PostgreSQL.
Máte problémy? Projděte si část Řešení potíží.
Přenášet diagnostické protokoly
Aplikace Azure Služba může zaznamenávat protokoly konzoly, které vám pomůžou diagnostikovat problémy s aplikací. Pro usnadnění přístupu už šablona AZD umožňuje protokolování do místního systému souborů a odesílá protokoly do pracovního prostoru služby Log Analytics.
Ukázková aplikace obsahuje print() příkazy k předvedení této funkce, jak je znázorněno v následujícím fragmentu kódu.
def index(request):
print('Request for index page received')
restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)
Ve výstupu AZD vyhledejte odkaz na streamování protokolů služby App Service a přejděte na něj v prohlížeči.
Stream App Service logs at: <URL>
Přečtěte si další informace o protokolování v aplikacích Pythonu v řadě o nastavení služby Azure Monitor pro vaši aplikaci v Pythonu.
Máte problémy? Projděte si část Řešení potíží.
Vyčistěte zdroje
Pokud chcete odstranit všechny prostředky Azure v aktuálním prostředí nasazení, spusťte azd down a postupujte podle pokynů.
azd down
Řešení problému
Tady jsou problémy, se kterými se můžete setkat při pokusu o práci v tomto kurzu a postupu při jejich řešení.
Nemůžu se připojit k relaci SSH
Pokud se nemůžete připojit k relaci SSH, aplikace se sama nespustí. Podrobnosti najdete v diagnostických protokolech . Například pokud se objeví chyba, jako je KeyError: 'AZURE_POSTGRESQL_HOST', může to znamenat, že chybí proměnná prostředí. Možná jste odebrali nastavení aplikace.
Při spouštění migrací databází se zobrazí chyba
Pokud dojde k nějakým chybám souvisejícím s připojením k databázi, zkontrolujte, jestli se nastavení aplikace (AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOSTa AZURE_POSTGRESQL_NAME) nezměnilo nebo odstranilo. Bez toho řetězce připojení nemůže příkaz migrace komunikovat s databází.
Nejčastější dotazy
- Kolik stojí toto nastavení?
- Jak se připojím k serveru PostgreSQL, který je zabezpečený za virtuální sítí, pomocí jiných nástrojů?
- Jak místní vývoj aplikací funguje s GitHub Actions?
- Jak je ukázka Django nakonfigurovaná tak, aby běžela ve službě Aplikace Azure Service?
- Jak změnit nastavení aplikace SECRET_KEY na odkaz Key Vault?
- Jak mohu ladit chyby během nasazení GitHub Actions?
- Nemám oprávnění k vytvoření identity přiřazené uživatelem
- Co můžu dělat s GitHub Copilotem v kódu?
- Kolik stojí toto nastavení?
- Jak se připojím k serveru PostgreSQL, který je zabezpečený za virtuální sítí, pomocí jiných nástrojů?
- Jak místní vývoj aplikací funguje s GitHub Actions?
- Jak je ukázka Django nakonfigurovaná tak, aby běžela ve službě Aplikace Azure Service?
- Jak mohu ladit chyby během nasazení GitHub Actions?
- Nemám oprávnění k vytvoření identity přiřazené uživatelem
- Co můžu dělat s GitHub Copilotem v kódu?
Kolik stojí toto nastavení?
Ceny vytvořených prostředků jsou následující:
- Plán služby App Service se vytvoří na úrovni Basic a dá se vertikálně navýšit nebo snížit. Podívejte se na ceny služby App Service.
- Flexibilní server PostgreSQL je vytvořen v nejnižší úrovni burstable Standard_B1ms s minimální velikostí úložiště, kterou lze škálovat nahoru nebo dolů. Podívejte se na ceny služby Azure Database for PostgreSQL.
- Za virtuální síť se neúčtují poplatky, pokud nenakonfigurujete další funkce, jako je například peering (propojování). Podívejte se na ceny služby Azure Virtual Network.
- Za privátní zónu DNS se účtují malé poplatky. Podívejte se na ceny Azure DNS.
Jak se mohu připojit k serveru PostgreSQL, který je chráněný virtuální sítí, pomocí jiných nástrojů?
- Pro základní přístup z nástroje příkazového řádku můžete spustit
psqlpři relaci SSH aplikace. - Pokud se chcete připojit z desktopového nástroje, musí být váš počítač ve virtuální síti. Může to být například virtuální počítač Azure, který je připojený k jedné z podsítí, nebo počítač v místní síti, který má připojení VPN typu site-to-site s virtuální sítí Azure.
- Azure Cloud Shell můžete také integrovat s virtuální sítí.
Jak místní vývoj aplikací funguje s GitHub Actions?
Když jako příklad použijete automaticky vygenerovaný soubor pracovního postupu ze služby App Service, každé git push zahájí sestavení a nasazení. Z místního klonu úložiště GitHub provedete požadované aktualizace a nasdílíte je na GitHub. Příklad:
git add .
git commit -m "<some-message>"
git push origin main
Jak je ukázka Django nakonfigurovaná tak, aby běžela ve službě Aplikace Azure Service?
Ukázková aplikace Django konfiguruje nastavení v souboru azureproject/production.py tak, aby se mohlo spustit ve službě Aplikace Azure Service. Tyto změny jsou běžné pro nasazení Django do produkčního prostředí, a ne specifické pro Službu App Service.
Django ověří hlavičku HTTP_HOST příchozích požadavků. Ukázkový kód používá proměnnou
WEBSITE_HOSTNAMEprostředí ve službě App Service k přidání názvu domény aplikace do nastavení ALLOWED_HOSTS Django.# Configure the domain name using the environment variable # that Azure automatically creates for us. ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []Django nepodporuje obsluhu statických souborů v produkčním prostředí. Pro účely tohoto kurzu použijete WhiteNoise k povolení obsluhy souborů. Balíček WhiteNoise byl již nainstalován s requirements.txt a jeho middleware se přidá do seznamu.
# WhiteNoise configuration MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', # Add whitenoise middleware after the security middleware 'whitenoise.middleware.WhiteNoiseMiddleware',Nastavení statického souboru se pak nakonfiguruje podle dokumentace Django.
SESSION_ENGINE = "django.contrib.sessions.backends.cache" STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Další informace naleznete v tématu Produkční nastavení pro aplikace Django.
Jak mohu změnit nastavení aplikace SECRET_KEY na referenci na Key Vault?
Z popsaných kroků na webu Azure Portal můžete přejít SECRET_KEY na referenci ke službě Key Vault spuštěním následujících příkazů Azure CLI v Cloud Shellu:
# Change the following variables to match your environment
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
KEY_VAULT_NAME=<key-vault-name>
APP_SERVICE_NAME=<app-name>
SECRET_NAME=djangoSecretKey
# Set the subscription ID
az account set --subscription $SUBSCRIPTION_ID
# Assign 'Key Vault Secrets Officer' role to your user at the scope of the key vault
az role assignment create \
--assignee $(az ad signed-in-user show --query id -o tsv) \
--role $(az role definition list --name "Key Vault Secrets Officer" --query "[].id" -o tsv) \
--scope $(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
# Add the secret to the key vault
az keyvault secret set \
--vault-name $KEY_VAULT_NAME \
--name $SECRET_NAME \
--value $(python -c 'import secrets; print(secrets.token_hex())')
# Add Key Vault reference to the App Service configuration
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APP_SERVICE_NAME \
--settings "SECRET_KEY=@Microsoft.KeyVault(SecretUri=https://$KEY_VAULT_NAME.vault.azure.net/secrets/$SECRET_NAME)"
Totéž můžete udělat i na portálu. Další informace naleznete v tématu:
Jak ladit chyby během nasazení GitHub Actions?
Pokud v automaticky vygenerovaném souboru pracovního postupu GitHubu selže krok, zkuste upravit neúspěšný příkaz a vygenerovat více podrobného výstupu. Můžete například získat další výstup z python příkazu přidáním -d možnosti. Potvrďte a nasdílejte změny, aby se aktivovalo další nasazení do služby App Service.
Nemám oprávnění k vytvoření uživatelsky přiřazené identity.
Vizte Nastavte nasazení GitHub Actions z Centra nasazení.
Co můžu dělat s GitHub Copilotem v kódu?
Zobrazení chatu GitHub Copilot bylo k dispozici již při vytváření kódového prostoru. Pro usnadnění práce zahrneme rozšíření chatu GitHub Copilot do definice kontejneru (viz .devcontainer/devcontainer.json). Potřebujete ale účet GitHub Copilot (k dispozici je 30denní bezplatná zkušební verze).
Několik tipů pro vás při komunikaci s GitHub Copilotem:
- V rámci jedné chatové relace se otázky a odpovědi doplňují, a můžete upravit své otázky pro přesnější odpovědi, které obdržíte.
- GitHub Copilot ve výchozím nastavení nemá přístup k žádnému souboru ve vašem úložišti. Pokud chcete položit otázky k souboru, otevřete ho nejprve v editoru.
- Pokud chcete, aby GitHub Copilot měl při přípravě odpovědí přístup ke všem souborům v úložišti, začněte svou otázkou
@workspace. Další informace najdete na webu Use the @workspace agent. - V chatové relaci může GitHub Copilot navrhovat změny a (s
@workspace) dokonce i tam, kde se mají změny provádět, ale změny za vás nesmí provádět. Je na vás přidat navrhované změny a otestovat je.
Související obsah
V dalším kurzu se dozvíte, jak zabezpečit aplikaci pomocí vlastní domény a certifikátu.
Nebo se dozvíte, jak App Service spouští aplikaci v Pythonu: