Python Django-webalkalmazás üzembe helyezése a PostgreSQL-lel az Azure-ban
Ebben az oktatóanyagban egy adatvezérelt Python-webalkalmazást (Django) fog üzembe helyezni Azure-alkalmazás Szolgáltatásban az Azure Database for PostgreSQL relációsadatbázis-szolgáltatással. Azure-alkalmazás szolgáltatás támogatja Python linuxos kiszolgálói környezetben. Ha szeretné, tekintse meg inkább a Flask-oktatóanyagot vagy a FastAPI-oktatóanyagot .
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Hozzon létre egy biztonságos alapértelmezett App Service-, PostgreSQL- és Redis Cache-architektúrát.
- A kapcsolati titkos kulcsok biztonságossá tételéhez használjon felügyelt identitást és Key Vault-hivatkozásokat.
- Python-mintaalkalmazás üzembe helyezése az App Service-ben egy GitHub-adattárból.
- Az App Service-kapcsolati sztring és az alkalmazásbeállítások elérése az alkalmazáskódban.
- Végezze el a frissítéseket, és telepítse újra az alkalmazáskódot.
- Adatbázisséma létrehozása adatbázis-áttelepítések futtatásával.
- Diagnosztikai naplók streamelése az Azure-ból.
- Az alkalmazás kezelése az Azure Portalon.
- Azonos architektúra kiépítése és üzembe helyezése az Azure Developer CLI használatával.
- Optimalizálja a fejlesztési munkafolyamatot a GitHub Codespaces és a GitHub Copilot használatával.
Előfeltételek
- 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.
- A Python ismerete a Django fejlesztésével.
- (Nem kötelező) A GitHub Copilot kipróbálásához egy GitHub Copilot-fiók. 30 napos ingyenes próbaverzió érhető el.
- 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. 30 napos ingyenes próbaverzió érhető el.
Ugrás a végére
Ha csak látni szeretné a mintaalkalmazást ebben az oktatóanyagban, amely az Azure-ban fut, futtassa a következő parancsokat az Azure Cloud Shellben, és kövesse a következő utasításokat:
mkdir msdocs-django-postgresql-sample-app
cd msdocs-django-postgresql-sample-app
azd init --template msdocs-django-postgresql-sample-app
azd up
1. A minta futtatása
Először állítson be egy adatvezérelt mintaalkalmazást kiindulási pontként. Az Ön kényelme érdekében a mintaadattár tartalmaz egy fejlesztői tárolókonfigurációt. A fejlesztői tároló mindent tartalmaz, amire szüksége van egy alkalmazás fejlesztéséhez, beleértve az adatbázist, a gyorsítótárat és a mintaalkalmazás által igényelt összes környezeti változót. A fejlesztői tároló egy GitHub-kódtérben futtatható, ami azt jelenti, hogy a mintát bármely számítógépen futtathatja webböngészővel.
Feljegyzés
Ha ezt az oktatóanyagot a saját alkalmazásával együtt követi, tekintse meg a requirements.txt fájl leírását a README.md , hogy lássa, milyen csomagokra lesz szüksége.
1. lépés: Új böngészőablakban:
- Jelentkezzen be a GitHub-fiókjába.
- Navigáljon a https://github.com/Azure-Samples/msdocs-django-postgresql-sample-app/fork lapra
- Törölje a jelölést : Csak a főág másolása. Az összes ágat szeretnéd.
- Válassza az Elágazás létrehozása lehetőséget.
2. lépés: A GitHub-elágazásban:
- Válassza ki a kezdő ág fő>starter-no-infra elemét. Ez az ág csak a mintaprojektet tartalmazza, és nincs Azure-nal kapcsolatos fájl vagy konfiguráció.
- Válassza a Kód>létrehozása kódteret a starter-no-infra rendszeren.
A kódtér beállítása néhány percet vesz igénybe, és a végén fut
pip install -r requirements.txt
az adattárban. Emellett a megadott .env fájl már tartalmaz egy próbaváltozótSECRET_KEY
, amelyet a Django-nak helyileg kell futtatnia.
3. lépés: A kódtér termináljában:
- Adatbázis-áttelepítések futtatása a következővel
python manage.py migrate
: . - Futtassa az alkalmazást a következővel
python manage.py runserver
: . - 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őlapon kell megjelennie. Az alkalmazás leállításához írja be a következőtCtrl
+C
: .
Tipp.
Erről az adattárról a GitHub Copilotot is megkérdezheti. Példa:
- @workspace Mit tesz ez a projekt?
- @workspace Mit tesz a .devcontainer mappa?
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
2. App Service, adatbázis és gyorsítótár létrehozása
Ebben a lépésben hozza létre az Azure-erőforrásokat. Az oktatóanyagban használt lépések az App Service, az Azure Database for PostgreSQL és az Azure Cache szolgáltatást tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre. A létrehozási folyamathoz a következőket kell megadnia:
- A webalkalmazás neve . Ez az alkalmazás
https://<app-name>-<hash>.<region>.azurewebsites.net
DNS-nevének részeként használatos. - A régió , amely fizikailag futtatja az alkalmazást a világon. Az alkalmazás DNS-nevének részeként is használják.
- Az alkalmazás futtatókörnyezeti vereme . Itt választhatja ki az alkalmazáshoz használni kívánt Python-verziót.
- Az alkalmazás üzemeltetési terve . Ez a tarifacsomag, amely tartalmazza az alkalmazás funkcióit és skálázási kapacitását.
- Az alkalmazás erőforráscsoportja . Az erőforráscsoportokkal (logikai tárolóban) csoportosíthatja az alkalmazáshoz szükséges Összes Azure-erőforrást.
Jelentkezzen be az Azure Portalra, és kövesse az alábbi lépéseket a Azure-alkalmazás szolgáltatás erőforrásainak létrehozásához.
1. lépés: Az Azure Portalon:
- Írja be a "webalkalmazás-adatbázis" kifejezést az Azure Portal tetején található keresősávba.
- Válassza ki a Web App + Adatbázis címkével ellátott elemet a Marketplace címsora alatt. A létrehozási varázslót közvetlenül is megnyithatja.
2. lépés: A Webalkalmazás létrehozása + Adatbázis lapon töltse ki az űrlapot az alábbiak szerint.
- Erőforráscsoport: Válassza az Új létrehozása lehetőséget, és használja az msdocs-django-postgres-tutorial nevet.
- Régió: Bármely Önhöz közeli Azure-régió.
- Név: msdocs-python-postgres-XYZ.
- Futtatókörnyezeti verem: Python 3.12.
- Adatbázis: PostgreSQL – A rugalmas kiszolgáló alapértelmezés szerint adatbázismotorként van kiválasztva. A kiszolgáló neve és az adatbázis neve alapértelmezés szerint a megfelelő értékekre is be van állítva.
- Azure Cache for Redis hozzáadása: Igen.
- Üzemeltetési terv: Alapszintű. Ha készen áll, felskálázhat egy éles tarifacsomagra.
- Válassza az Áttekinté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 néhány percet vesz igénybe. Az üzembe helyezés befejeződése után válassza az Erőforrás megnyitása gombot. Közvetlenül az App Service-alkalmazásba kerül, de a következő erőforrások jönnek létre:
- Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
- App Service-csomag: Meghatározza az App Service számítási erőforrásait. Létrejön egy Linux-csomag az alapszinten .
- App Service: Az alkalmazást jelöli, és az App Service-csomagban fut.
- Virtuális hálózat: Integrálva az App Service alkalmazással, és elkülöníti a háttérhálózat forgalmát.
- Privát végpont: Hozzáférési végpont a Redis-gyorsítótárhoz a virtuális hálózaton.
- Hálózati adapterek: Magánhálózati IP-címeket jelöl, egyet a privát végpontokhoz.
- Rugalmas Azure Database for PostgreSQL-kiszolgáló: Csak a virtuális hálózaton belülről érhető el. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
- Azure Cache for Redis: Csak a magánhálózata mögött érhető el.
- saját DNS zónák: Engedélyezi annak az adatbázis-kiszolgálónak a DNS-feloldását, amely a Redis-gyorsítótárat használja a virtuális hálózaton.
3. A kapcsolat titkos kulcsának védelme és SECRET_KEY hozzáadása
A létrehozási varázsló már alkalmazásbeállításokként létrehozta a kapcsolati változókat. A biztonsági ajánlott eljárás azonban az, hogy a titkos kulcsokat teljesen kizárja az App Service-ből. A titkos kulcsokat egy kulcstartóba helyezi át, és a Service Connectors segítségével kulcstartó-hivatkozásokra módosítja az alkalmazásbeállítást.
1. lépés: A meglévő kapcsolati sztring lekérése
- 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ó sztringet a password= után későbbi használatra.
Ez az alkalmazásbeállítások lehetővé teszik a Postgres-adatbázishoz és a Privát végpontok mögött biztonságos Redis-gyorsítótárhoz való csatlakozást. A titkos kódok azonban közvetlenül az App Service-alkalmazásban vannak mentve, ami nem a legjobb. Ezt meg fogja változtatni. Emellett hozzá fog adni egy
SECRET_KEY
beállítást, amelyet a Django-alkalmazás igényel.
2. lépés: Kulcstartó létrehozása a titkos kódok biztonságos kezeléséhez
- A felső keresősávon írja be a "key vault" kifejezést, 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 írjon be egy nevet, amely csak betűkből és számokból áll.
- A Régióban állítsa be az erőforráscsoporthoz hasonló helyre.
3. lépés: A kulcstartó védelme privát végponttal
- 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 területén válassza ki ugyanazt a helyet, mint az App Service-alkalmazás.
- Írja be az msdocs-python-postgres-XYZVaultEndpoint nevet.
- A virtuális hálózatban válassza az msdocs-python-postgres-XYZVnet lehetőséget.
- Az alhálózatban msdocs-python-postgres-XYZSubnet.
- Kattintson az OK gombra.
- Válassza a Felülvizsgálat + létrehozás, majd a Létrehozás lehetőséget. Várja meg, amíg a Key Vault üzembe helyezése befejeződik. A következőt kell látnia: "Az üzembe helyezés befejeződött".
4. lépés: A PostgreSQL-összekötő konfigurálása
- A felső keresősávba írja be az msdocs-python-postgres kifejezést, majd válassza ki az msdocs-python-postgres-XYZ nevű App Service-erőforrást.
- Az App Service lap bal oldali menüjében válassza a Beállítások > szolgáltatás-összekötő lehetőséget. Már két összekötő van, amelyeket az alkalmazáslétrehozó varázsló hozott létre Önnek.
- 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 PostgreSQL szolgáltatás-összekötő Django-ügyféltípusa egy kapcsolati sztring helyett külön beállításokban adja meg az adatbázisváltozókat. A különálló változók könnyebben használhatók Django adatbázis-beállításaiban.
- Válassza a Hitelesítés lapot.
- 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. A szerkesztési párbeszédpanel tetején megnyílik a Kapcsolat létrehozása párbeszédpanel.
5. lépés: A Key Vault-kapcsolat létrehozása
- A Key Vault-kapcsolat Kapcsolat létrehozása párbeszédpaneljén, a Key Vaultban válassza ki a korábban létrehozott kulcstartót.
- Válassza a Felülvizsgálat é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 megjelenik az alapértelmezettConnector szerkesztési párbeszédpanelje. A Hitelesítés lapon várja meg, amíg létrejön a Key Vault-összekötő. Ha elkészült, a Key Vault kapcsolat legördülő listája automatikusan kiválasztja azt.
- 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 lapot.
- 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ó varázsló már védette 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 sztring ellenőrzéséhez válassza a AZURE_REDIS_CONNECTIONSTRING melletti Érték megjelenítése lehetőséget.
9. lépés: A mintaalkalmazás beolvassa a SECRET_KEY környezeti változót a szükséges SECRET_KEY beállítás beállításához. Ebben a lépésben alkalmazásbeállításként hozza létre.
- Az Alkalmazásbeállítások lapon válassza a Hozzáadás lehetőséget.
- A névbeállítása SECRET_KEY.
- Érték beállítása hosszú véletlenszerű sztringre.
- Kattintson az Alkalmaz gombra, majd az Alkalmaz gombra, majd a Megerősítés gombra.
Összefoglalva, a kapcsolat titkos kulcsainak biztonságossá tételének folyamata:
- A kapcsolat titkos kulcsainak lekérése az App Service-alkalmazás környezeti változóiból.
- Kulcstartó létrehozása.
- Key Vault-kapcsolat létrehozása a rendszer által hozzárendelt felügyelt identitással.
- A szolgáltatás-összekötők frissítése a titkos kulcsok kulcstartóban való tárolásához.
Feljegyzés
Ideális esetben az SECRET_KEY
alkalmazásbeállítást kulcstartó-referenciaként is konfigurálnia kell, ami egy többlépéses folyamat. További információ: Hogyan módosítsa a SECRET_KEY alkalmazásbeállítást Key Vault-referenciára?
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
4. Mintakód üzembe helyezése
Ebben a lépésben konfigurálja a GitHub üzembe helyezését a GitHub Actions használatával. Ez csak egy az App Service-ben történő üzembe helyezés számos módja közül, de nagyszerű módja annak is, hogy folyamatos integrációt nyújtsunk az üzembe helyezési folyamatba. Alapértelmezés szerint a GitHub-adattár minden git push
eleme elindítja a buildelési és üzembe helyezési műveletet.
1. lépés: A bal oldali menüben válassza az Üzembe helyezési>központ lehetőséget.
2. lépés: Az Üzembehelyezési központ lapon:
- 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ásokat az Azure engedélyezéséhez.
- A Szervezetben válassza ki a fiókját.
- Az Adattárban válassza az msdocs-django-postgresql-sample-app lehetőséget.
- Az Ágban válassza a starter-no-infra lehetőséget. Ez ugyanaz az ág, amelyben a mintaalkalmazással dolgozott, azure-ral kapcsolatos fájlok és konfigurációk nélkül.
- 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 véglegesít egy munkafolyamat-fájlt a kiválasztott GitHub-adattárba a
.github/workflows
címtárban. Alapértelmezés szerint az üzembehelyezési központ létrehoz egy felhasználó által hozzárendelt identitást a munkafolyamathoz a Microsoft Entra (OIDC-hitelesítés) használatával történő hitelesítéshez. Alternatív hitelesítési lehetőségekért lásd : Üzembe helyezés az App Service-ben a GitHub Actions használatával.
3. lépés: Futtassa git pull origin starter-no-infra
újra a mintaelágazás GitHub-kódterében.
Ezzel lekéri az újonnan véglegesített munkafolyamat-fájlt a kódtérbe.
4. lépés (1. lehetőség: a GitHub Copilottal):
- 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 magyarázatot adhat 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ásom egy App Service-webalkalmazásban fut, amely az Azure Service Connector használatával csatlakozik egy rugalmas PostgreSQL-kiszolgálóhoz a Django-ügyféltípus használatával. Milyen környezeti változóneveket kell használnom?" Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad: a GitHub Copilot alábbi lépései nélkül, és akár azt is, hogy végezze el a módosítást az azureproject/production.py fájlban.
- Nyissa meg az azureproject/production.py az Explorerben, és adja hozzá a kódjavaslatot.
- Kérdezze meg a következőt: "@workspace Az App Service-alkalmazás az Azure Service Connector használatával is csatlakozik a Cache for Redishez a Django-ügyféltípus használatával. Milyen környezeti változóneveket kell használnom?*" A Copilot a 2. lehetőségben szereplőhöz hasonló kódjavaslatot adhat: a GitHub Copilot alábbi lépései nélkül, és akár azt is megmondhatja, hogy végezze el a módosítást az azureproject/production.py fájlban.
- Adja hozzá a kódjavaslatot. A GitHub Copilot nem minden alkalommal ad ugyanazt a választ, és ez nem mindig helyes. Előfordulhat, hogy további kérdéseket kell feltennie a válasz finomhangolásához. Tippekért lásd: Mit tehetek a GitHub Copilottal a kódtérben?
4. lépés (2. lehetőség: a GitHub Copilot nélkül):
- Nyissa meg a Program.cs a explorerben.
- Keresse meg a megjegyzésben szereplő kódot (29-48. sor), és bontsa ki.
Ez PostgreSQL- és Redis-kapcsolatokat
AZURE_POSTGRESQL_USER
hoz létre a , ,AZURE_POSTGRESQL_PASSWORD
AZURE_POSTGRESQL_HOST
,AZURE_POSTGRESQL_NAME
ésAZURE_REDIS_CONNECTIONSTRING
.
5. lépés:
- Válassza ki a Forrásvezérlő bővítményt.
- A szövegmezőbe írjon be egy véglegesítési üzenetet, például
Configure Azure database and cache connectons
: . Vagy válassza kiés hagyja, hogy a GitHub Copilot véglegesítési üzenetet hozzon létre Önnek.
- 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özpont lapra az Azure Portalon:
- Válassza a Naplók lapot, majd a Frissítés lehetőséget az új üzembe helyezés futtatásának megtekintéséhez.
- Az üzembe helyezési futtatás naplóelemében válassza ki a Build/Deploy Logs bejegyzést a legújabb időbélyeggel.
7. lépés: A GitHub-adattárba kerül, és láthatja, hogy a GitHub-művelet fut. A munkafolyamat-fájl két különálló szakaszt határoz meg, a buildelést és az üzembe helyezést. Várja meg, amíg a GitHub-futtatás sikeres állapotot jelenít meg. Körülbelül 5 percig tart.
Problémákat tapasztal? Tekintse meg a hibaelhárítási útmutatót.
5. Adatbázisséma létrehozása
A virtuális hálózat által védett PostgreSQL-adatbázissal a Django-adatbázisok migrálásának legegyszerűbb módja egy SSH-munkamenet, amelyen az App Service Linux-tárolója található.
1. lépés: Vissza az App Service lap bal oldali menüjébe,
- Válassza a Development Tools>SSH lehetőséget.
- Válassza az Indít elemet.
2. lépés: Futtassa python manage.py migrate
az SSH-munkamenetben. Ha sikeres, az App Service sikeresen csatlakozik az adatbázishoz.
Tipp.
Az SSH-munkamenetben /home
csak a fájlok módosításai őrizhetők meg az alkalmazás újraindítása után. A külső /home
módosítások nem maradnak meg. Az SSH-munkamenet olyan gyakori python manage.py
parancsok futtatásához hasznos, mint például a felhasználó létrehozása a python manage.py createsuperuser
. További információ: django django-admin és manage.py dokumentációja. A superuser-fiók használatával érheti el a /admin
webhely egy részét.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
6. Tallózás az alkalmazáshoz
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza az Áttekintés lehetőséget.
- Válassza ki az alkalmazás URL-címét.
2. lépés: Vegyen fel néhány éttermet a listára. Gratulálunk, egy webalkalmazást futtat a Azure-alkalmazás Service-ben, biztonságos kapcsolattal az Azure Database for PostgreSQL-hez.
7. Diagnosztikai naplók streamelése
Azure-alkalmazás szolgáltatás rögzíti az összes konzolnaplót, hogy segítsen diagnosztizálni az alkalmazással kapcsolatos problémákat. A mintaalkalmazás az print()
alábbi módon mutatja be ezt a képességet.
def index(request):
print('Request for index page received')
restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza az App Service-naplók figyelése>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. Láthatja az alkalmazás naplóit, beleértve a platformnaplókat és a tárolón belüli naplókat.
További információ a Python-alkalmazásokban való naplózásról a Python-alkalmazásHoz készült Azure Monitor beállításáról szóló sorozatban.
8. Erőforrások törlése
Ha végzett, törölheti az összes erőforrást az Azure-előfizetéséből az erőforráscsoport törlésével.
1. lépés: Az Azure Portal tetején található keresősávon:
- 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.
2. Azure-erőforrások létrehozása és mintaalkalmazás üzembe helyezése
Ebben a lépésben létrehozza az Azure-erőforrásokat, és üzembe helyez egy mintaalkalmazást a Linuxon futó App Service-ben. Az oktatóanyagban használt lépések az App Service, az Azure Database for PostgreSQL és az Azure Cache for Redis szolgáltatást tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre.
A fejlesztői tárolóban már megtalálható az Azure Developer CLI (AZD).
Futtassa
azd init
az adattár gyökerét.azd init --template python-app-service-postgresql-infra
Amikor a rendszer kéri, adja meg a következő válaszokat:
Kérdés Válasz Az aktuális könyvtár nem üres. Inicializálni szeretne egy projektet itt a "saját könyvtárában>"?< Y Mit szeretne tenni ezekkel a fájlokkal? Meglévő fájljaim változatlanul tartása Adjon meg egy új környezetnevet Írjon be egy egyedi nevet. Az AZD-sablon ezt a nevet használja a webalkalmazás DNS-nevének részeként az Azure-ban ( <app-name>-<hash>.azurewebsites.net
). Alfanumerikus karakterek és kötőjelek engedélyezettek.Jelentkezzen be az Azure-ba a
azd auth login
parancs futtatásával és a parancssor követésével:azd auth login
Hozza létre a szükséges Azure-erőforrásokat a
azd provision
paranccsal. Kövesse az utasításokat az Azure-erőforrások kívánt előfizetésének és helyének kiválasztásához.azd provision
A
azd provision
parancs végrehajtása körülbelül 15 percet vesz igénybe (a Redis-gyorsítótár a legtöbb időt veszi igénybe). Később módosítja a kódot, hogy működjön az App Service-lel, és üzembe helyezze a módosításokat a következővelazd deploy
: . Amíg fut, a parancs üzeneteket küld a kiépítési és üzembe helyezési folyamatról, beleértve az Azure-beli üzembe helyezésre mutató hivatkozást is.Ez az AZD-sablon olyan fájlokat (azure.yaml és infra könyvtár) tartalmaz, amelyek az alábbi Azure-erőforrásokkal létrehoznak egy alapértelmezett, biztonságos architektúrát:
- Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
- App Service-csomag: Meghatározza az App Service számítási erőforrásait. Létrejön egy Linux-csomag az alapszinten .
- App Service: Az alkalmazást jelöli, és az App Service-csomagban fut.
- Virtuális hálózat: Integrálva az App Service alkalmazással, és elkülöníti a háttérhálózat forgalmát.
- Privát végpontok: Hozzáférési végpontok a kulcstartóhoz és a Redis-gyorsítótárhoz a virtuális hálózaton.
- Hálózati adapterek: Magánhálózati IP-címeket jelöl, egyet a privát végpontokhoz.
- Rugalmas Azure Database for PostgreSQL-kiszolgáló: Csak a virtuális hálózaton belülről érhető el. A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
- saját DNS zóna: Engedélyezi a PostgreSQL-kiszolgáló DNS-feloldását a virtuális hálózaton.
- Log Analytics-munkaterület: Az alkalmazás céltárolójaként szolgál a naplók elküldéséhez, ahol a naplókat is lekérdezheti.
- Azure Cache for Redis: Csak a privát végpontja mögött érhető el.
- Key Vault: Csak a privát végpontja mögött érhető el. Az App Service-alkalmazás titkos kulcsainak kezelésére szolgál.
Ha a parancs befejezi az erőforrások létrehozását és az alkalmazáskód első üzembe helyezését, az üzembe helyezett mintaalkalmazás még nem működik, mert kis módosításokat kell végrehajtania ahhoz, hogy csatlakozni lehessen az Azure-beli adatbázishoz.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
3. Az adatbázis kapcsolati sztring
Az Ön által használt AZD-sablon már alkalmazásbeállításokként létrehozta a kapcsolati változókat, és azokat az ön kényelme érdekében a terminálon adja ki. Az alkalmazásbeállítások az egyik módja annak, hogy a kapcsolat titkos kulcsait ne használja a kódtárban.
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 titkos kódok biztonsága érdekében csak a beállításnevek jelennek meg. Így néznek ki az AZD-kimenetben:App Service app has the following connection settings: - AZURE_POSTGRESQL_NAME - AZURE_POSTGRESQL_HOST - AZURE_POSTGRESQL_USER - AZURE_POSTGRESQL_PASSWORD - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
Az ÖN kényelme érdekében az AZD-sablon az alkalmazás alkalmazásbeállítási oldalára mutató közvetlen hivatkozást jeleníti meg. Keresse meg a hivatkozást, és nyissa meg egy új böngészőlapon.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
4. Mintakód módosítása és ismételt üzembe helyezés
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ásom egy App Service-webalkalmazásban fut, amely az Azure Service Connector használatával csatlakozik egy rugalmas PostgreSQL-kiszolgálóhoz a Django-ügyféltípus használatával. Milyen környezeti változóneveket kell használnom?" Előfordulhat, hogy a Copilot a 2. lehetőséghez hasonló kódjavaslatot ad: a GitHub Copilot alábbi lépései nélkül, és akár azt is, hogy végezze el a módosítást az azureproject/production.py fájlban.
Nyissa meg az azureproject/production.py az Explorerben, és adja hozzá a kódjavaslatot.
A GitHub Copilot nem minden alkalommal ad ugyanazt a választ, és ez nem mindig helyes. Előfordulhat, hogy további kérdéseket kell feltennie a válasz finomhangolásához. Tippekért lásd: Mit tehetek a GitHub Copilottal a kódtérben?
A terminálban futtassa a
azd deploy
parancsot.azd deploy
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
5. Adatbázisséma létrehozása
A virtuális hálózat által védett PostgreSQL-adatbázissal a Django-adatbázisok migrálásának legegyszerűbb módja egy SSH-munkamenet, amelyen az App Service Linux-tárolója található.
Az AZD-kimenetben keresse meg az SSH-munkamenet URL-címét, és keresse meg a böngészőben. Így néz ki a kimenetben:
Open SSH session to App Service container at: https://<app-name>.scm.azurewebsites.net/webssh/host
Az SSH-munkamenetben futtassa a következőt
python manage.py migrate
: . Ha sikeres, az App Service sikeresen csatlakozik az adatbázishoz.Feljegyzés
Csak a fájlok
/home
módosításai őrizhetők meg az alkalmazás újraindítása után. A külső/home
módosítások nem maradnak meg.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
6. Tallózás az alkalmazáshoz
Az AZD-kimenetben keresse meg az alkalmazás URL-címét, és keresse meg a böngészőben. Az URL-cím így néz ki az AZD-kimenetben:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Vegyen fel néhány éttermet a listára.
Gratulálunk, egy webalkalmazást futtat a Azure-alkalmazás Service-ben, biztonságos kapcsolattal az Azure Database for PostgreSQL-hez.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
7. Diagnosztikai naplók streamelése
Azure-alkalmazás szolgáltatás rögzítheti a konzolnaplókat az alkalmazással kapcsolatos problémák diagnosztizálásához. A kényelem érdekében az AZD-sablon már lehetővé teszi a helyi fájlrendszerbe való naplózást, és a naplókat egy Log Analytics-munkaterületre szállítja.
A mintaalkalmazás az print()
alábbi kódrészletben látható módon bemutatja ezt a képességet.
def index(request):
print('Request for index page received')
restaurants = Restaurant.objects.annotate(avg_rating=Avg('review__rating')).annotate(review_count=Count('review'))
lastViewedRestaurant = request.session.get("lastViewedRestaurant", False)
Az AZD-kimenetben keresse meg az App Service-naplók streameléséhez és a böngészőben való navigáláshoz használt hivatkozást. A hivatkozás így néz ki az AZD-kimenetben:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
További információ a Python-alkalmazásokban való naplózásról a Python-alkalmazásHoz készült Azure Monitor beállításáról szóló sorozatban.
Problémákat tapasztal? Tekintse meg a hibaelhárítási szakaszt.
8. Erőforrások törlése
Ha törölni szeretné az összes Azure-erőforrást az aktuális üzemi környezetben, futtassa azd down
és kövesse az utasításokat.
azd down
Hibaelhárítás
Az alábbiakban azokat a problémákat soroljuk fel, amelyekkel az oktatóanyag és a megoldásuk lépései során találkozhat.
Nem tudok csatlakozni az SSH-munkamenethez
Ha nem tud csatlakozni az SSH-munkamenethez, akkor maga az alkalmazás nem indult el. Részletekért tekintse meg a diagnosztikai naplókat . Ha például egy hasonló KeyError: 'AZURE_POSTGRESQL_HOST'
hibaüzenet jelenik meg, az azt jelentheti, hogy a környezeti változó hiányzik (lehet, hogy eltávolította az alkalmazásbeállítást).
Hibaüzenet jelenik meg az adatbázis-migrálások futtatásakor
Ha bármilyen, az adatbázishoz való csatlakozással kapcsolatos hibát tapasztal, ellenőrizze, hogy az alkalmazás beállításai (AZURE_POSTGRESQL_USER
, AZURE_POSTGRESQL_PASSWORD
, , AZURE_POSTGRESQL_HOST
és AZURE_POSTGRESQL_NAME
) módosultak-e vagy törölve lettek-e. A kapcsolati sztring nélkül a migrálási parancs nem tud kommunikálni az adatbázissal.
Gyakori kérdések
- Mennyibe kerül ez a beállítás?
- Hogyan csatlakozni 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 a Azure-alkalmazás Szolgáltatáson való futtatásra?
- Hogyan módosítsa a SECRET_KEY alkalmazásbeállítást Key Vault-referenciára?
- Hogyan hibakeresési hibákat 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 csatlakozni 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 a Azure-alkalmazás Szolgáltatáson való futtatásra?
- Hogyan hibakeresési hibákat 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?
A létrehozott erőforrások díjszabása a következő:
- 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, kipukkanható rétegben Standard_B1ms jön létre, a minimális tárterületmérettel, amely fel- vagy leskálázható. Tekintse meg az Azure Database for PostgreSQL díjszabását.
- A virtuális hálózat csak akkor számít fel díjat, ha nem konfigurál további funkciókat, például társviszony-létesítést. Tekintse meg az Azure Virtual Network díjszabását.
- A privát DNS-zóna kis díjat számít fel. Tekintse meg az Azure DNS díjszabását.
Hogyan csatlakozni a virtuális hálózat mögött más eszközökkel védett PostgreSQL-kiszolgálóhoz?
- A parancssori eszközök alapszintű elérése érdekében az alkalmazás SSH-munkamenetéből is futtatható
psql
. - Asztali eszközről való csatlakozáshoz a gépnek a virtuális hálózaton belül kell lennie. Ez lehet például egy Azure-beli virtuális gép, amely az egyik alhálózathoz csatlakozik, vagy egy helyszíni hálózat egy olyan gépe, amely helyek közötti VPN-kapcsolattal rendelkezik az Azure-beli virtuális hálózattal.
- Az Azure Cloud Shellt a virtuális hálózattal is integrálhatja.
Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
Ha például az App Service automatikus munkafolyamat-fájlját használja, mindegyik git push
elindít egy új buildet és üzembe helyezést. A GitHub-adattár helyi klónjából elvégezheti a kívánt frissítéseket, és leküldheti a GitHubra. Példa:
git add .
git commit -m "<some-message>"
git push origin main
Hogyan van konfigurálva a Django-minta a Azure-alkalmazás Szolgáltatáson való futtatásra?
A Django mintaalkalmazás konfigurálja az azureproject/production.py fájl beállításait, hogy az Azure-alkalmazás Szolgáltatásban fusson. Ezek a módosítások gyakoriak a Django éles környezetben való üzembe helyezéséhez, és nem az App Service-hez.
A Django ellenőrzi a HTTP_HOST fejlécet a bejövő kérelmekben. A mintakód az
WEBSITE_HOSTNAME
App Service környezeti változójával adja hozzá az alkalmazás tartománynevét Django ALLOWED_HOSTS beállításához.# Configure the domain name using the environment variable # that Azure automatically creates for us. ALLOWED_HOSTS = [os.environ['WEBSITE_HOSTNAME']] if 'WEBSITE_HOSTNAME' in os.environ else []
A Django nem támogatja a statikus fájlok éles környezetben való kiszolgálását. Ebben az oktatóanyagban a WhiteNoise használatával engedélyezi a fájlok kiszolgálását. A WhiteNoise csomag már telepítve van requirements.txt, és a köztes szoftver hozzá van adva a listához.
# WhiteNoise configuration MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', # Add whitenoise middleware after the security middleware 'whitenoise.middleware.WhiteNoiseMiddleware',
Ezután a statikus fájlbeállítások a Django dokumentációja szerint vannak konfigurálva.
SESSION_ENGINE = "django.contrib.sessions.backends.cache" STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
További információ: Django-alkalmazások éles beállításai.
Hogyan módosítsa a SECRET_KEY alkalmazásbeállítást Key Vault-referenciára?
A portál fenti lépéseiben a következő Azure CLI-parancsok futtatásával válthat SECRET_KEY
Key Vault-referenciára a cloud shellben:
# Change the following variables to match your environment
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
KEY_VAULT_NAME=<key-vault-name>
APP_SERVICE_NAME=<app-name>
SECRET_NAME=djangoSecretKey
# Set the subscription ID
az account set --subscription $SUBSCRIPTION_ID
# Assign 'Key Vault Secrets Officer' role to your user at the scope of the key vault
az role assignment create \
--assignee $(az ad signed-in-user show --query id -o tsv) \
--role $(az role definition list --name "Key Vault Secrets Officer" --query "[].id" -o tsv) \
--scope $(az keyvault show --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
# Add the secret to the key vault
az keyvault secret set \
--vault-name $KEY_VAULT_NAME \
--name $SECRET_NAME \
--value $(python -c 'import secrets; print(secrets.token_hex())')
# Add Key Vault reference to the App Service configuration
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APP_SERVICE_NAME \
--settings "SECRET_KEY=@Microsoft.KeyVault(SecretUri=https://$KEY_VAULT_NAME.vault.azure.net/secrets/$SECRET_NAME)"
Ugyanezt a portálon is megteheti. További információk:
Hogyan hibakeresési hibákat a GitHub Actions üzembe helyezése során?
Ha egy lépés meghiúsul az automatikusan létrehozott GitHub-munkafolyamatfájlban, próbálja meg módosítani a sikertelen parancsot, hogy részletesebb kimenetet hozzon létre. A parancs kimenetét python
például a beállítás hozzáadásával -d
érheti el. Véglegesítse és küldje le a módosításokat, hogy egy másik üzembe helyezést aktiváljon az App Service-be.
Nincs jogosultságom felhasználó által hozzárendelt identitás létrehozására
Lásd: A GitHub Actions üzembe helyezésének beállítása az üzembe helyezési központból.
Mit tehetek a GitHub Copilottal a kódtérben?
Lehet, hogy észrevette, hogy a GitHub Copilot csevegési nézete már ott volt a kódtér létrehozásakor. Az Ön kényelme érdekében a GitHub Copilot csevegőbővítményt is belefoglaljuk a tárolódefinícióba (lásd: .devcontainer/devcontainer.json). Azonban szüksége van egy GitHub Copilot-fiókra (30 napos ingyenes próbaverzió érhető el).
Néhány tipp a GitHub Copilot használatához:
- Egyetlen csevegési munkamenetben a kérdések és válaszok egymásra épülnek, és módosíthatja a kérdéseket, hogy finomhangolja a választ.
- Alapértelmezés szerint a GitHub Copilot nem rendelkezik hozzáféréssel az adattárban lévő fájlokhoz. Ha fel szeretne kérdezni egy fájlt, először nyissa meg a fájlt a szerkesztőben.
- Ha azt szeretné, hogy a GitHub Copilot hozzáférhessen az adattárban lévő összes fájlhoz a válaszok előkészítésekor, kezdje a kérdést a következővel
@workspace
: . További információ: Use the @workspace agent. - A csevegési munkamenetben a GitHub Copilot javasolhat módosításokat, és (azokkal együtt
@workspace
) még azt is, hogy hol végezze el a módosításokat, de önnek nem engedélyezett a módosítások végrehajtása. Önnek kell hozzáadnia a javasolt módosításokat, és tesztelnie kell azt.
Következő lépések
Folytassa a következő oktatóanyaggal, amelyből megtudhatja, hogyan védheti meg az alkalmazást egyéni tartománnyal és tanúsítvánnyal.
Megtudhatja, hogyan futtatja az App Service a Python-alkalmazásokat: