Megosztás a következőn keresztül:


Python Django-webalkalmazás üzembe helyezése a PostgreSQL-lel az Azure-ban

Ebben az oktatóanyagban egy adatvezérelt Python-webalkalmazást (Django) fog üzembe helyezni az Azure App Service-ben az Azure Database for PostgreSQL relációs adatbázis-szolgáltatással. Az Azure App Service linuxos kiszolgálói környezetben támogatja a Pythont . Ha szeretné, tekintse meg inkább a Flask-oktatóanyagot vagy a FastAPI-oktatóanyagot .

Architektúradiagram egy App Service-ről egy PostgreSQL-adatbázissal az Azure-ban.

Ebben az oktatóanyagban a következőket sajátíthatja el:

  • Hozzon létre egy biztonságos alapértelmezett App Service-, PostgreSQL- és Redis Cache-architektúrát.
  • A kapcsolati titkos kulcsok biztonságossá tételéhez használjon felügyelt identitást és Key Vault-hivatkozásokat.
  • Beteszel egy minta Python alkalmazást az App Service-be egy GitHub tárházból.
  • Az alkalmazás kódban érje el az App Service kapcsolati karakterláncokat és alkalmazás beállításokat.
  • Frissítse a programkódot, és telepítse újra az alkalmazást.
  • Adatbázis séma generálása az adatbázis-migrációk futtatásával.
  • Streameljen diagnosztikai naplókat az Azure-ból.
  • Az alkalmazás kezelését végezze az Azure portálon.
  • Hozza létre ugyanazt az architektúrát, és telepítse az Azure Developer CLI segítségével.
  • Optimalizálja fejlesztési munkafolyamatát a GitHub Codespaces és a GitHub Copilot segítségével.

Előfeltételek

Ugrás a végére

Ha csak látni szeretné a mintaalkalmazást ebben az oktatóanyagban, amely az Azure-ban fut, futtassa a következő parancsokat az Azure Cloud Shellben, és kövesse a következő utasításokat:

mkdir msdocs-django-postgresql-sample-app
cd msdocs-django-postgresql-sample-app
azd init --template msdocs-django-postgresql-sample-app
azd up

1. A minta futtatása

Először hozz létre egy minta adatalapú alkalmazást kiindulási pontként. Az Ön kényelme érdekében a mintaadattár tartalmaz egy fejlesztői tárolókonfigurációt . A fejlesztői konténer mindent tartalmaz, amire szükség van egy alkalmazás fejlesztéséhez, beleértve az adatbázist, a gyorsítótárat és minden környezeti változót, amelyre a mintaalkalmazásnak szüksége van. A fejlesztői tároló egy GitHub-kódtérben futtatható, ami azt jelenti, hogy a mintát bármely számítógépen futtathatja webböngészővel.

Megjegyzés

Ha ezt az oktatóanyagot a saját alkalmazásával együtt követi, tekintse meg a README.mdrequirements.txt fájlleírását, hogy lássa, milyen csomagokra lesz szüksége.

1. lépés: Új böngészőablakban:

  1. Jelentkezzen be a GitHub-fiókjába.
  2. Lépjen a https://github.com/Azure-Samples/msdocs-django-postgresql-sample-app/fork oldalra.
  3. Törölje a jelölést : Csak a főág másolása. Akarod az összes ágat.
  4. Válassza az Elágazás létrehozása opciót.

2. lépés: A GitHub-elágazásban:

  1. Válassza a >starter-no-infra ágat a kezdő ághoz. Ez az ág csak a példaprojektet tartalmazza, és nincsenek benne Azure-hoz kapcsolódó fájlok vagy konfigurációk.
  2. Válassza a Kód>Kódteret hoz létre a starter-no-infra-en. A kódtér néhány percet vesz igénybe a beállítás során, és a végén lefuttatja a pip install -r requirements.txt a repozitóriumod számára. Emellett a megadott .env fájl már tartalmaz egy próbaváltozótSECRET_KEY, amelyet a Django-nak helyileg kell futtatnia.

3. lépés: A kódtér termináljában:

  1. Hajtsa végre az adatbázis-migrációkat python manage.py migrate segítségével.
  2. Futtassa az alkalmazást a python manage.py runserver-vel.
  3. Amikor megjelenik az értesítés Your application running on port 8000 is available., válassza a Megnyitás böngészőben lehetőséget. A mintaalkalmazásnak egy új böngészőfülön kellene megjelennie. Az alkalmazás leállításához írja be Ctrl+C.

Tipp

Erről az adattárról a GitHub Copilotot is megkérdezheti. Például:

  • @workspace Mit tesz ez a projekt?
  • @workspace Mit tesz a .devcontainer mappa?

Problémáid vannak? Tekintse meg a hibaelhárítási szakaszt.

2. Hozzon létre alkalmazásszolgáltatást, adatbázist és gyorsítótárat

Ebben a lépésben létrehozza az Azure-erőforrásokat. A bemutatóban használt lépések egy alapértelmezés szerint biztonságos erőforráskészletet hoznak létre, amely magában foglalja az App Service-t, az Azure Database for PostgreSQL-t és az Azure Cache-t. A létrehozási folyamat során a következőket kell megadnia:

  • A webalkalmazás neve . Az alkalmazás DNS-nevének részeként használják.
  • Az a régió, ahol az alkalmazás fizikailag fut a világban. Az alkalmazásod DNS-nevének részeként is használatos.
  • Az alkalmazás futtatókörnyezeti vereme . Itt választhatja ki az alkalmazáshoz használni kívánt Python-verziót.
  • Az alkalmazás üzemeltetési terve . Ez az árazási szint, amely tartalmazza az alkalmazás szolgáltatáskészletét és méretezési kapacitását.
  • Az alkalmazás erőforráscsoportja . Egy erőforráscsoport lehetővé teszi az összes alkalmazáshoz szükséges Azure erőforrások csoportosítását (egy logikai tárolóba).

Jelentkezzen be az Azure Portalra , és kövesse az alábbi lépéseket az Azure App Service-erőforrások létrehozásához.

1. lépés: Az Azure Portalon:

  1. Írja be a "web app database" kifejezést az Azure portál tetején található keresősávba.
  2. Válassza ki a Web App + Adatbázis címkével ellátott elemet a Marketplace címsora alatt. A létrehozási varázslót közvetlenül is megnyithatja.

2. lépés: A Webalkalmazás létrehozása + Adatbázis lapon töltse ki az űrlapot az alábbiak szerint.

  1. Erőforráscsoport: Válassza az Új létrehozása lehetőséget , és használja az msdocs-django-postgres-tutorial nevet.
  2. Régió: Bármely Önhöz közeli Azure-régió.
  3. Név: msdocs-python-postgres-XYZ.
  4. Futtatókörnyezeti verem: Python 3.14.
  5. Adatbázis: PostgreSQL – A rugalmas kiszolgáló alapértelmezés szerint adatbázismotorként van kiválasztva. A szerver neve és az adatbázis neve is alapértelmezés szerint megfelelő értékekre vannak beállítva.
  6. Azure Cache for Redis hozzáadása: Igen.
  7. Üzemeltetési terv: Alapszintű. Amikor készen állsz, átválthatsz egy termelési árazási szintre.
  8. Válassza a Véleményezés + létrehozás lehetőséget.
  9. Az ellenőrzés befejezése után válassza a Létrehozás lehetőséget.

3. lépés: Az üzembe helyezés végrehajtása néhány percet vesz igénybe. Az üzembe helyezés befejeződése után válassza az Erőforrás megnyitása gombot. Közvetlenül az App Service alkalmazáshoz kerülsz, de a következő erőforrások jönnek létre:

  • Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
  • App Service-csomag: Meghatározza az App Service számítási erőforrásait. Egy Linux terv jön létre az Alap szinten.
  • App Service: Az alkalmazást jelöli, és az App Service-csomagban fut.
  • Virtuális hálózat: Integrálva az App Service alkalmazással, és elkülöníti a háttérhálózat forgalmát.
  • Privát végpont: Hozzáférési végpont a Redis-gyorsítótárhoz a virtuális hálózaton.
  • Hálózati adapterek: Magánhálózati IP-címeket jelöl, egyet a privát végpontokhoz.
  • Azure Database for PostgreSQL rugalmas kiszolgáló: Csak a virtuális hálózaton belülről érhető el. Az Ön számára létrehozunk egy adatbázist és egy felhasználót a szerveren.
  • Azure Cache for Redis: Csak a magánhálózata mögött érhető el.
  • Privát DNS-zónák: Engedélyezi annak az adatbázis-kiszolgálónak a DNS-feloldását, amely a Redis-gyorsítótárat használja a virtuális hálózaton.

3. Biztosítsa a kapcsolat titkos adatait, és adja hozzá a SECRET_KEY értéket.

A létrehozási varázsló már alkalmazásbeállításokként létrehozta a kapcsolati változókat. A legjobb biztonsági gyakorlat az, hogy teljes mértékben távol tartsuk a titkokat az App Service-től. A titkos kulcsokat egy kulcstartóba helyezi át, és a Service Connectors segítségével kulcstartó-hivatkozásokra módosítja az alkalmazásbeállítást.

1. lépés: A meglévő kapcsolati sztring lekérése

  1. Az App Service lap bal oldali menüjében válassza a Beállítások > környezet változói lehetőséget.
  2. Válassza a AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. Az Alkalmazás hozzáadása/szerkesztése beállításÉrték mezőjében keresse meg a jelszó= részt a sztring végén.
  4. Másolja ki a jelszó karaktersorozatát a password= után későbbi használatra. Az alkalmazásbeállítások lehetővé teszik, hogy csatlakozz a Postgres adatbázishoz és a Redis gyorsítótárhoz, amelyek privát végpontok mögött vannak biztosítva. Azonban a titkok közvetlenül az App Service alkalmazásban vannak elmentve, ami nem a legjobb megoldás. Meg fogja változtatni ezt. Ezenkívül hozzá fog adni egy SECRET_KEY beállítást, amely szükséges a Django alkalmazásának.

2. lépés: Kulcstartó létrehozása a titkos kódok biztonságos kezeléséhez

  1. A felső keresősávon írja be a "key vault" kifejezést, majd válassza a Marketplace>Key Vault lehetőséget.
  2. Az Erőforráscsoportban válassza az msdocs-python-postgres-tutorial lehetőséget.
  3. A Key Vault nevében írjon be egy nevet, amely csak betűkből és számokból áll.
  4. A Régióban állítsa be az erőforráscsoporthoz hasonló helyre.

3. lépés: A kulcstartó védelme privát végponttal

  1. Válassza a Hálózatkezelés lapot.
  2. Törölje a jelölést a nyilvános hozzáférés engedélyezése jelölőnégyzetből.
  3. Válassza a Privát végpont létrehozása lehetőséget.
  4. Az Erőforráscsoportban válassza az msdocs-python-postgres-tutorial lehetőséget.
  5. A párbeszédpanel Hely részén válassza ki ugyanazt a helyet, mint az App Service alkalmazása.
  6. A neve mezőbe írja be a következőt: msdocs-python-postgres-XYZVaultEndpoint.
  7. A virtuális hálózatban válassza az msdocs-python-postgres-XYZVnet lehetőséget.
  8. Az alhálózatbanmsdocs-python-postgres-XYZSubnet.
  9. Válassza az OK gombot.
  10. Válassza az Ellenőrzés és létrehozás lehetőséget, majd a Létrehozás lehetőséget. Várja meg, amíg a kulcstár telepítése befejeződik. Látnia kellene a "Telepítés befejeződött" üzenetet.

4. lépés: A PostgreSQL-összekötő konfigurálása

  1. A felső keresősávba írja be az msdocs-python-postgres kifejezést, majd válassza ki az msdocs-python-postgres-XYZ nevű App Service-erőforrást.
  2. Az App Service lap bal oldali menüjében válassza a Beállítások > szolgáltatás-összekötő lehetőséget. Már két csatlakozó van, amelyet az alkalmazás létrehozási varázsló készített el neked.
  3. Jelölje be a PostgreSQL-összekötő melletti jelölőnégyzetet, majd válassza a Szerkesztés lehetőséget.
  4. Ügyféltípusban válassza a Django lehetőséget. A Django-ügyféltípus a PostgreSQL szolgáltatás-összekötőben egy kapcsolati sztring helyett külön beállításokban adja meg az adatbázis változóit. A különálló változók könnyebben használhatók Django adatbázis-beállításaiban.
  5. Válassza a Hitelesítés lapot.
  6. A Jelszó mezőbe illessze be a korábban másolt jelszót.
  7. Válassza a Titkos kulcs tárolása lehetőséget a Key Vaultban.
  8. A Key Vault-kapcsolat területen válassza az Új létrehozása lehetőséget. A szerkesztési párbeszédpanel tetején megnyílik a Kapcsolat létrehozása párbeszédpanel.

5. lépés: A Key Vault-kapcsolat létrehozása

  1. A Kapcsolat létrehozása a Key Vault-tal párbeszédpanelen, a Key Vault részben válassza ki a korábban létrehozott kulcstárat.
  2. Válassza a Véleményezés + Létrehozás lehetőséget.
  3. Amikor az ellenőrzés befejeződött, válassza a Létrehozás lehetőséget.

6. lépés: A PostgreSQL-összekötő beállításainak véglegesítése

  1. Ismét az alapértelmezett csatlakozó szerkesztési párbeszédpanelében van. A Hitelesítés lapon várja meg, amíg létrejön a Key Vault-összekötő. Ha elkészült, a Key Vault kapcsolat legördülő listája automatikusan kiválasztja azt.
  2. Válassza a Tovább: Hálózatkezelés lehetőséget.
  3. Válassza a Mentés lehetőséget. Várja meg, amíg megjelenik a frissítés sikeres értesítése.

7. lépés: A Redis-összekötő konfigurálása Key Vault-titkos kulcsok használatára

  1. A Service Connectors (Szolgáltatásösszekötők) lapon jelölje be a Cache for Redis összekötő melletti jelölőnégyzetet, majd válassza a Szerkesztés lehetőséget.
  2. Válassza a Hitelesítés lapot.
  3. Válassza a Titkos kulcs tárolása lehetőséget a Key Vaultban.
  4. A Key Vault-kapcsolat területen válassza ki a létrehozott kulcstartót.
  5. Válassza a Tovább: Hálózatkezelés lehetőséget.
  6. Válassza a Tűzfalszabályok konfigurálása lehetőséget a célszolgáltatáshoz való hozzáférés engedélyezéséhez. Az alkalmazás készítési varázsló már biztosította az SQL adatbázist egy privát végponttal.
  7. Válassza a Mentés lehetőséget. Várja meg, amíg megjelenik a frissítés sikeres értesítése.

8. lépés: A Key Vault integrációjának ellenőrzése

  1. A bal oldali menüben válassza ismét a Beállítások > környezet változói lehetőséget.
  2. A AZURE_POSTGRESQL_PASSWORD mellett válassza az Érték megjelenítése lehetőséget. Az értéknek meg kell lennie @Microsoft.KeyVault(...), ami azt jelenti, hogy ez egy kulcstartó-hivatkozás , mert a titkos kulcs most már a kulcstartóban van kezelve.
  3. A Redis kapcsolati sztringjének ellenőrzéséhez válassza a AZURE_REDIS_CONNECTIONSTRING melletti Érték megjelenítése lehetőséget.

9. lépés: A mintaalkalmazás beolvassa a SECRET_KEY környezeti változót a szükséges SECRET_KEY beállítás beállításához. Ezen a lépésen alkalmazásbeállításként hozod létre.

  1. Az Alkalmazásbeállítások lapon válassza a Hozzáadás lehetőséget.
  2. Állítsd be a név értékét SECRET_KEY-re.
  3. Állítsa be az Értéket egy hosszú, véletlenszerű karaktersorra.
  4. Kattintson az Alkalmaz, majd ismét az Alkalmaz, végül a Megerősítés gombra.

Összefoglalva, a kapcsolat titkosítással kapcsolatos folyamat során:

  • A kapcsolati titkok visszakeresése az App Service alkalmazás környezeti változói közül.
  • Kulcstár létrehozása.
  • A rendszer által rendelt kezelt identitással való Key Vault kapcsolat létrehozása.
  • A szolgáltatáskapcsolók frissítése, hogy a titkokat a kulcstárban tárolják.

Megjegyzés

Ideális esetben a SECRET_KEY alkalmazás beállítást is úgy kell konfigurálni, hogy az egy kulcstár hivatkozás legyen, ami egy több lépésből álló folyamat. További információ: Hogyan módosíthatom a SECRET_KEY alkalmazásbeállítást Key Vault-referenciára?

Problémáid vannak? Tekintse meg a hibaelhárítási szakaszt.


4. Mintakód telepítése

Ebben a lépésben konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Ez csak egy a sok lehetőség közül, hogy az App Service-be telepítsünk, de szintén remek módja annak, hogy megszakítás nélküli integráció legyen a telepítési folyamatunkban. Alapértelmezés szerint, minden git push a GitHub tárházadhoz elindítja az építési és telepítési folyamatot.

1. lépés: A bal oldali menüben válassza az Üzembehelyezési>központ lehetőséget.

2. lépés: Az Üzembe helyezési központ lapon:

  1. A Forrás területen válassza a GitHubot. Alapértelmezés szerint a GitHub Actions van kiválasztva buildszolgáltatóként.
  2. Jelentkezzen be a GitHub fiókjába, és kövesse az utasítást, hogy engedélyezze az Azure-t.
  3. A Szervezetben válassza ki a fiókját.
  4. Az Adattárban válassza az msdocs-django-postgresql-sample-app lehetőséget.
  5. Az Ágazat menüpontban válassza a starter-no-infra nevű lehetőséget. Ez ugyanaz az ág, amelyen a mintaprogramoddal dolgoztál, Azure-hozzá kapcsolódó fájlok vagy konfiguráció nélkül.
  6. Hitelesítési típus esetén válassza a felhasználó által hozzárendelt identitást.
  7. A felső menüben válassza a Mentés lehetőséget. App Szolgáltatás elkötelez egy munkafolyamat fájlt a választott GitHub tárolóba, a .github/workflows könyvtárban. Alapértelmezés szerint az üzembehelyezési központ létrehoz egy felhasználó által hozzárendelt identitást a munkafolyamathoz a Microsoft Entra (OIDC-hitelesítés) használatával történő hitelesítéshez. Alternatív hitelesítési lehetőségekért lásd : Üzembe helyezés az App Service-ben a GitHub Actions használatával.

3. lépés: Futtassa git pull origin starter-no-infraújra a mintaelágazás GitHub-kódterében. Ez beemeli az újonnan elkötelezett munkafolyamat-fájlt a kódtérbe.

4. lépés (1. lehetőség: a GitHub Copilottal):

  1. Indítsa el az új csevegési munkamenetet a Csevegés nézet kiválasztásával, majd válassza a +lehetőséget.
  2. Kérdezze meg a következőt: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz és a redishez?". A Copilot esetleg magyarázatot ad a beállítások azureproject/development.py és azureproject/production.py konfigurálásáról.
  3. Kérdezze meg a következőt: "@workspace Éles módban az alkalmazás egy App Service-webalkalmazásban fut, amely az Azure Service Connector használatával csatlakozik egy rugalmas PostgreSQL-kiszolgálóhoz a Django-ügyféltípus használatával. Milyen környezeti változóneveket kell használnom?" Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad : a GitHub Copilot alábbi lépései nélkül, és akár azt is megmondhatja, hogy végezze el a módosítást az azureproject/production.py fájlban.
  4. Nyissa meg az azureproject/production.py az Explorerben, és adja hozzá a kódjavaslatot.
  5. Kérdezd meg, "@workspace Az App Service alkalmazásom az Azure Service Connector-t is használja a Redis gyorsítótárhoz való kapcsolódáshoz a Django kliens típusával. Milyen környezeti változóneveket kell használnom?*" A Copilot a 2. lehetőséghez hasonló kódjavaslatot adhat önnek: a GitHub Copilot alábbi lépései nélkül, és akár azt is megmondhatja, hogy végezze el a módosítást az azureproject/production.py fájlban.
  6. Adja hozzá a kódjavaslatot. A GitHub Copilot nem adja ugyanazt a választ minden alkalommal, és nem mindig helyes. Lehet, hogy további kérdéseket kell feltenned, hogy finomhangold a válaszát. Tippekért lásd: Mit tehetek a GitHub Copilottal a kódtérben?

4. lépés (2. lehetőség: a GitHub Copilot nélkül):

  1. Nyissa meg az azureproject/production.py az explorerben.
  2. Keresd meg a kommentelt kódot (29-48. sorok), majd távolítsd el a megjegyzéseket. Ez létrehozza a PostgreSQL és Redis kapcsolatokat AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST, AZURE_POSTGRESQL_NAME és AZURE_REDIS_CONNECTIONSTRING használatával.

5. lépés:

  1. Válassza ki a Forrásvezérlő bővítményt.
  2. A szövegdobozba írjon be egy commit üzenetet, például Configure Azure database and cache connections. Vagy válassza a lehetőséget, és engedje, hogy a GitHub Copilot létrehozzon egy commit üzenetet Önnek.
  3. Válassza a Véglegesítés lehetőséget, majd erősítse meg igennel.
  4. Válassza a Módosítások szinkronizálása 1 lehetőséget, majd erősítse meg az OK gombot.

6. lépés: Vissza az Üzembehelyezési központ lapra az Azure Portalon:

  1. Válassza a Naplók lapot, majd a Frissítés lehetőséget az új üzembe helyezés futtatásának megtekintéséhez.
  2. Az üzembe helyezési futtatás naplóelemében válassza ki a Build/Deploy Logs bejegyzést a legújabb időbélyeggel.

7. lépés: A rendszer a GitHub-adattárba viszi, és láthatja, hogy a GitHub-művelet fut. A munkafolyamat fájl két különálló szakaszt határoz meg: építés és telepítés. Várja meg, amíg a GitHub-futtatás sikeres állapotot jelenít meg. Körülbelül 5 percet vesz igénybe.

Problémáid vannak? Tekintse meg a hibaelhárítási útmutatót.

5. Adatbázis séma generálása

A virtuális hálózat által védett PostgreSQL-adatbázissal a Django-adatbázisok migrálásának legegyszerűbb módja egy SSH-munkamenet, amelyen az App Service Linux-tárolója található.

1. lépés: Vissza az App Service lapra a bal oldali menüben,

  1. Válassza a Development Tools>SSH lehetőséget.
  2. Válassza az Ugrás lehetőséget.

2. lépés: Az SSH-munkamenetben futtassa a következőt python manage.py migrate: . Ha sikerül, az App Service sikeresen kapcsolódik az adatbázishoz.

Tipp

Az SSH munkamenetben csak a /home könyvtárban lévő fájlok módosításai maradhatnak meg az alkalmazás újraindításai után. A /home-n kívüli módosítások nem maradnak meg. Az SSH munkamenet hasznos a gyakori python manage.py parancsok futtatására, például a felhasználók létrehozására a python manage.py createsuperuser segítségével. További információ: django django-admin és manage.py dokumentációja. Használja a szuperfelhasználói fiókot a weboldal /admin részének eléréséhez.

Problémáid vannak? Tekintse meg a hibaelhárítási szakaszt.

6. Tallózzon az alkalmazáshoz

1. lépés: Az App Service oldalán:

  1. A bal oldali menüben válassza az Áttekintés lehetőséget.
  2. Válassza ki az alkalmazás URL-jét.

2. lépés: Vegyen fel néhány éttermet a listára. Gratulálunk, most egy webalkalmazást futtatsz az Azure App Service-ben, biztonságos kapcsolattal az Azure Database for PostgreSQL-hez.

7. Diagnosztikai naplók streamelése

A Azure App Service rögzíti az összes konzolnaplót, hogy segítsen az alkalmazásával kapcsolatos problémák diagnosztizálásában. A mintaalkalmazás tartalmaz print() utasításokat, hogy bemutassa ezt a képességet, ahogy az alább látható.

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)

1. lépés: Az App Service oldalán:

  1. A bal oldali menüben válassza azApp Service-naplók> lehetőséget.
  2. Az Alkalmazásnaplózás területen válassza a Fájlrendszer lehetőséget.
  3. A felső menüben válassza a Mentés lehetőséget.

2. lépés: A bal oldali menüben válassza a Naplóstream lehetőséget. Ön látja az alkalmazás naplóit, beleértve a platformnaplókat és a konténer belsejéből származó naplókat.

Tudjon meg többet a Python-alkalmazásokban való naplózásról az Azure Monitor Python-alkalmazáshoz való beállításáról szóló sorozatunkban.

8. Erőforrások törlése

Miután végzett, törölheti az összes erőforrást az Azure-előfizetéséből az erőforráscsoport törlésével.

1. lépés: Az Azure Portal tetején található keresősávon:

  1. Adja meg az erőforráscsoport nevét.
  2. Válassza ki az erőforráscsoportot.

2. lépés: Az erőforráscsoport lapján válassza az Erőforráscsoport törlése lehetőséget.

3. lépés:

  1. A törlés megerősítéséhez adja meg az erőforráscsoport nevét.
  2. Válassza a Törlés lehetőséget.

2. Hozzon létre Azure erőforrásokat, és telepítsen egy mintaalkalmazást.

Ebben a lépésben létrehozod az Azure erőforrásokat, és telepítesz egy mintapéldány alkalmazást az App Service szolgáltatásra Linuxon. Az ebben az útmutatóban használt lépések egy alapértelmezés szerint biztonságos erőforráskészletet hoznak létre, amely magában foglalja az App Service-t, az Azure Database for PostgreSQL-t és az Azure Cache for Redis-t.

A fejlesztői tárolóban már megtalálható az Azure Developer CLI (AZD).

  1. A verziókezelő gyökérkönyvtárából futtassa a azd init parancsot.

    azd init --template python-app-service-postgresql-infra
    
  2. Amikor megkérdezik, adja meg a következő válaszokat:

    Kérdés Válasz
    A jelenlegi könyvtár nem üres. Szeretne kezdeményezni egy projektet itt: '<your-directory>'? Y
    Mit szeretne tenni ezekkel a fájlokkal? Meglévő fájljaim változatlanul tartása
    Adjon meg egy új környezetnevet Írja be egy egyedi nevet. Az AZD sablon a DNS-név részeként használja ezt a nevet az Ön webalkalmazásához az Azure-ban (<app-name>-<hash>.azurewebsites.net). Alfanumerikus karakterek és kötőjelek megengedettek.
  3. Az Azure-ba való belépéshez futtassa a azd auth login parancsot, és kövesse az utasításokat.

    azd auth login
    
  4. Hozza létre a szükséges Azure-erőforrásokat a azd provision paranccsal. Kövesse az utasítást, hogy kiválassza a kívánt előfizetést és helyszínt az Azure-erőforrásokhoz.

    azd provision
    

    A azd provision parancs körülbelül 15 percet vesz igénybe a befejezéshez (a legtöbb időt a Redis cache veszi igénybe). Később módosítja a kódját, hogy működjön az App Service-szel, és telepíti a változásokat a(z) azd deploy segítségével. Miközben fut, a parancs üzeneteket biztosít az ellátási és telepítési folyamatról, beleértve egy linket az Azure-ban történő telepítéshez.

    Ez az AZD-sablon olyan fájlokat (azure.yaml és infra könyvtár) tartalmaz, amelyek az alábbi Azure-erőforrásokkal létrehoznak egy alapértelmezett, biztonságos architektúrát:

    • Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
    • App Service-csomag: Meghatározza az App Service számítási erőforrásait. Egy Linux terv jön létre az Alap szinten.
    • App Service: Az alkalmazást jelöli, és az App Service-csomagban fut.
    • Virtuális hálózat: Integrálva az App Service alkalmazással, és elkülöníti a háttérhálózat forgalmát.
    • Privát végpontok: Hozzáférési végpontok a kulcstartóhoz és a Redis-gyorsítótárhoz a virtuális hálózaton.
    • Hálózati adapterek: Magánhálózati IP-címeket jelöl, egyet a privát végpontokhoz.
    • Azure Database for PostgreSQL rugalmas kiszolgáló: Csak a virtuális hálózaton belülről érhető el. Az Ön számára létrehozunk egy adatbázist és egy felhasználót a szerveren.
    • Privát DNS-zóna: Engedélyezi a PostgreSQL-kiszolgáló DNS-feloldását a virtuális hálózaton.
    • Log Analytics-munkaterület: Az alkalmazás céltárolójaként szolgál a naplók elküldéséhez, ahol a naplókat is lekérdezheti.
    • Azure Cache for Redis: Csak a privát végpontja mögött érhető el.
    • Key Vault: Csak a privát végpontja mögött érhető el. Titkok kezelésére használt az App Service alkalmazás számára.

    Amikor a parancs befejezi az erőforrások létrehozását és az alkalmazás kódjának először való telepítését, a telepített mintafelhasználói alkalmazás még nem működik, mert kisebb változtatásokat kell eszközölnie, hogy az alkalmazás kapcsolódni tudjon az Azure-ban található adatbázishoz.

Problémáid vannak? Tekintse meg a hibaelhárítási szakaszt.

3. Használja az adatbázis csatlakozási karakterláncát

Az Ön által használt AZD-sablon már alkalmazásbeállításokként létrehozta a kapcsolati változókat, és azokat az ön kényelme érdekében a terminálon adja ki. Az alkalmazásbeállítások egy módja annak, hogy a kapcsolat titkait távol tartsuk a kódtárunktól.

  1. Az AZD kimenetben keresse meg a beállításokat AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST, AZURE_POSTGRESQL_NAME, és AZURE_REDIS_CONNECTIONSTRING. A titkok biztonsága érdekében csak a beállítások nevei vannak megjelenítve. Így néznek ki az AZD kimenetében:

     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
     
  2. Az ÖN kényelme érdekében az AZD-sablon az alkalmazás alkalmazásbeállítási oldalára mutató közvetlen hivatkozást jeleníti meg. Keresse meg a hivatkozást, és nyissa meg egy új böngészőlapon.

Problémáid vannak? Tekintse meg a hibaelhárítási szakaszt.

4. Módosítsa a mintakódot, és telepítse újra.

  1. A GitHub-kódtérben indítsa el az új csevegési munkamenetet a Csevegés nézet kiválasztásával, majd válassza a lehetőséget +.

  2. Kérdezze meg a következőt: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz?" A Copilot magyarázattal szolgál a kapcsolati beállítások azureproject/development.py és azureproject/production.py konfigurálásáról.

  3. Kérdezze meg a következőt: "@workspace Éles módban az alkalmazás egy App Service-webalkalmazásban fut, amely az Azure Service Connector használatával csatlakozik egy rugalmas PostgreSQL-kiszolgálóhoz a Django-ügyféltípus használatával. Milyen környezeti változóneveket kell használnom?" Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad : a GitHub Copilot alábbi lépései nélkül, és akár azt is megmondhatja, hogy végezze el a módosítást az azureproject/production.py fájlban.

  4. Nyissa meg az azureproject/production.py az Explorerben, és adja hozzá a kódjavaslatot.

    A GitHub Copilot nem adja ugyanazt a választ minden alkalommal, és nem mindig helyes. Lehet, hogy további kérdéseket kell feltenned, hogy finomhangold a válaszát. Tippekért lásd: Mit tehetek a GitHub Copilottal a kódtérben?

  5. A terminálban futtassa a azd deploy.

    azd deploy
    

Problémáid vannak? Tekintse meg a hibaelhárítási szakaszt.

5. Adatbázis séma generálása

A virtuális hálózattal védett PostgreSQL adatbázis esetén a legkönnyebb módja annak, hogy futtassa a Django adatbázis-migrációkat, egy SSH-munkamenet a Linux-tárolóban az App Service-ben.

  1. Az AZD kimenetén keresse meg az SSH munkamenet URL-jét, és nyissa meg azt a böngészőben. Ez így néz ki a kimenetben.

     Open SSH session to App Service container at: <URL>
     
  2. Az SSH munkamenetben futtassa a python manage.py migrate parancsot. Ha sikerül, az App Service sikeresen kapcsolódik az adatbázishoz.

    Képernyőkép az SSH-rendszerhéjban futtatandó parancsokról és azok kimenetéről (Django).

    Megjegyzés

    Csak a /home fájlokban lévő változások maradhatnak meg az alkalmazás újraindítása után is. A /home-n kívüli módosítások nem maradnak meg.

Problémáid vannak? Tekintse meg a hibaelhárítási szakaszt.

6. Tallózzon az alkalmazáshoz

  1. Az AZD kimenetében keresse meg az alkalmazása URL-jét, és nyissa meg azt a böngészőben. Az URL-cím így néz ki az AZD-kimenetben:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  2. Adj hozzá néhány éttermet a listához.

    Képernyőkép a Django webalkalmazásról az Azure-ban futó PostgreSQL-lel, amelyen éttermek és éttermek véleménye (Django) láthatók.

    Gratulálunk, most egy webalkalmazást futtatsz az Azure App Service-ben, biztonságos kapcsolattal az Azure Database for PostgreSQL-hez.

Problémáid vannak? Tekintse meg a hibaelhárítási szakaszt.

7. Diagnosztikai naplók streamelése

Az Azure App Service képes naplózni a konzol kimenetét, hogy segítse az alkalmazással kapcsolatos problémák feltárását. A kényelem érdekében az AZD-sablon már lehetővé teszi a helyi fájlrendszerbe való naplózást , és a naplókat egy Log Analytics-munkaterületre szállítja.

A mintapéldában print() utasításokat tartalmaz, amelyeket e képesség bemutatására használnak, ahogyan az az alábbi kódrészletben látható.

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)

Az AZD kimenetben keresse meg az App Service naplók streameléséhez szükséges hivatkozást, majd nyissa meg a böngészőben.

Stream App Service logs at: <URL>

Tudjon meg többet a Python-alkalmazásokban való naplózásról az Azure Monitor Python-alkalmazáshoz való beállításáról szóló sorozatunkban.

Problémáid vannak? Tekintse meg a hibaelhárítási szakaszt.

8. Erőforrások törlése

Az összes Azure erőforrás törléséhez az aktuális telepítési környezetben futtassa a azd down parancsot, és kövesse az utasításokat.

azd down

Hibaelhárítás

Az alábbiakban felsoroljuk azokat a problémákat, amelyekkel szembesülhet a bemutató végrehajtása során, valamint a megoldásukhoz szükséges lépéseket.

Nem tudok csatlakozni az SSH munkamenethez.

Ha nem tudsz csatlakozni az SSH munkamenethez, akkor az alkalmazás nem tudott elindulni. Részletekért tekintse meg a diagnosztikai naplókat . Például, ha egy KeyError: 'AZURE_POSTGRESQL_HOST' hibát lát, az azt jelentheti, hogy hiányzik a környezeti változó (talán eltávolította az alkalmazás beállítását).

Hibát kapok, amikor adatbázis-migrációkat futtatok.

Ha bármilyen hibát észlel az adatbázishoz való csatlakozással kapcsolatban, ellenőrizze, hogy az alkalmazás beállításai (AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST, és AZURE_POSTGRESQL_NAME) megváltoztak vagy törölve lettek-e. A kapcsolat karaktersorozat nélkül a migrate parancs nem tud kommunikálni az adatbázissal.

Gyakran ismételt kérdések

Mennyibe kerül ez a felszerelés?

Az elkészített erőforrások árazása a következőképpen alakul:

Hogyan csatlakozhatok a PostgreSQL szerverhez, amely a virtuális hálózat mögött van biztosítva más eszközökkel?

  • Az alapvető hozzáféréshez egy parancssori eszközből futtathatja a psql parancsot az alkalmazás SSH munkamenetéből.
  • Asztali eszközről való csatlakozáshoz a gépnek a virtuális hálózaton belül kell lennie. Ez lehet például egy Azure-beli virtuális gép, amely az egyik alhálózathoz csatlakozik, vagy egy helyszíni hálózat egy olyan gépe, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli virtuális hálózattal.
  • Az Azure Cloud Shell-t is integrálhatja a virtuális hálózattal.

Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?

Az App Service által automatikusan generált munkafolyamat-fájlt példaként használva, minden egyes git push új összeállítási és telepítési futtatást indít el. Egy helyi példány másolatából a GitHub adattárból végrehajtja a kívánt frissítéseket és feltölti őket a GitHubra. Például:

git add .
git commit -m "<some-message>"
git push origin main

Hogyan van beállítva a Django minta az Azure App Service-en való futtatásra?

A Django mintaalkalmazás konfigurálja az azureproject/production.py fájl beállításait, hogy az az Azure App Service-ben fusson. Ezek a módosítások közösnek számítanak a Django éles környezetbe történő üzembe helyezésekor, és nem kifejezetten az App Service-re vonatkoznak.

  • Django ellenőrzi a HTTP_HOST fejlécet a beérkező kérésekben. A mintakód az WEBSITE_HOSTNAME App Service környezeti változójával adja hozzá az alkalmazás tartománynevét a Django ALLOWED_HOSTS beállításához.

    # 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 []
    
  • A Django nem támogatja a statikus fájlok kiszolgálását produkciós környezetben. Ebben az oktatóanyagban a WhiteNoise használatával engedélyezi a fájlok kiszolgálását. A WhiteNoise csomag már telepítve volt a requirements.txt fájllal, és a middleware hozzá lett adva a listához.

    
    # WhiteNoise configuration
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add whitenoise middleware after the security middleware
        'whitenoise.middleware.WhiteNoiseMiddleware',
    

    Ezután a statikus fájlbeállításokat a Django dokumentációja alapján konfigurálják.

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
    

További információ: Django-alkalmazások éles beállításai.

Hogyan változtathatom meg a SECRET_KEY alkalmazás beállítást egy Key Vault hivatkozásra?

A portál fenti lépéseiben a következő Azure CLI-parancsok futtatásával válthat SECRET_KEY Key Vault-referenciára a cloud shellben:

# 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)"

Ugyanezt megteheti a portálon is. További információért lásd:

  1. Key Vault-hatókör szerepkör-hozzárendelése
  2. Titkos kulcs hozzáadása a Key Vaulthoz
  3. Titkos kulcs lekérése a Key Vaultból
  4. Alkalmazásbeállítások konfigurálása

Hogyan hibakereshetek a GitHub Actions telepítése során fellépő hibák esetén?

Ha egy lépés sikertelen az automatikusan generált GitHub munkafolyamat fájlban, próbálja meg módosítani a sikertelen parancsot, hogy részletesebb kimenetet kapjon. Például több kimenetet érhet el a python parancsból, ha hozzáadja a -d opciót. Kötelezze el és küldje el a módosításait, hogy újabb telepítést kezdeményezzen az App Service-be.

Nincs jogosultságom felhasználóhoz rendelt identitás létrehozására.

Lásd: A GitHub Actions üzembe helyezésének beállítása az üzembe helyezési központból.

Mit tudok csinálni a GitHub Copilottal a kódtérben?

Észrevehetted, hogy a GitHub Copilot csevegési nézete már ott volt számodra, amikor létrehoztad a kódtér.egyet. Az Ön kényelme érdekében a GitHub Copilot csevegőbővítményt is belefoglaljuk a tárolódefinícióba (lásd : .devcontainer/devcontainer.json). Azonban szüksége van egy GitHub Copilot-fiókra (30 napos ingyenes próbaverzió érhető el).

Íme néhány tipp, amikor a GitHub Copilot-tal beszélsz:

  • Egyetlen beszélgetési szakaszban a kérdések és válaszok egymásra épülnek, és a kérdéseidet módosíthatod, hogy pontosítsd a kapott választ.
  • Alapértelmezés szerint a GitHub Copilot nem fér hozzá a tárházban található fájlokhoz. Ha kérdései vannak egy fájllal kapcsolatban, először nyissa meg a fájlt a szerkesztőben.
  • Annak érdekében, hogy a GitHub Copilot hozzáférhessen a tároló összes fájljához a válaszának elkészítése során, kezdje kérdését @workspace kóddal. További információért lásd Use the @workspace agent.
  • A csevegőszekcióban a GitHub Copilot javaslatokat tehet a módosításokra és (a @workspace segítségével) még arra is, hogy hol kell a módosításokat elvégezni, de nincs megengedve, hogy ő maga végezze el a módosításokat. Rajtad áll, hogy hozzáadd a javasolt változtatásokat, és teszteld azokat.

Következő lépések

Térj át a következő oktatóanyagra, hogy megtanuld, hogyan védd meg az alkalmazásodat egy egyedi tartománnyal és tanúsítvánnyal.

Ismerje meg, hogyan futtatja az App Service egy Python alkalmazást.