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


Telepíts egy Python (Flask) webalkalmazást PostgreSQL adatbázissal az Azure-ban

Ebben az oktatóanyagban egy adatvezérelt Python-webalkalmazást (Flask) 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 támogatja a Python-t Linux szerver környezetben. Ha szeretné, tekintse meg inkább a Django-oktatóanyagot vagy a FastAPI-oktatóanyagot .

Egy architektúra diagram egy Azure-ban lévő App Service-et és PostgreSQL adatbázist mutat be.

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.
  • Férjen hozzá az alkalmazásszolgáltatás kapcsolati karakterláncaihoz és alkalmazásbeállításaihoz az alkalmazás kódjában.
  • Frissítse és telepítse újra az alkalmazás kódját.
  • Állítsa elő az adatbázis sémaét az adatbázis migrációk futtatásával.
  • Diagnosztikai naplók streamelése az Azure-ból.
  • Az alkalmazást kezelje az Azure portálon.
  • Hozza létre ugyanazt az architektúrát, és telepítse az Azure Developer CLI segítségével.
  • Optimalizáld a fejlesztési munkafolyamatodat a GitHub Codespaces és a GitHub Copilot segítségével.

Előfeltételek

Ugorj a végére

Ha csak azt szeretnéd látni, hogy az oktatóanyag egy mintaalkalmazása miként működik Azure-ban, futtasd a következő parancsokat az Azure Cloud Shell környezetben, és kövesd az utasításokat.

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

1. Futtassa a mintát

Először hozz létre egy minta adatalapú alkalmazást kiindulási pontként. Az Ön kényelme érdekében a példatár tartalmazza a fejlesztői konténer 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 saját alkalmazásoddal követed ezt az útmutatót, nézd meg a requirements.txt fájlleírást a README.md-ben, hogy láthasd, milyen csomagokra lesz szükséged.

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

  1. Jelentkezzen be GitHub-fiókjába.
  2. Navigáljon ide https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork.
  3. Törölje a jelölést a Csak a fő ágat másolja lehetőségről. Akarod az összes ágat.
  4. Válassza a Fork létrehozása lehetőséget.

2. lépés: A GitHub-forkban:

  1. Select main>starter-no-infra a kezdő ág számára. 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 létrehozása a starter-no-infra területen. 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.

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

  1. Hajtsa végre az adatbázis-migrációkat flask db upgrade segítségével.
  2. Futtassa az alkalmazást flask run-vel.
  3. Amikor megjelenik az értesítés Your application running on port 5000 is available., válassza a Megnyitás böngészőben lehetőséget. Az alkalmazás mintapéldáját meg kellene látnia egy új böngészőfülön. Az alkalmazás leállításához írja be Ctrl+C.

Tipp

Megkérdezheted GitHub Copilot ezt a tárházról. Például:

  • @workspace Mit csinál ez a projekt?
  • @workspace Mit csinál a .devcontainer mappa?

Problémái vannak? Nézze meg a Hibaelhárítás szakaszt.

2. App szolgáltatás és PostgreSQL létrehozása

Ebben a lépésben létrehozod 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 és az Azure Database for PostgreSQL-t. A létrehozási folyamathoz a következőket kell megadnia:

  • A webes alkalmazás Name-ja. 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. Ez az alkalmazás DNS-nevének a részeként is használatos.
  • A(z) Runtime stack az alkalmazáshoz. Itt választhatja ki az alkalmazáshoz használni kívánt Python-verziót.
  • Az alkalmazás tárhelyterve. A díjszabási szint az az árkategória, amely magában foglalja az alkalmazásához szükséges funkciókészletet és a méretezési kapacitást.
  • A Resource Group az alkalmazáshoz. Egy erőforráscsoport lehetővé teszi, hogy egy logikai tárolóban csoportosítsa a programhoz szükséges összes Azure-erőforrást.

Lépjen be az Azure portálra, és kövesse ezeket a lépéseket az Azure App Service-erőforrások létrehozásához.

1. lépés: Az Azure portálon:

  1. Írja be a "web app database" kifejezést az Azure portál tetején található keresősávba.
  2. Válaszd ki a Piactér cím alatt található Web App + Database címkéjű elemet. A készítés varázslójához közvetlenül is navigálhat.

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

  1. Erőforráscsoport: Válassza a Új létrehozása lehetőséget, és használja a msdocs-flask-postgres-tutorial nevet.
  2. Régió: Bármely Azure régió az Ön közelében.
  3. Név: msdocs-python-postgres-XYZ.
  4. Futtatókörnyezeti verem: Python 3.12.
  5. Adatbázis: Alapértelmezés szerint a PostgreSQL - Flexible Server van kiválasztva adatbázis motor esetén. A szerver- és adatbázisnév alapértelmezés szerint megfelelő értékekre van beállítva.
  6. Azure Cache for Redis hozzáadása?: Nem.
  7. Üzemeltetési terv: Alapszintű. Amikor készen áll, átválthat egy termelési / gyártási árazási szintre.
  8. Válassza az Áttekintés + létrehozás lehetőséget.
  9. A validálás befejezése után válassza a Létrehozás lehetőséget.

3. lépés: A telepítés néhány percet vesz igénybe a befejezéshez. A telepítés befejeződése után válassza a Go to resource gombot. Közvetlenül az App Service alkalmazásba kerül, de a következő erőforrások létrejönnek:

  • Erőforrás csoport: Az elkészített erőforrások tárolója.
  • App Service terv: Meghatározza az App Service számítási erőforrásait. A Basic szintű Linux terv létrejött.
  • App Service: Képviseli az alkalmazását és az App Service tervben fut.
  • Virtual network: Az App Service alkalmazással integrált, és izolálja a háttérhálózati forgalmat.
  • Hálózati interfészek: Képviselnek privát IP-címeket, egyet-egyet a privát végpontok számára.
  • Azure Database for PostgreSQL rugalmas szerver: Csak a virtuális hálózaton belül érhető el. Az adatbázis és a felhasználó létrehozásra került a szerveren.
  • Privát DNS zónák: Lehetővé teszi a kulcstároló és az adatbázis-szerver DNS feloldását a virtuális hálózatban.

3. Biztonságos kapcsolati titkok

A létrehozási varázsló már létrehozta a kapcsolati változókat, mint alkalmazás beállítások. Azonban a biztonsági legjobb gyakorlat az, hogy teljesen távol tartsuk a titkokat az App Service-től. A titkokat áthelyezi egy kulcstárházba, és az alkalmazás beállításait a Kulcstárház hivatkozásokra módosítja a Szolgáltatáskapcsolók segítségével.

1. lépés: A meglévő kapcsolati karakterlánc előhívása

  1. Az alkalmazásszolgáltatás oldal bal oldali menüjében válassza a Beállítások > Környezeti változók lehetőséget.
  2. Válaszd ki AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. A Alkalmazásbeállítás hozzáadása/szerkesztése menüpontban, a Érték mezőben keresse meg a szöveg végén a password= részt.
  4. Másolja a jelszókarakterláncot a Password= után későbbi felhasználásra. Ez az alkalmazásbeállítás lehetővé teszi, hogy csatlakozzon a privát végpont mögött biztosított Postgres adatbázishoz. Azonban a titok közvetlenül az App Service alkalmazásban van elmentve, ami nem a legjobb. Meg fogod változtatni ezt.

2. lépés: Hozzon létre egy kulcstartót a titkok biztonságos kezeléséhez

  1. A felső keresőmezőbe írja be a "key vault" kifejezést, majd válassza ki a Marketplace>Key Vault lehetőséget.
  2. Az Erőforráscsoportban válassza az msdocs-python-postgres-tutorial lehetőséget.
  3. A kulcstár neve mezőbe írjon be egy nevet, amely csak betűket és számokat tartalmaz.
  4. A Régió mezőben állítsa be ugyanarra a helyre, mint az erőforráscsoport.

