Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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.
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
- Egy Azure-fiók aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.
- Egy GitHub-fiók. ingyenesen is beszerezhet egyet.
- Python és Django fejlesztés ismerete.
- (Nem kötelező) A GitHub Copilot kipróbálásához egy GitHub Copilot-fiók. Egy 30 napos ingyenes próbaidőszak elérhető.
- Egy Azure-fiók aktív előfizetéssel. Ha nem rendelkezik Azure-fiókkal, ingyenesen létrehozhat egyet.
- Az Azure Developer CLI telepítve van. Kövesse az Azure Cloud Shell lépéseit, mert már telepítve van az Azure Developer CLI.
- A Python ismerete a Django fejlesztésével.
- (Nem kötelező) A GitHub Copilot kipróbálásához egy GitHub Copilot-fiók. Egy 30 napos ingyenes próbaidőszak elérhető.
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:
- Jelentkezzen be a GitHub-fiókjába.
- Lépjen a https://github.com/Azure-Samples/msdocs-django-postgresql-sample-app/fork oldalra.
- Törölje a jelölést : Csak a főág másolása. Akarod az összes ágat.
- Válassza az Elágazás létrehozása opciót.
2. lépés: A GitHub-elágazásban:
- Válassza a fő>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.
- 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:
- Hajtsa végre az adatbázis-migrációkat
python manage.py migratesegítségével. - Futtassa az alkalmazást a
python manage.py runserver-vel. - 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 beCtrl+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:
- Az Azure Portal tetején, a keresőmezőbe írja be a webalkalmazás-adatbázist.
- 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.
- Erőforráscsoport: Válassza az Új létrehozása lehetőséget , és írja be az msdocs-django-postgres-tutorial parancsot.
- Régió: Bármely Önhöz közeli Azure-régió.
- Név: msdocs-python-postgres-XYZ.
- Futtatókörnyezeti verem: Python 3.14.
- 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.
- Azure Cache for Redis hozzáadása: Igen.
- Üzemeltetési terv: Alapszintű. Amikor készen állsz, átválthatsz egy termelési árazási szintre.
- Válassza a Véleményezés + létrehozás lehetőséget.
- 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
- Az App Service lap bal oldali menüjében válassza a Beállítások>környezet változói lehetőséget.
- Válassza a AZURE_POSTGRESQL_CONNECTIONSTRING.
- 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.
- 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_KEYbeá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
- A felső keresősávon adja meg a Key Vaultot, majd válassza a Marketplace>Key Vault lehetőséget.
- Az Erőforráscsoportban válassza az msdocs-python-postgres-tutorial lehetőséget.
- A Key Vault nevében adjon meg egy nevet, amely csak betűkből és számokból áll.
- 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
- Válassza a Hálózatkezelés lapot.
- Törölje a jelölést a nyilvános hozzáférés engedélyezése jelölőnégyzetből.
- Válassza a Privát végpont létrehozása lehetőséget.
- Az Erőforráscsoportban válassza az msdocs-python-postgres-tutorial lehetőséget.
- A párbeszédpanel Hely részén válassza ki ugyanazt a helyet, mint az App Service alkalmazása.
- A neve mezőbe írja be a következőt: msdocs-python-postgres-XYZVaultEndpoint.
- A virtuális hálózatban válassza az msdocs-python-postgres-XYZVnet lehetőséget.
- Az alhálózatbanmsdocs-python-postgres-XYZSubnet.
- Válassza az OK gombot.
- 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
- 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.
- 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.
- Jelölje be a PostgreSQL-összekötő melletti jelölőnégyzetet, majd válassza a Szerkesztés lehetőséget.
- Ü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.
- Válassza a Hitelesítés lehetőséget.
- A Jelszó mezőbe illessze be a korábban másolt jelszót.
- Válassza a Titkos kulcs tárolása lehetőséget a Key Vaultban.
- 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
- 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.
- Válassza a Véleményezés + Létrehozás lehetőséget.
- 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
- 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.
- Válassza a Tovább: Hálózatkezelés lehetőséget.
- 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
- 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.
- Válassza a Hitelesítés lehetőséget.
- Válassza a Titkos kulcs tárolása lehetőséget a Key Vaultban.
- A Key Vault-kapcsolat területen válassza ki a létrehozott kulcstartót.
- Válassza a Tovább: Hálózatkezelés lehetőséget.
- 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.
- 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
- A bal oldali menüben válassza ismét a Beállítások > környezet változói lehetőséget.
- 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. - 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.
- Az Alkalmazásbeállítások lapon válassza a Hozzáadás lehetőséget.
- Állítsd be a név értékét SECRET_KEY-re.
- Állítsa be az Értéket egy hosszú, véletlenszerű karaktersorra.
- 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:
- A Forrás területen válassza a GitHubot. Alapértelmezés szerint a GitHub Actions van kiválasztva buildszolgáltatóként.
- Jelentkezzen be a GitHub fiókjába, és kövesse az utasítást, hogy engedélyezze az Azure-t.
- A Szervezetben válassza ki a fiókját.
- Az Adattárban válassza az msdocs-django-postgresql-sample-app lehetőséget.
- 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.
- Hitelesítési típus esetén válassza a felhasználó által hozzárendelt identitást.
- 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/workflowskö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):
- Indítsa el az új csevegési munkamenetet a Csevegés nézet kiválasztásával, majd válassza a +lehetőséget.
- 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.
- 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.
- Nyissa meg az azureproject/production.py az Explorerben, és adja hozzá a kódjavaslatot.
- 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.
- 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):
- Nyissa meg az azureproject/production.py az explorerben.
- 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ésAZURE_REDIS_CONNECTIONSTRINGhasználatával.
5. lépés:
- Válassza ki a Forrásvezérlő bővítményt.
- 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. - Válassza a Véglegesítés lehetőséget, majd erősítse meg igennel.
- 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:
- 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.
- 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:
- Válassza a Development Tools>SSH lehetőséget.
- 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:
- A bal oldali menüben válassza az Áttekintés lehetőséget.
- 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:
- A bal oldali menüben válassza azApp Service-naplók> lehetőséget.
- Az Alkalmazásnaplózás területen válassza a Fájlrendszer lehetőséget.
- 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:
- Adja meg az erőforráscsoport nevét.
- 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:
- A törlés megerősítéséhez adja meg az erőforráscsoport nevét.
- 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).
A verziókezelő gyökérkönyvtárából futtassa a
azd initparancsot.azd init --template python-app-service-postgresql-infraAmikor 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.Az Azure-ba való belépéshez futtassa a
azd auth loginparancsot, és kövesse az utasításokat.azd auth loginHozza létre a szükséges Azure-erőforrásokat a
azd provisionparanccsal. 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 provisionA
azd provisionparancs 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ővelazd 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.
Az AZD kimenetben keresse meg a beállításokat
AZURE_POSTGRESQL_USER,AZURE_POSTGRESQL_PASSWORD,AZURE_POSTGRESQL_HOST,AZURE_POSTGRESQL_NAME, ésAZURE_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_SCOPEAz Ö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
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 +.
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.
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.
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?
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.
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>Az SSH munkamenetben futtassa a
python manage.py migrateparancsot. Ha a parancs sikeres, az App Service sikeresen csatlakozik az adatbázishoz.Megjegyzés
Csak a
/homefá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
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>Adj hozzá néhány éttermet a listához.
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 beállítás?
- Hogyan csatlakozhatok a virtuális hálózat mögött más eszközökkel védett PostgreSQL-kiszolgálóhoz?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
- Hogyan van konfigurálva a Django-minta az Azure App Service-ben való futtatásra?
- Hogyan módosíthatom a SECRET_KEY alkalmazásbeállítást Key Vault-referenciára?
- Hogyan lehet hibakeresést végezni a GitHub Actions üzembe helyezése során?
- Nincs jogosultságom felhasználó által hozzárendelt identitás létrehozására
- Mit tehetek a GitHub Copilottal a kódtérben?
- Mennyibe kerül ez a beállítás?
- Hogyan csatlakozhatok a virtuális hálózat mögött más eszközökkel védett PostgreSQL-kiszolgálóhoz?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
- Hogyan van konfigurálva a Django-minta az Azure App Service-ben való futtatásra?
- Hogyan lehet hibakeresést végezni a GitHub Actions üzembe helyezése során?
- Nincs jogosultságom felhasználó által hozzárendelt identitás létrehozására
- Mit tehetek a GitHub Copilottal a kódtérben?
Mennyibe kerül ez a felszerelés?
Az elkészített erőforrások árazása a következőképpen alakul:
- Az App Service-csomag alapszinten jön létre, és fel- vagy leskálázható. Lásd az App Service díjszabását.
- A rugalmas PostgreSQL-kiszolgáló a legalacsonyabb, kirobbanó teljesítményű Standard_B1ms rétegben jön létre, a minimális tárhellyel, amely fel- vagy leskálázható. Tekintse meg az Azure Database for PostgreSQL díjszabását.
- A virtuális hálózat nem jár költséggel, hacsak nem konfigurál extra funkciókat, mint például a peering. Tekintse meg az Azure Virtual Network díjszabását.
- A privát DNS zóna kis díjat von maga után. Tekintse meg az Azure DNS díjszabását.
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
psqlparancsot 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_HOSTNAMEApp 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
@workspacekó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
@workspacesegí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.
Kapcsolódó tartalom
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: