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 Azure-alkalmazás Szolgáltatásban az Azure Database for PostgreSQL relációsadatbázis-szolgáltatással. Azure-alkalmazás szolgáltatás támogatja Python linuxos kiszolgálói környezetben. 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 az alábbiakkal fog megismerkedni:

  • 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.
  • Python-mintaalkalmazás üzembe helyezése az App Service-ben egy GitHub-adattárból.
  • Az App Service-kapcsolati sztring és az alkalmazásbeállítások elérése az alkalmazáskódban.
  • Végezze el a frissítéseket, és telepítse újra az alkalmazáskódot.
  • Adatbázisséma létrehozása adatbázis-áttelepítések futtatásával.
  • Diagnosztikai naplók streamelése az Azure-ból.
  • Az alkalmazás kezelése az Azure Portalon.
  • Azonos architektúra kiépítése és üzembe helyezése az Azure Developer CLI használatával.
  • Optimalizálja a fejlesztési munkafolyamatot a GitHub Codespaces és a GitHub Copilot használatával.

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 állítson be egy adatvezérelt mintaalkalmazá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 tároló mindent tartalmaz, amire szüksége van egy alkalmazás fejlesztéséhez, beleértve az adatbázist, a gyorsítótárat és a mintaalkalmazás által igényelt összes környezeti változót. 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.

Feljegyzés

Ha ezt az oktatóanyagot a saját alkalmazásával együtt követi, tekintse meg a requirements.txt fájl leírását a README.md , 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. Navigáljon a https://github.com/Azure-Samples/msdocs-django-postgresql-sample-app/fork lapra
  3. Törölje a jelölést : Csak a főág másolása. Az összes ágat szeretnéd.
  4. Válassza az Elágazás létrehozása lehetőséget.

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

  1. Válassza ki a kezdő ág fő>starter-no-infra elemét. Ez az ág csak a mintaprojektet tartalmazza, és nincs Azure-nal kapcsolatos fájl vagy konfiguráció.
  2. Válassza a Kód>létrehozása kódteret a starter-no-infra rendszeren. A kódtér beállítása néhány percet vesz igénybe, és a végén fut pip install -r requirements.txt az adattárban. 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. Adatbázis-áttelepítések futtatása a következővel python manage.py migrate: .
  2. Futtassa az alkalmazást a következővel python manage.py runserver: .
  3. Amikor megjelenik az értesítésYour 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őlapon kell megjelennie. Az alkalmazás leállításához írja be a következőt Ctrl+C: .

Tipp.

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

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

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

2. App Service, adatbázis és gyorsítótár létrehozása

Ebben a lépésben hozza létre az Azure-erőforrásokat. Az oktatóanyagban használt lépések az App Service, az Azure Database for PostgreSQL és az Azure Cache szolgáltatást tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre. A létrehozási folyamathoz a következőket kell megadnia:

  • A webalkalmazás neve . Ez az alkalmazás https://<app-name>-<hash>.<region>.azurewebsites.netDNS-nevének részeként használatos.
  • A régió , amely fizikailag futtatja az alkalmazást a világon. Az alkalmazás DNS-nevének részeként is használják.
  • 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 a tarifacsomag, amely tartalmazza az alkalmazás funkcióit és skálázási kapacitását.
  • Az alkalmazás erőforráscsoportja . Az erőforráscsoportokkal (logikai tárolóban) csoportosíthatja az alkalmazáshoz szükséges Összes Azure-erőforrást.

Jelentkezzen be az Azure Portalra, és kövesse az alábbi lépéseket a Azure-alkalmazás szolgáltatás erőforrásainak létrehozásához.

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

  1. Írja be a "webalkalmazás-adatbázis" kifejezést az Azure Portal 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.12.
  5. Adatbázis: PostgreSQL – A rugalmas kiszolgáló alapértelmezés szerint adatbázismotorként van kiválasztva. A kiszolgáló neve és az adatbázis neve alapértelmezés szerint a megfelelő értékekre is be van állítva.
  6. Azure Cache for Redis hozzáadása: Igen.
  7. Üzemeltetési terv: Alapszintű. Ha készen áll, felskálázhat egy éles tarifacsomagra.
  8. Válassza az Áttekinté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 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ásba kerül, 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. Létrejön egy Linux-csomag az alapszinten .
  • 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.
  • Rugalmas Azure Database for PostgreSQL-kiszolgáló: Csak a virtuális hálózaton belülről érhető el. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
  • Azure Cache for Redis: Csak a magánhálózata mögött érhető el.
  • sajá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. A kapcsolat titkos kulcsának védelme és SECRET_KEY hozzáadása

A létrehozási varázsló már alkalmazásbeállításokként létrehozta a kapcsolati változókat. A biztonsági ajánlott eljárás azonban az, hogy a titkos kulcsokat teljesen kizárja az App Service-bő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ó sztringet a password= után későbbi használatra. Ez az alkalmazásbeállítások lehetővé teszik a Postgres-adatbázishoz és a Privát végpontok mögött biztonságos Redis-gyorsítótárhoz való csatlakozást. A titkos kódok azonban közvetlenül az App Service-alkalmazásban vannak mentve, ami nem a legjobb. Ezt meg fogja változtatni. Emellett hozzá fog adni egy SECRET_KEY beállítást, amelyet a Django-alkalmazás igényel.

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 területén válassza ki ugyanazt a helyet, mint az App Service-alkalmazás.
  6. Írja be az msdocs-python-postgres-XYZVaultEndpoint nevet.
  7. A virtuális hálózatban válassza az msdocs-python-postgres-XYZVnet lehetőséget.
  8. Az alhálózatban msdocs-python-postgres-XYZSubnet.
  9. Kattintson az OK gombra.
  10. Válassza a Felülvizsgálat + létrehozás, majd a Létrehozás lehetőséget. Várja meg, amíg a Key Vault üzembe helyezése befejeződik. A következőt kell látnia: "Az üzembe helyezés befejeződött".

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 összekötő van, amelyeket az alkalmazáslétrehozó varázsló hozott létre Önnek.
  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 PostgreSQL szolgáltatás-összekötő Django-ügyféltípusa egy kapcsolati sztring helyett külön beállításokban adja meg az adatbázisváltozókat. 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 Key Vault-kapcsolat Kapcsolat létrehozása párbeszédpaneljén, a Key Vaultban válassza ki a korábban létrehozott kulcstartót.
  2. Válassza a Felülvizsgálat é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 megjelenik az alapértelmezettConnector szerkesztési párbeszédpanelje. 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áslétrehozó varázsló már védette 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 sztring 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. Ebben a lépésben alkalmazásbeállításként hozza létre.

  1. Az Alkalmazásbeállítások lapon válassza a Hozzáadás lehetőséget.
  2. A névbeállítása SECRET_KEY.
  3. Érték beállítása hosszú véletlenszerű sztringre.
  4. Kattintson az Alkalmaz gombra, majd az Alkalmaz gombra, majd a Megerősítés gombra.

Összefoglalva, a kapcsolat titkos kulcsainak biztonságossá tételének folyamata:

  • A kapcsolat titkos kulcsainak lekérése az App Service-alkalmazás környezeti változóiból.
  • Kulcstartó létrehozása.
  • Key Vault-kapcsolat létrehozása a rendszer által hozzárendelt felügyelt identitással.
  • A szolgáltatás-összekötők frissítése a titkos kulcsok kulcstartóban való tárolásához.

Feljegyzés

Ideális esetben az SECRET_KEY alkalmazásbeállítást kulcstartó-referenciaként is konfigurálnia kell, ami egy többlépéses folyamat. További információ: Hogyan módosítsa a SECRET_KEY alkalmazásbeállítást Key Vault-referenciára?

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.


4. Mintakód üzembe helyezése

Ebben a lépésben konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Ez csak egy az App Service-ben történő üzembe helyezés számos módja közül, de nagyszerű módja annak is, hogy folyamatos integrációt nyújtsunk az üzembe helyezési folyamatba. Alapértelmezés szerint a GitHub-adattár minden git push eleme elindítja a buildelési és üzembe helyezési műveletet.

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

2. lépés: Az Üzembehelyezé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ásokat az Azure engedélyezéséhez.
  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 Ágban válassza a starter-no-infra lehetőséget. Ez ugyanaz az ág, amelyben a mintaalkalmazással dolgozott, azure-ral kapcsolatos fájlok és konfigurációk 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. Az App Service véglegesít egy munkafolyamat-fájlt a kiválasztott GitHub-adattárba a .github/workflows címtá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. Ezzel lekéri az újonnan véglegesített 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 magyarázatot adhat 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ásom 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, 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érdezze meg a következőt: "@workspace Az App Service-alkalmazás az Azure Service Connector használatával is csatlakozik a Cache for Redishez a Django-ügyféltípus használatával. Milyen környezeti változóneveket kell használnom?*" A Copilot a 2. lehetőségben szereplőhöz hasonló kódjavaslatot adhat: 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 minden alkalommal ad ugyanazt a választ, és ez nem mindig helyes. Előfordulhat, hogy további kérdéseket kell feltennie a válasz finomhangolásához. 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 a Program.cs a explorerben.
  2. Keresse meg a megjegyzésben szereplő kódot (29-48. sor), és bontsa ki. Ez PostgreSQL- és Redis-kapcsolatokat AZURE_POSTGRESQL_USERhoz létre a , , AZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOST, AZURE_POSTGRESQL_NAMEés AZURE_REDIS_CONNECTIONSTRING.

5. lépés:

  1. Válassza ki a Forrásvezérlő bővítményt.
  2. A szövegmezőbe írjon be egy véglegesítési üzenetet, például Configure Azure database and cache connectons: . Vagy válassza ki és hagyja, hogy a GitHub Copilot véglegesítési üzenetet hozzon létre Ö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 GitHub-adattárba kerül, és láthatja, hogy a GitHub-művelet fut. A munkafolyamat-fájl két különálló szakaszt határoz meg, a buildelést és az üzembe helyezést. Várja meg, amíg a GitHub-futtatás sikeres állapotot jelenít meg. Körülbelül 5 percig tart.

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

5. Adatbázisséma létrehozá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 lap bal oldali menüjébe,

  1. Válassza a Development Tools>SSH lehetőséget.
  2. Válassza az Indít elemet.

2. lépés: Futtassa python manage.py migrateaz SSH-munkamenetben. Ha sikeres, az App Service sikeresen csatlakozik az adatbázishoz.

Tipp.

Az SSH-munkamenetben /home csak a fájlok módosításai őrizhetők meg az alkalmazás újraindítása után. A külső /home módosítások nem maradnak meg. Az SSH-munkamenet olyan gyakori python manage.py parancsok futtatásához hasznos, mint például a felhasználó létrehozása a python manage.py createsuperuser. További információ: django django-admin és manage.py dokumentációja. A superuser-fiók használatával érheti el a /admin webhely egy részét.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

6. Tallózás 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-címét.

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

7. Diagnosztikai naplók streamelése

Azure-alkalmazás szolgáltatás rögzíti az összes konzolnaplót, hogy segítsen diagnosztizálni az alkalmazással kapcsolatos problémákat. A mintaalkalmazás az print() alábbi módon mutatja be ezt a képességet.

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 az App Service-naplók figyelése>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. Láthatja az alkalmazás naplóit, beleértve a platformnaplókat és a tárolón belüli naplókat.

További információ a Python-alkalmazásokban való naplózásról a Python-alkalmazásHoz készült Azure Monitor beállításáról szóló sorozatban.

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

Ha 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.

Képernyőkép egy erőforráscsoport Azure Portalon való törlésének megerősítő párbeszédpaneléről. :

2. Azure-erőforrások létrehozása és mintaalkalmazás üzembe helyezése