3. lépés: Védje meg a kulcstárolót egy privát végponttal

  1. Válassza a Hálózatkezelés lapot.
  2. Törölje a jelölést Nyilvános hozzáférés engedélyezése.
  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édablakban, a Location résznél válassza ki ugyanazt a helyszínt, mint az App Service alkalmazása.
  6. A Name mezőbe írja be a következő szöveget: 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. Kattintson az OK gombra.
  10. Válassza a(z) Felülvizsgálat + létrehozás, majd válassza a Létrehozás lehetőséget. Várja meg, amíg a kulcstár telepítése befejeződik. Meg kell jelennie a „A telepítésed befejeződött.”

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

  1. A felső keresősávba írja be a msdocs-python-postgres kifejezést, majd válassza ki az msdocs-python-postgres-XYZ nevű App Service erőforrást.
  2. Az App Service oldalon, a bal menüben válassza a Beállítások > Szolgáltatás Csatlakozó opciót. Már van egy összekötő, amelyet 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. Annak ellenére, hogy van egy Flask alkalmazásod, a PostgreSQL szolgáltatási csatlakozóban lévő Django ügyféltípus külön beállításokban adja meg az adatbázis változókat egyetlen kapcsolati sztring helyett. A különálló változók könnyebben használhatók az alkalmazáskódban, amely az SQLAlchemy használatával csatlakozik az adatbázishoz.
  5. Válassza a Hitelesítés lapot.
  6. A Jelszó mezőbe illessze be az előzőleg másolt jelszót.
  7. Válassza a Titkosítás tárolása a Kulcstárban lehetőséget.
  8. A kulcstár kapcsolat alatt válassza a Új létrehozása lehetőséget. A Kapcsolat létrehozása párbeszédpanel az szerkesztő párbeszédpanel tetején nyílik meg.

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

  1. A Kapcsolat létrehozása párbeszédablakban a Kulcstartó kapcsolathoz, a Kulcstartó részben válassza ki az előzőleg létrehozott kulcstartót.
  2. Válassza a Felülvizsgálat és létrehozás lehetőséget.
  3. Amikor az érvényesíté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. Visszatértél a defaultConnector szerkesztési párbeszédablakába. Az Hitelesítés fülön várjuk meg, amíg a kulcstartó csatlakozó létrejön. Amikor befejeződik, a Key Vault Connection legördülő menü automatikusan kiválasztja.
  2. Válassza ki Következő: Hálózatkezelés.
  3. Válassza az Mentésgombot. Várjon, amíg meg nem jelenik a A frissítés sikeres volt értesítés.

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

  1. A bal oldali menüből válassza a Beállítások > Környezeti változók opciót újra.
  2. A(z) AZURE_POSTGRESQL_PASSWORD mellett válassza a Érték megjelenítése lehetőséget. Az értéknek @Microsoft.KeyVault(...) kell lennie, ami azt jelenti, hogy ez egy kulcstároló referencia, mivel a titok most a kulcstárolóban van kezelve.

Összefoglalva, a kapcsolat titkainak biztosításához szükséges folyamat a következőket tartalmazta:

  • Az App Service alkalmazás környezeti változóiból kapcsolati titkok visszakeresése.
  • Kulcstár létrehozása.
  • Rendszer által hozzárendelt felügyelt identitással létrehozni egy Key Vault kapcsolatot.
  • A szolgáltatás csatlakozók frissítése a titkok kulcstárban való tárolására.

Problémái vannak? Nézze meg a Hibaelhárítás szakaszt.


4. Példakód telepítése

Ebben a lépésben konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Csak egy a sok módszer közül az App Service szolgáltatásba történő telepítésre, de ugyanakkor remek módja annak, hogy folyamatos integrációt valósítson meg a telepítési folyamatában. Alapértelmezés szerint minden git push a GitHub tárházához elindítja az építési és bevetési műveletet.

1. Lépés: A bal oldali menüben válassza ki a Telepítés>Telepítési Központ lehetőséget.

2. lépés: A Telepítési Központ oldalán:

  1. A Forrás területen válassza a GitHubot. Alapértelmezés szerint a GitHub Actions van kiválasztva mint build szolgáltató.
  2. Jelentkezzen be GitHub-fiókjába, és kövesse a felugró ablak útmutatásait az Azure engedélyezéséhez.
  3. A(z) Organization felületén válassza ki a fiókját.
  4. Az Adattárban válassza az msdocs-flask-postgresql-sample-app elemet.
  5. A Branch alkalmazásban válaszd ki a starter-no-infra lehetőséget. Ez ugyanaz az ág, amelyen a mintaalakmazásával dolgozott, Azure-hoz kapcsolódó fájlok vagy konfiguráció nélkül.
  6. A(z) Hitelesítés típusa esetében válassza a Felhasználó által hozzárendelt identitás lehetőséget.
  7. A felső menüben válassza a Mentés lehetőséget. Az App Service elhelyez egy munkafolyamat fájlt a kiválasztott GitHub-tárházban, a .github/workflows könyvtárban. Alapértelmezés szerint a telepítési központ felhasználó által hozzárendelt identitást hoz létre, hogy a munkafolyamat hitelesíthesse magát a Microsoft Entra (OIDC-hitelesítés) használatával. Alternatív hitelesítési lehetőségekért lásd: Telepítés App Service-re a GitHub Actions használatával.

3. lépés: Térjen vissza a mintafork GitHub kódtérterületére, és futtassa a git pull origin starter-no-infra parancsot. Ez behúzza az újonnan elkötelezett munkafolyamat fájlt a kódtérbe.

4. lépés (1. lehetőség: a GitHub Copilot használatával):

  1. Új csevegési munkamenetet indíthat, ha kiválasztja a Csevegés nézetet, majd kiválasztja a +-t.
  2. Kérdezze meg a következőt: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz?" A Copilot esetleg magyarázatot ad arra, SQLAlchemy hogy a kapcsolati URI hogyan van konfigurálva az azureproject/development.py és az azureproject/production.py.
  3. Kérdezzen: "@workspace Éles üzemmódban az alkalmazásom egy App Service webalkalmazásban fut, amely az Azure Service Connector-t használja, hogy a Django kliens típussal kapcsolódjon egy PostgreSQL rugalmas szerverhez. Milyen környezeti változók neveit kell használnom?" A Copilot esetleg egy olyan kódjavaslatot ad, amely hasonló az alább található 2. lehetőség: GitHub Copilot nélkül lépésekhez, és akár azt is javasolhatja, hogy változtasson a azureproject/production.py fájlban.
  4. Nyissa meg a azureproject/production.py fájlt az Intézőben, és adja hozzá a kódsajánlást. GitHub Copilot nem adja mindig ugyanazt a választ, és nem mindig helyes. Lehet, hogy több kérdést kell feltennie, hogy finomhangolja 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 a Program.cs-t a fájlböngészőben.
  2. Keresd meg a kommentelt kódot (3-8 sorok), és távolítsd el a kommentet. Ez létrehoz egy kapcsolati karakterláncot az SQLAlchemy-hez az AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST és AZURE_POSTGRESQL_NAME használatával.

5. lépés:

  1. Válassza ki a Source Control kiterjesztést.
  2. A szövegdobozba írjon egy Configure Azure database connection-hez hasonló commit üzenetet. Vagy válassza a lehetőséget, és hagyja, hogy a GitHub Copilot létrehozzon egy commit üzenetet.
  3. Válassza a Küldés lehetőséget, majd erősítse meg a Igen gombbal.
  4. Válassza a Sync changes 1 opciót, majd erősítse meg az OK gombbal.

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

  1. Válassza a Naplók fület, majd válassza a Frissítés lehetőséget, hogy megtekinthesse az új telepítési futást.
  2. A telepítési futtatás naplóelemében válassza ki a legfrissebb időbélyeggel rendelkező Build/Deploy Naplók bejegyzést.

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: építés és telepítés. Várj, amíg a GitHub futtatás állapotot mutat: Success. Körülbelül 5 percet vesz igénybe.

Problémái 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 Flask-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: Térjen vissza az App Service oldalra, 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: Indítsd el a flask db upgrade az SSH munkamenetben. Ha sikerül, az App Service sikeresen csatlakozik az adatbázishoz.

