Megosztás:


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

Ebben az oktatóanyagban egy adatvezérelt Python-webalkalmazást helyez üzembe 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. Ez a cikk Flask-alkalmazást használ. Alternatív megoldás lehet a Django vagy a FastAPI oktatóanyag.

Az ábra egy App Service architektúráját mutatja be 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.
  • 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 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-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-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ó mindennel rendelkezik, amire szüksége van egy alkalmazás fejlesztéséhez. Tartalmazza a mintaalkalmazáshoz szükséges adatbázist, gyorsítótárat és minden környezeti változót. 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ájl leírását a README.md , hogy lássa, milyen csomagokra van szüksége.

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 az Azure-ral kapcsolatos fájlokat vagy konfigurációkat nem tartalmazó mintaprojektet tartalmazza.
  2. Válassza a kódot. A kódterek lapon válassza a Kódtér létrehozása a starter-no-infra rendszeren lehetőséget. A kódtér beállítása néhány percet vesz igénybe. Az adattárhoz fut pip install -r requirements.txt .

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.

App Service és PostgreSQL létrehozása

Ebben a szakaszban az Azure-erőforrásokat hozza létre. Ez az oktatóanyag az App Service-t és az Azure Database for PostgreSQL-et tartalmazó, alapértelmezés szerint biztonságos erőforrásokat hoz létre. 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. Az alkalmazás DNS-nevének is része.
  • A(z) Runtime stack az alkalmazáshoz. Az alkalmazáshoz használandó Python-verzió.
  • Az alkalmazás tárhelyterve. Az alkalmazás funkcióit és skálázási kapacitását tartalmazó tarifacsomag.
  • A Resource Group az alkalmazáshoz. Az erőforráscsoportokkal az alkalmazás Azure-erőforrásait logikai tárolóba csoportosíthatja.

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. Az Azure Portal tetején adja meg a webalkalmazás-adatbázist a keresősávon.
  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 + 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.14.
  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: Az üzembe helyezés 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á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. Az üzembe helyezés létrehoz egy Linux-csomagot az alapszintű szinten.
  • 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.

Biztonságos kapcsolati titkos kódok

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: Kérje le a meglévő kapcsolati sztringet:

  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álaszd ki AZURE_POSTGRESQL_CONNECTIONSTRING.
  3. Az Alkalmazás hozzáadása/szerkesztése beállításÉrték mezőjében keresse meg a sztring végén található jelszót.
  4. Másolja ki a jelszó karaktersorozatát a password= után későbbi használatra. 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. A titkos kód mentése közvetlenül az App Service-alkalmazásban történik, ami nem az ajánlott eljárás. Később módosíthatja ezt a konfigurációt.

2. lépés: Kulcstartó létrehozása a titkos kódok 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: A kulcstartó védelme privát végponttal:

  1. Válassza a Hálózatkezelés lehetőséget.
  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ózatban válassza az msdocs-python-postgres-XYZSubnet lehetőséget.
  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. 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á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 lap bal oldali menüjében válassza a Beállítások>szolgáltatás-összekötő lehetőséget. Már van egy összekötő, amelyet az üzembe helyezési folyamat 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 lehetőséget.
  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. Megnyílik a Kapcsolat létrehozása párbeszédpanel a szerkesztési párbeszédpanel tetején.

5. lépés: Hozza létre a Key Vault-kapcsolatot:

  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: Véglegesítse a PostgreSQL-összekötő beállításait:

  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 a létrehozás befejeződött, a Key Vault-kapcsolat legördülő menü automatikusan kiválasztja azt.
  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üben válassza ismét a Beállítások>környezet változói lehetőséget.
  2. A(z) AZURE_POSTGRESQL_PASSWORD mellett válassza a Érték megjelenítése lehetőséget. Az értéknek meg kell lennie @Microsoft.KeyVault(...), ami azt jelenti, hogy ez egy key vault-referencia. A titkos kulcs most a kulcstárban 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.


Mintakód üzembe helyezése

Ebben a szakaszban a GitHub üzembe helyezését a GitHub Actions használatával konfigurálja. 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á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: 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 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 az a verziókezelő ág, amelyben a te mintaalkalmazásoddal dolgoztál, nincsenek Azure-hoz kapcsolódó fájlok vagy konfigurációk.
  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 véglegesít egy munkafolyamat-fájlt a kiválasztott GitHub-adattárban, a .github/workflows címtá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. 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: Térjen vissza a mintafork GitHub kódtérterületére, és futtassa a git pull origin starter-no-infra parancsot. 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 Copilot használatával):

  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érdezzen, @workspace Hogyan csatlakozik az alkalmazás az adatbázishoz? A Copilot magyarázatot adhat SQLAlchemypéldául arra, hogyan van konfigurálva a kapcsolati URI az azureproject/development.py és az azureproject/production.py.
  3. Kérdezd meg, @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 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 a azureproject/production.py fájlt az Intézőben, és adja hozzá a kódsajánlást. A GitHub Copilot nem mindig ugyanazt a választ adja. A válaszok nem mindig helyesek. 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 az azureproject/production.py az explorerben.
  2. Keresd meg a kommentelt kódot (3-8 sorok), és távolítsd el a kommentet. Ez a módosítás egy kapcsolati sztringet hoz létre az SQLAlchemy számára, a 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 lehetőséget, majd a Frissítés lehetőséget az új üzembe helyezés futtatásának megtekintéséhez.
  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. 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á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.

Adatbázisséma létrehozá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: 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: 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.

Keresse meg az alkalmazást

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

  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.

Diagnosztikai naplók streamelése

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, amelyek bemutatják ezt a képességet, ahogy itt 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 oldalán:

  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.

A Python-alkalmazásokban való naplózásról további információt az Azure Monitor beállítása a Python-alkalmazáshoz című témakörben talál.

Erőforrások tisztítása

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. 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.
  3. Erősítse meg ismét a Törlés választásával.

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 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 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, beleértve az Azure-beli üzembe helyezésre mutató hivatkozást is.

    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. Létrehoz egy Linux-csomagot az alapszintű szinten.
    • 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.
    • Rugalmas Azure Database for PostgreSQL-kiszolgáló: Csak a virtuális hálózatró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ő ü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ái vannak? Nézze meg a Hibaelhárítás szakaszt.

Az adatbázis kapcsolati sztringjének használata

A használt AZD-sablon már alkalmazásbeállításokként létrehozta a kapcsolati változókat. A terminálon adja ki azokat. 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.

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érdezzen, @workspace Hogyan csatlakozik az alkalmazás az adatbázishoz? A Copilot magyarázatot adhat SQLAlchemypéldául arra, hogyan van konfigurálva a kapcsolati URI az azureproject/development.py és az azureproject/production.py.

  3. Kérdezd meg, @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 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 a azureproject/production.py fájlt az Intézőben, és adja hozzá a kódsajánlást.

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

Adatbázisséma létrehozá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.

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

    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.

Keresse 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álok! 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.

Diagnosztikai naplók streamelése

Az Azure App Service rögzítheti a konzolnaplókat, hogy segítsen diagnosztizálni az alkalmazásod problémáit. Az AZD-sablon már lehetővé teszi a naplózást a helyi fájlrendszerbe , és a naplókat egy Log Analytics-munkaterületre szállítja.

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.

Erőforrások tisztítása

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 néhány problémát tapasztalhat, amikor megpróbál végigjárni ezt az oktatóanyagot és a megoldásuk lépéseit.

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

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 számítógépnek a virtuális hálózaton 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 számítógépe, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli 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-ből származó automatikusan létrehozott munkafolyamat-fájl esetében mindegyik git push elindít egy új buildet és üzembe helyezést. 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. A -d opció hozzáadásával például részletes kimenetet kaphat a python parancsból. 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?

Észreveheti, hogy 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. GitHub Copilot-fiókra van szüksége. Egy 30 napos ingyenes próbaidőszak elérhető.

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

  • Egyetlen csevegési munkamenetben a kérdések és válaszok egymásra épülnek. A kérdéseket úgy módosíthatja, hogy finomhangolja a 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 csevegési munkamenetben a GitHub Copilot javasolhat módosításokat @workspace, és akár azt is, hogy hol végezze el a módosításokat, de nem hajthatja végre azokat helyetted. Rajtad áll, hogy hozzáadod-e a javasolt módosításokat, és teszteled-e.

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.