Megosztás:


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

Ebben az oktatóanyagban egy adatvezérelt Python-webalkalmazást helyez üzembe az Azure App Service-ben , amely az Azure Database for PostgreSQL relációs adatbázis-szolgáltatást használja. Az Azure App Service linuxos kiszolgálói környezetben támogatja a Pythont . Ez a cikk Django-t használ. Alternatív megoldásként használhatja a Flaskot vagy a FastAPI-oktatóanyagot.

Egy App Service architektúráját ábrázoló ábra 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 az Azure-ban futó oktatóanyag mintaalkalmazását szeretné látni, futtassa az alábbi 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

A minta futtatása

Kiindulási pontként állítson be egy adatvezérelt mintaalkalmazást. 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 az összes környezeti változót, amelyekre a mintaalkalmazásnak szüksége van. A fejlesztői tároló egy GitHub-kódtérben futtatható, így 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 requirements.txt fájlleírást a README.md , hogy lássa, milyen csomagokra van 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 beállítása néhány percet vesz igénybe. Az adattárhoz fut pip install -r requirements.txt . 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.

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. Ez az oktatóanyag az App Service-t, az Azure Database for PostgreSQL-t és az Azure Cache-t tartalmazó, alapértelmezés szerint biztonságos erőforrásokat hoz létre. 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ás DNS-nevének is része.
  • Az alkalmazás futtatókörnyezeti vereme . Kiválaszthatja az alkalmazáshoz használni kívánt Python-verziót.
  • Az alkalmazás üzemeltetési terve . A tarifacsomag tartalmazza az alkalmazás funkcióit és skálázási kapacitását.
  • Az alkalmazás erőforráscsoportja . Az erőforráscsoportokkal az alkalmazáshoz szükséges összes Azure-erőforrást logikai tárolóba csoportosíthatja.

Jelentkezzen be a Azure portalra. 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. Az Azure Portal tetején, a keresőmezőbe írja be a webalkalmazás-adatbázist.
  2. A Marketplace címsorában válassza ki a Web App + Adatbázis címkével ellátott elemet. Közvetlenül a Webalkalmazás létrehozása elemre is navigálhat.

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 írja be az msdocs-django-postgres-tutorial parancsot.
  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ése után válassza az Ugrás az erőforrásra lehetőséget. Az üzembe helyezés a következő erőforrásokat hozza 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. Ez a példány egy Linux-terv az alapszintű rétegben.
  • 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: Privát IP-címek, mindegyik privát végponthoz.
  • Azure Database for PostgreSQL rugalmas kiszolgáló: Csak a virtuális hálózaton belülről érhető el. Az üzembe helyezés létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
  • Azure Cache for Redis: Csak a magánhálózatáról é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.

Kapcsolati titkos kódok védelme és SECRET_KEY hozzáadása

Az üzembe helyezési folyamat alkalmazásbeállításokként hozza létre a kapcsolati változókat. A biztonsági ajánlott eljárás az, hogy a titkos kulcsokat teljesen távol tartjuk az App Service-ből. Helyezze át titkos kulcsait egy kulcstartóba, és módosítsa az alkalmazásbeállítást Key Vault-hivatkozásokra a Service Connectors segítségével.

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. Ezzel az alkalmazásbeállítással csatlakozhat a Postgres-adatbázishoz és a privát végpontok mögött biztonságosan elhelyezkedő Redis-gyorsítótárhoz. A titkos kódok közvetlenül az App Service-alkalmazásban vannak mentve, ami nem a legjobb módszer. Ezt a konfigurációt meg fogja változtatni. Emellett hozzáadhat egy SECRET_KEY beállítást is, 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 adja meg a Key Vaultot, 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 adjon meg egy nevet, amely csak betűkből és számokból áll.
  4. A Régióban válassza ki ugyanazt a helyet, mint az erőforráscsoport.

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 kell , hogy az üzembe helyezés befejeződött.

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

  1. A felső keresősávon adja meg az msdocs-python-postgres kifejezést, majd válassza ki az App Service-erőforrást msdocs-python-postgres-XYZ.
  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 van két összekötő, amelyeket az alkalmazáskészítés folyamata hozott létre.
  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 lehetőséget.
  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. Ez a művelet megnyitja a Kapcsolat létrehozása párbeszédpanelt a szerkesztési párbeszédpanel tetején.

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 területen várja meg, amíg létrejön a kulcstartó-csatlakozó. 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 lehetőséget.
  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ás folyamata 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. Válassza az Alkalmaz lehetőséget, majd megint az Alkalmaz opciót, végül a Megerősítés lehetőséget.

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


Mintakód üzembe helyezése

Ebben a szakaszban konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Ez az App Service-ben való üzembe helyezés egyik módja. Nagyszerű módja annak, hogy folyamatos integrációt érjünk el az üzembe helyezési folyamat során. 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 az a verziókezelő ág, amelyben a te mintaalkalmazásoddal dolgoztál, nincsenek Azure-hoz kapcsolódó fájlok vagy konfigurációk.
  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 egy munkafolyamat-fájlt elkötelez a GitHub-adattárban lévő .github/workflows könyvtárba. 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. További 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 a parancs betölti a frissen 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 lépéseinek követése nélkül , sőt, az azureproject/production.py fájlban is elvégezheti a módosítást.
  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?" Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad : a GitHub Copilot lépéseinek követése nélkül , és akár azt is, 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 mindig ugyanazt a választ adja. A válaszok nem mindig helyesek. 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 a kód PostgreSQL- és Redis-kapcsolatokat hoz létre a 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özpontba az Azure Portalon:

  1. Válassza a Naplók lehetőséget, 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. 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.

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

Keresse meg az alkalmazást

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álok! Webalkalmazást futtat az Azure App Service-ben, biztonságos kapcsolattal az Azure Database for PostgreSQL-hez.

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 utasításokat tartalmaz print() ennek a képességnek a bemutatásához.

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.

További információ a Python-alkalmazásokban való naplózásról: Azure Monitor beállítása a Python-alkalmazáshoz.

Erőforrások tisztítása

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.

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

Ebben a szakaszban hozza létre az Azure-erőforrásokat, és helyezzen üzembe egy mintaalkalmazást a Linuxon futó App Service-ben. 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 végrehajtása körülbelül 15 percet vesz igénybe. A Redis-gyorsítótár a legtöbb időt igénybe veszi. Később módosítsa a kódot úgy, hogy működjön az App Service-lel, és telepítse 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. A kimenet tartalmaz egy hivatkozást az Azure-beli üzembe helyezésre.

    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étrehoz egy Linux-csomagot az alapszintű 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: Privát IP-címek, mindegyik privát végponthoz.
    • Rugalmas Azure Database for PostgreSQL-kiszolgáló: Csak a virtuális hálózatról érhető el. Létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
    • 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.

    Miután a parancs befejezte 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. Az Azure-beli adatbázishoz való csatlakozáshoz kis módosításokat kell végrehajtania.

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

Az adatbázis kapcsolati sztringjének használata

A használt AZD-sablon alkalmazásbeállításokként generálta a kapcsolati változókat. A terminálon adja ki őket. 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.

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á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 lépéseinek követése nélkül , sőt, az azureproject/production.py fájlban is elvégezheti a módosítást.

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

    A GitHub Copilot nem mindig ugyanazt a választ adja. A válaszok nem mindig helyesek. 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.

Adatbázisséma létrehozá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 a parancs sikeres, az App Service sikeresen csatlakozik az adatbázishoz.

    Az SSH-rendszerhéjban futtatandó parancsokat és azok kimenetét (Django) bemutató képernyőkép.

    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.

Keresse meg az alkalmazást

  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álok! Webalkalmazást futtat 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.

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.

Erőforrások tisztítása

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 az oktatóanyag során felmerülő problémákat és a megoldásuk lépéseit találhatja meg.

Nem tudok csatlakozni az SSH munkamenethez.

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

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 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 leírt Azure Portal-lépésekben a következő Azure CLI-parancsok futtatásával válthat SECRET_KEY Key Vault-referenciára a felhőhéjban:

# 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:

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?

A GitHub Copilot csevegő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).

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

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.

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