Tipp

SSH-munka során csak a /home fájlok módosításai maradhatnak meg az alkalmazás újraindítása után. A /home kívüli változtatások nem kerülnek mentésre.

Problémái vannak? Nézze meg a Hibaelhárítás szakaszt.

6. Nyissa meg az alkalmazást

1. lépés: Az App Service oldalon:

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

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

7. Átviteli diagnosztikai naplók

Az Azure App Service rögzíti az összes konzolnaplót, hogy segítse Önt az alkalmazása problémáinak 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ó.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

1. lépés: Az App Service oldalon:

  1. A bal oldali menüből válassza a Megfigyelés>App Service naplókat.
  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üből válassza a naplófolyamot. A(z) alkalmazása naplóit látja, beleértve a platform naplókat és a tárolón belüli naplókat is.

Tudjon meg többet a Python alkalmazások naplózásáról az Azure Monitor beállítása Python alkalmazásához című sorozatban.

8. Takarítsa fel az erőforrásokat

Amikor elkészültél, törölheted az összes erőforrást az Azure-előfizetésedből, ha törlöd az erőforráscsoportot.

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

  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 oldalán válassza az Erőforráscsoport törlése lehetőséget.

3. lépés:

  1. Adja meg az erőforráscsoport nevét a törlés megerősítéséhez.
  2. Válassza a Törlés lehetőséget.
  3. Erősítse meg ismét a Törlés választásával.

2. Azure erőforrások létrehozása és egy mintaalkalmazás telepítése

Ebben a lépésben létrehozza az Azure erőforrásokat és egy mintalkalmazást telepít az App Service szolgáltatásra Linuxon. 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 és az Azure Database for PostgreSQL-t.

A fejlesztői konténer már tartalmazza az Azure Developer CLI (AZD).

  1. A tároló gyökérkönyvtárából futtassa azd init.

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

    Kérdés Válasz
    Az aktuális könyvtár nem üres. Szeretnél inicializálni egy projektet itt, ebben a könyvtárban: '<your-directory>'? Y
    Mit szeretne kezdeni ezekkel a fájlokkal? Tartsa meg a meglévő fájljaimat változatlanul
    Adjon meg egy új környezeti nevet Írjon be egy egyedi nevet. Az AZD sablon ezt a nevet az Azure-ban lévő webalkalmazás DNS-nevének részeként használja (<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ásokat az Azure erőforrásokhoz kívánt előfizetés és helyszín kiválasztásához.

    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. Amíg fut, a parancs üzeneteket nyújt az előkészítési és telepítési folyamatról, beleértve egy hivatkozást az Azure-ban történt telepítésre.

    Ez az AZD sablon olyan fájlokat tartalmaz (azure.yaml és a infra könyvtár), amelyek alapértelmezett módon biztonságos architektúrát hoznak létre a következő Azure-erőforrásokkal:

    • Erőforrás csoport: Az elkészített erőforrások tárolója.
    • App Service terv: Meghatározza az App Service számítási erőforrásait. A Basic szintű Linux terv létrejött.
    • App Service: Képviseli az alkalmazását és az App Service tervben fut.
    • Virtual network: Az App Service alkalmazással integrált, és izolálja a háttérhálózati forgalmat.
    • 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ózatban.
    • Hálózati interfészek: Képviselnek privát IP-címeket, egyet-egyet a privát végpontok számára.
    • Azure Database for PostgreSQL rugalmas szerver: Csak a virtuális hálózaton belül érhető el. Az adatbázis és a felhasználó létrehozásra került a szerveren.
    • Privát DNS zóna: Lehetővé teszi a PostgreSQL szerver DNS feloldását a virtuális hálózatban.
    • Log Analytics munkaterület: A célkonténerként szolgál az alkalmazásod számára, ahova a naplóit küldheti, és ahol a naplókat is lekérdezheti.
    • Azure Cache for Redis: Csak a saját privát végpontja mögül érhető el.
    • Key vault: Csak a privát végpontja mögül érhető el. Az App Service alkalmazás titkainak kezelésére használják.

    Miután a parancs befejezte az erőforrások létrehozását és az alkalmazáskód első telepítését, a telepített mintalkalmazás még nem működik, mert apró módosításokat kell végeznie, hogy az Azure-ban található adatbázishoz csatlakozzon.

Problémái vannak? Nézze meg a Hibaelhárítás 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 kimenetében találja meg a AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST és AZURE_POSTGRESQL_NAME beállításokat. A titkok biztonsága érdekében csak a beállítások nevei jelennek meg. Í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. A kényelme érdekében az AZD sablon megmutatja az alkalmazás beállítási oldalának közvetlen linkjét. Keresd meg a linket, és nyisd meg egy új böngészőfülön.

Problémái vannak? Nézze meg a Hibaelhárítás szakaszt.

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

  1. A GitHub-munkatérben indítson új beszélgetést úgy, hogy kiválasztja a Chat nézetet, majd a +.

  2. Kérdezze meg a következőt: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz?" A Copilot esetleg magyarázatot ad arra, SQLAlchemy hogy a kapcsolati URI hogyan van konfigurálva az azureproject/development.py és az azureproject/production.py.

  3. Kérdezzen: "@workspace Éles üzemmódban az alkalmazásom egy App Service webalkalmazásban fut, amely az Azure Service Connector-t használja, hogy a Django kliens típussal kapcsolódjon egy PostgreSQL rugalmas szerverhez. Milyen környezeti változók neveit kell használnom?" A Copilot esetleg egy olyan kódjavaslatot ad, amely hasonló az alább található 2. lehetőség: GitHub Copilot nélkül lépésekhez, és akár azt is javasolhatja, hogy változtasson a azureproject/production.py fájlban.

  4. Nyissa meg a azureproject/production.py fájlt az Intézőben, és adja hozzá a kódsajánlást.

    GitHub Copilot nem adja mindig ugyanazt a választ, és nem mindig helyes. Lehet, hogy több kérdést kell feltennie, hogy finomhangolja 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ái vannak? Nézze meg a Hibaelhárítás szakaszt.

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

A virtuális hálózat által védett PostgreSQL-adatbázissal a Flask-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 kimenetén keresse meg az SSH munkamenet URL-jét, és nyissa meg azt a böngészőben. Így néz ki a kimenetben:

     Open SSH session to App Service container at: <URL>
     
  2. Az SSH munkamenetben futtassa a flask db upgrade parancsot. Ha sikerül, az App Service sikeresen csatlakozik az adatbázishoz.

    Egy képernyőkép, amely megmutatja az SSH shellben futtatandó parancsokat és azok kimenetét.

    Megjegyzés:

    Csak a /home fájljaiban történt változások maradhatnak meg az alkalmazás újraindítása után. A /home kívüli változtatások nem kerülnek mentésre.

Problémái vannak? Nézze meg a Hibaelhárítás szakaszt.

6. Nyissa meg az alkalmazást

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

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

    Flask webalkalmazás képernyőképe, amelyben PostgreSQL fut az Azure-ban, és amely éttermeket és étterem-értékeléseket jelenít meg.

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

Problémái vannak? Nézze meg a Hibaelhárítás szakaszt.

7. Átviteli diagnosztikai naplók

Az Azure App Service rögzítheti a konzolnaplókat, hogy segítsen diagnosztizálni az alkalmazásod problémáit. Kényelmi szempontból az AZD sablon már lehetővé teszi a naplózást a helyi fájlrendszerhez, és a naplókat egy Log Analytics munkaterületre küldi.

A mintapéldány alkalmazás tartalmaz print() utasításokat, amelyek ezt a képességet demonstrálják, az alábbi kódrészlet szerint.

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

Az AZD kimenetében keresse meg az App Service naplók streamelésének linkjét, és navigáljon rá a böngészőben.

Tudjon meg többet a Python alkalmazások naplózásáról az Azure Monitor beállítása Python alkalmazásához című sorozatban.

Problémái vannak? Nézze meg a Hibaelhárítás szakaszt.

8. Takarítsa fel az erőforrásokat

Az összes Azure erőforrás törléséhez a jelenlegi 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 felsorolt problémákkal találkozhatsz, miközben megpróbálod végigvinni ezt az oktatóanyagot, és lépések ennek megoldására.

Nem tudok csatlakozni az SSH-munkamenethez.

Ha nem tud csatlakozni az SSH munkamenethez, akkor maga az alkalmazás nem indult el. Ellenőrizze a diagnosztikai naplókat a részletekért. Például, ha olyan hibát lát, mint a KeyError: 'AZURE_POSTGRESQL_HOST', ez azt jelentheti, hogy hiányzik a környezeti változó (lehet, hogy eltávolította az alkalmazás beállítást).

Amikor adatbázis-migrációkat futtatok, hibát kapok.

Ha bármilyen hibával találkozik, ami az adatbázishoz való csatlakozással kapcsolatos, ellenőrizze, hogy az alkalmazás beállításait (AZURE_POSTGRESQL_USER, AZURE_POSTGRESQL_PASSWORD, AZURE_POSTGRESQL_HOST és AZURE_POSTGRESQL_NAME) megváltoztatták vagy törölték-e. Ahhoz a kapcsolati karakterlánchoz, a migrate parancs nem tud kommunikálni az adatbázissal.

Gyakran ismételt kérdések

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

A létrehozott erőforrások árazá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?

  • 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. Például lehet egy Azure VM, amely az egyik alhálózathoz csatlakozik, vagy egy olyan gép egy helyszíni hálózatban, amelynek site-to-site VPN kapcsolata van az Azure virtuális hálózattal.
  • Ön is integrálhatja az Azure Cloud Shellt a virtuális hálózattal.

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

Az App Service automatikusan generált munkafolyamat-fájlja példaként szolgálva, minden egyes git push elindít egy új build- és telepítési folyamatot. A GitHub-tárház helyi klónjából elvégzi a kívánt frissítéseket, és feltölti azokat a GitHubra. Például:

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

Hogyan tudom hibakeresni a hibákat a GitHub Actions telepítése sorá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 generáljon. Például több kimenetet kaphat a python parancsból, ha hozzáadja a -d opciót. Commitálja és pusholja a változtatásait, hogy elindítson egy újabb telepítést az App Service-re.

Nincsenek jogosultságaim egy felhasználó által hozzárendelt identitás létrehozásához.

Tekintse meg a GitHub Actions telepítés beállítását a Telepítési Központból.

Mit tehetek a GitHub Copilottal a kódtáramban?

Észrevehetted, hogy a GitHub Copilot chat nézete már ott volt számodra, amikor létrehoztad a codespace-t. Az Ön kényelme érdekében a GitHub Copilot csevegési bővítményt beépítjük a konténer definíciójába (lásd .devcontainer/devcontainer.json). Azonban szüksége van egy GitHub Copilot-fiókra (30 napos ingyenes próbaidőszak elérhető).

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

  • Egyetlen chatbeszélgetés során a kérdések és válaszok egymásra épülnek, és a kérdéseidet úgy alakíthatod, hogy finomítsd a kapott választ.
  • Alapértelmezés szerint a GitHub Copilot nem fér hozzá a tárhelyed egyetlen fájljához sem. A fájllal kapcsolatos kérdések feltevéséhez először nyissa meg a fájlt a szerkesztőben.
  • Annak érdekében, hogy a GitHub Copilot hozzáférjen a tárhely összes fájljához a válaszok előkészítése során, kezdd a kérdésedet a @workspace-vel. További információért lásd: Use the @workspace agent.
  • A beszélgetési munkamenet során a GitHub Copilot javaslatokat tehet a változtatásokra, és (a @workspace használatával) még azt is megmutathatja, hol történjenek ezek a változtatások, de nincs engedélyezve, hogy elvégezze a változtatásokat ön helyett. Rajtad áll, hogy hozzáadod-e a javasolt módosításokat, és teszteled-e.

Következő lépések

Lépjen tovább a következő oktatási segédanyaghoz, hogy megtudja, hogyan biztosíthatja alkalmazását egyedi domainnel és tanúsítvánnyal.

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