Ebben a lépésben létrehozza az Azure-erőforrásokat, és üzembe helyez egy mintaalkalmazást a Linuxon futó App Service-ben. Az oktatóanyagban használt lépések az App Service, az Azure Database for PostgreSQL és az Azure Cache for Redis szolgáltatást tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre.

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

  1. Futtassa azd initaz adattár gyökerét.

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

    Kérdés Válasz
    Az aktuális könyvtár nem üres. Inicializálni szeretne egy projektet itt a "saját könyvtárában>"?< Y
    Mit szeretne tenni ezekkel a fájlokkal? Meglévő fájljaim változatlanul tartása
    Adjon meg egy új környezetnevet Írjon be egy egyedi nevet. Az AZD-sablon ezt a nevet használja a webalkalmazás DNS-nevének részeként az Azure-ban (<app-name>-<hash>.azurewebsites.net). Alfanumerikus karakterek és kötőjelek engedélyezettek.
  3. Jelentkezzen be az Azure-ba a azd auth login parancs futtatásával és a parancssor követésével:

    azd auth login
    
  4. Hozza létre a szükséges Azure-erőforrásokat a azd provision paranccsal. Kövesse az utasításokat az Azure-erőforrások kívánt előfizetésének és helyének kiválasztásához.

    azd provision
    

    A azd provision parancs végrehajtása körülbelül 15 percet vesz igénybe (a Redis-gyorsítótár a legtöbb időt veszi igénybe). Később módosítja a kódot, hogy működjön az App Service-lel, és üzembe helyezze a módosításokat a következővel azd deploy: . Amíg fut, a parancs üzeneteket küld a kiépítési és üzembe helyezési folyamatról, beleértve az Azure-beli üzembe helyezésre mutató hivatkozást is.

    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. Létrejön egy Linux-csomag az alapszinten .
    • 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.
    • Rugalmas Azure Database for PostgreSQL-kiszolgáló: Csak a virtuális hálózaton belülről érhető el. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
    • sajá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. Az App Service-alkalmazás titkos kulcsainak kezelésére szolgál.

    Ha a parancs befejezi az erőforrások létrehozását és az alkalmazáskód első üzembe helyezését, az üzembe helyezett mintaalkalmazás még nem működik, mert kis módosításokat kell végrehajtania ahhoz, hogy csatlakozni lehessen az Azure-beli adatbázishoz.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

3. Az adatbázis kapcsolati sztring

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 az egyik módja annak, hogy a kapcsolat titkos kulcsait ne használja a kódtárban.

  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 titkos kódok biztonsága érdekében csak a beállításnevek jelennek meg. Így néznek ki az AZD-kimenetben:

     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ákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

4. Mintakód módosítása és ismételt üzembe helyezés

  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ásom 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, 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 minden alkalommal ad ugyanazt a választ, és ez nem mindig helyes. Előfordulhat, hogy további kérdéseket kell feltennie a válasz finomhangolásához. Tippekért lásd: Mit tehetek a GitHub Copilottal a kódtérben?

  5. A terminálban futtassa a azd deploy parancsot.

    azd deploy
    

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

5. Adatbázisséma létrehozá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. Az AZD-kimenetben keresse meg az SSH-munkamenet URL-címét, és keresse meg a böngészőben. Így néz ki a kimenetben:

     Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
     
  2. Az SSH-munkamenetben futtassa a következőt python manage.py migrate: . Ha sikeres, az App Service sikeresen csatlakozik az adatbázishoz.

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

    Feljegyzés

    Csak a fájlok /home módosításai őrizhetők meg az alkalmazás újraindítása után. A külső /home módosítások nem maradnak meg.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

6. Tallózás az alkalmazáshoz

  1. Az AZD-kimenetben keresse meg az alkalmazás URL-címét, és keresse meg 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: https://<app-name>.azurewebsites.net/
     
  2. Vegyen fel néhány éttermet a listára.

    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, egy webalkalmazást futtat a Azure-alkalmazás Service-ben, biztonságos kapcsolattal az Azure Database for PostgreSQL-hez.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

7. Diagnosztikai naplók streamelése

Azure-alkalmazás szolgáltatás rögzítheti a konzolnaplókat az alkalmazással kapcsolatos problémák diagnosztizálásához. 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 mintaalkalmazás az print() alábbi kódrészletben látható módon bemutatja ezt a képességet.

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 és a böngészőben való navigáláshoz használt hivatkozást. A hivatkozás így néz ki az AZD-kimenetben:

Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream

További információ a Python-alkalmazásokban való naplózásról a Python-alkalmazásHoz készült Azure Monitor beállításáról szóló sorozatban.

Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.

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

Ha törölni szeretné az összes Azure-erőforrást az aktuális üzemi környezetben, futtassa azd down és kövesse az utasításokat.

azd down

Hibaelhárítás

Az alábbiakban azokat a problémákat soroljuk fel, amelyekkel az oktatóanyag és a megoldásuk lépései során találkozhat.

Nem tudok csatlakozni az SSH-munkamenethez

Ha nem tud csatlakozni az SSH-munkamenethez, akkor maga az alkalmazás nem indult el. Részletekért tekintse meg a diagnosztikai naplókat . Ha például egy hasonló KeyError: 'AZURE_POSTGRESQL_HOST'hibaüzenet jelenik meg, az azt jelentheti, hogy a környezeti változó hiányzik (lehet, hogy eltávolította az alkalmazásbeállítást).

Hibaüzenet jelenik meg az adatbázis-migrálások futtatásakor

Ha bármilyen, az adatbázishoz való csatlakozással kapcsolatos hibát tapasztal, ellenőrizze, hogy az alkalmazás beállításai (AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, , AZURE_POSTGRESQL_HOSTés AZURE_POSTGRESQL_NAME) módosultak-e vagy törölve lettek-e. A kapcsolati sztring nélkül a migrálási parancs nem tud kommunikálni az adatbázissal.

Gyakori kérdések

Mennyibe kerül ez a beállítás?

A létrehozott erőforrások díjszabása a következő:

Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett PostgreSQL-kiszolgálóhoz?

  • A parancssori eszközök alapszintű elérése érdekében az alkalmazás SSH-munkamenetéből is futtatható psql .
  • 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 Shellt a virtuális hálózattal is integrálhatja.

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

Ha például az App Service automatikus munkafolyamat-fájlját használja, mindegyik git push elindít egy új buildet és üzembe helyezést. A GitHub-adattár helyi klónjából elvégezheti a kívánt frissítéseket, és leküldheti a GitHubra. Példa:

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

Hogyan van konfigurálva a Django-minta a Azure-alkalmazás Szolgáltatáson való futtatásra?

A Django mintaalkalmazás konfigurálja az azureproject/production.py fájl beállításait, hogy az Azure-alkalmazás Szolgáltatásban fusson. Ezek a módosítások gyakoriak a Django éles környezetben való üzembe helyezéséhez, és nem az App Service-hez.

  • A Django ellenőrzi a HTTP_HOST fejlécet a bejövő kérelmekben. A mintakód az WEBSITE_HOSTNAME App Service környezeti változójával adja hozzá az alkalmazás tartománynevét 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 éles környezetben való kiszolgálását. 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 van requirements.txt, és a köztes szoftver hozzá van 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ások a Django dokumentációja szerint vannak konfigurálva.

    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 módosítsa a SECRET_KEY alkalmazásbeállítást Key Vault-referenciára?

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 a portálon is megteheti. További információk:

  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 hibakeresési hibákat a GitHub Actions üzembe helyezése során?

Ha egy lépés meghiúsul az automatikusan létrehozott GitHub-munkafolyamatfájlban, próbálja meg módosítani a sikertelen parancsot, hogy részletesebb kimenetet hozzon létre. A parancs kimenetét python például a beállítás hozzáadásával -d érheti el. Véglegesítse és küldje le a módosításokat, hogy egy másik üzembe helyezést aktiváljon az App Service-be.

Nincs jogosultságom felhasználó által hozzá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 tehetek a GitHub Copilottal a kódtérben?

Lehet, hogy észrevette, hogy a GitHub Copilot csevegési nézete már ott volt a kódtér létrehozásakor. 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).

Néhány tipp a GitHub Copilot használatához:

  • Egyetlen csevegési munkamenetben a kérdések és válaszok egymásra épülnek, és módosíthatja a kérdéseket, hogy finomhangolja a választ.
  • Alapértelmezés szerint a GitHub Copilot nem rendelkezik hozzáféréssel az adattárban lévő fájlokhoz. Ha fel szeretne kérdezni egy fájlt, először nyissa meg a fájlt a szerkesztőben.
  • Ha azt szeretné, hogy a GitHub Copilot hozzáférhessen az adattárban lévő összes fájlhoz a válaszok előkészítésekor, kezdje a kérdést a következővel @workspace: . További információ: Use the @workspace agent.
  • A csevegési munkamenetben a GitHub Copilot javasolhat módosításokat, és (azokkal együtt @workspace) még azt is, hogy hol végezze el a módosításokat, de önnek nem engedélyezett a módosítások végrehajtása. Önnek kell hozzáadnia a javasolt módosításokat, és tesztelnie kell azt.

Következő lépések

Folytassa a következő oktatóanyaggal, amelyből megtudhatja, hogyan védheti meg az alkalmazást egyéni tartománnyal és tanúsítvánnyal.

Megtudhatja, hogyan futtatja az App Service a Python-alkalmazásokat: