Oktatóanyag: ASP.NET Core- és Azure SQL Database-alkalmazás üzembe helyezése Azure-alkalmazás Szolgáltatásban
Ebben az oktatóanyagban megtudhatja, hogyan helyezhet üzembe adatvezérelt ASP.NET Core-alkalmazást a szolgáltatás Azure-alkalmazás, és hogyan csatlakozhat egy Azure SQL Database-hez. Emellett üzembe fog helyezni egy Azure Cache for Redist is, hogy engedélyezze a gyorsítótárazási kódot az alkalmazásban. Azure-alkalmazás szolgáltatás egy nagymértékben skálázható, önjavító, web hosting szolgáltatás, amely könnyen üzembe helyezhet alkalmazásokat Windowson vagy Linuxon. Bár ez az oktatóanyag egy ASP.NET Core 8.0-alkalmazást használ, a folyamat ugyanaz, mint a ASP.NET Core más verzióiban.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Hozzon létre egy biztonságos alapértelmezett App Service-, SQL Database- és Redis-gyorsítótár-architektúrát.
- A kapcsolati titkos kulcsok biztonságossá tételéhez használjon felügyelt identitást és Key Vault-hivatkozásokat.
- Helyezzen üzembe egy minta ASP.NET Core-alkalmazást az App Service-ben egy GitHub-adattárból.
- Az App Service-kapcsolati sztring és az alkalmazásbeállításokat az alkalmazáskódban használja.
- Végezze el a frissítéseket, és telepítse újra az alkalmazáskódot.
- Adatbázisséma létrehozása migrálási csomag feltöltésével.
- 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 ASP.NET Core fejlesztésének ismerete.
- (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 ASP.NET Core fejlesztésének ismerete.
- (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
Ebben az oktatóanyagban gyorsan üzembe helyezheti a mintaalkalmazást, és megtekintheti, hogy fut-e az Azure-ban. Futtassa a következő parancsokat az Azure Cloud Shellben, és kövesse a következő utasításokat:
dotnet tool install --global dotnet-ef
mkdir msdocs-app-service-sqldb-dotnetcore
cd msdocs-app-service-sqldb-dotnetcore
azd init --template msdocs-app-service-sqldb-dotnetcore
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.
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-app-service-sqldb-dotnetcore/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.
3. lépés: A kódtér termináljában:
- Adatbázis-áttelepítések futtatása a következővel
dotnet ef database update
: . - Futtassa az alkalmazást a következővel
dotnet run
: . - Amikor megjelenik az értesítés
Your application running on port 5093 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 SQL Database és az Azure Cache szolgáltatást is 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 .NET-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-core-sql-tutorial nevet.
- Régió: Bármely Önhöz közeli Azure-régió.
- Név: msdocs-core-sql-XYZ, ahol az XYZ három véletlenszerű karakter. Ennek a névnek az Azure-on belül egyedinek kell lennie.
- Futtatókörnyezeti verem: .NET 8 (LTS).
- Motor: SQLAzure. Az Azure SQL Database egy teljes körűen felügyelt platform szolgáltatásként (PaaS) adatbázismotor, amely mindig az SQL Server legújabb stabil verzióján fut.
- 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égpontok: Hozzáférési végpontok a kulcstartóhoz, az adatbázis-kiszolgáló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.
- Azure SQL Database-kiszolgáló: Csak a privát végpontja mögött érhető el.
- Azure SQL Database: A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
- 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.
- saját DNS zónák: Engedélyezze a kulcstartó, az adatbázis-kiszolgáló és a Redis-gyorsítótár DNS-feloldását a virtuális hálózaton.
3. A kapcsolat titkos kulcsának védelme
A létrehozási varázsló már .NET-kapcsolati sztring és alkalmazásbeállításokként létrehozta a kapcsolati sztringet. 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.
Tipp.
A jelszó nélküli hitelesítés használatához tekintse meg Hogyan az SQL Database-kapcsolat módosítását felügyelt identitás használatára?
1. lépés: Az App Service oldalán:
- A bal oldali menüben válassza a Beállítások > környezeti változók Kapcsolati > sztringek lehetőséget.
- Válassza a AZURE_SQL_CONNECTIONSTRING.
- Az Add/Edit kapcsolati sztring Érték mezőjében keresse meg a Jelszó= részt a sztring végén.
- Másolja a jelszó sztringet a Password= után későbbi használatra. Ez a kapcsolati sztring lehetővé teszi a privát végpont mögött biztonságos SQL-adatbázishoz való csatlakozást. A jelszó közvetlenül az App Service alkalmazásban lesz mentve, ami nem a legjobb. Hasonlóképpen, a Redis cache kapcsolati sztring az Alkalmazásbeállítások lapon tartalmaz egy titkos kulcsot. Ezt meg fogja változtatni.
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-core-sql-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 a mintahelyre erőforráscsoportként.
3. lépés:
- 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-core-sql-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 a mintahelyre erőforráscsoportként.
- A párbeszédpanel Hely területén válassza ki ugyanazt a helyet, mint az App Service-alkalmazás.
- Az Erőforráscsoportban válassza az msdocs-core-sql-tutorial lehetőséget.
- Írja be az msdocs-core-sql-XYZVvaultEndpoint nevet.
- A virtuális hálózatban válassza az msdocs-core-sql-XYZVnet lehetőséget.
- Az alhálózatban msdocs-core-sql-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 felső keresősávba írja be az msdocs-core-sql kifejezést, majd az msdocs-core-sql-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 az SQL Database-összekötő melletti jelölőnégyzetet, majd válassza a Szerkesztés lehetőséget.
- 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 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. Látnia kell, hogy a rendszer által hozzárendelt felügyelt identitás ki van jelölve.
- Amikor az ellenőrzés befejeződött, válassza a Létrehozás lehetőséget.
6. lépés: 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 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.
7. lépés: A 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 módosítások ellenőrzése:
- A bal oldali menüben válassza ismét a Környezeti változók kapcsolati > sztringek lehetőséget.
- A AZURE_SQL_CONNECTIONSTRING 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 az Alkalmazásbeállítás lapot. A AZURE_REDIS_CONNECTIONSTRING mellett válassza az Érték megjelenítése lehetőséget. Az értéknek is meg kell lennie
@Microsoft.KeyVault(...)
.
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-app-service-sqldb-dotnetcore 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érdés: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz és a gyorsítótárhoz?" A Copilot esetleg magyarázatot ad az
MyDatabaseContext
osztályról és a Program.cs konfigurálásáról. - "Éles módban azt szeretném, ha az alkalmazás az adatbázishoz AZURE_SQL_CONNECTIONSTRING nevű kapcsolati sztring és a AZURE_REDIS_CONNECTIONSTRING* nevű alkalmazásbeállítást használna." 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 a Program.cs fájlban.
- Nyissa meg Program.cs 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?
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 (12–21. sor), és bontsa ki.
Ez a kód az alkalmazásbeállítással
AZURE_REDIS_CONNECTIONSTRING
csatlakozik az adatbázishoz a Redis-gyorsítótár használatávalAZURE_SQL_CONNECTIONSTRING
és az ahhoz való csatlakozással.
5. lépés (1. lehetőség: a GitHub Copilottal):
- Nyissa meg a .github/workflows/starter-no-infra_msdocs-core-sql-XYZ fájlt az explorerben. Ezt a fájlt az App Service létrehozási varázslója hozta létre.
- Jelölje ki a
dotnet publish
lépést, és válassza a lehetőséget . - Kérdezze meg a Copilotot: "Telepítse a dotnet ef-t, majd hozzon létre egy migrálási csomagot ugyanabban a kimeneti mappában."
- Ha a javaslat elfogadható, válassza az Elfogadás lehetőséget. 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?
5. lépés (2. lehetőség: a GitHub Copilot nélkül):
- Nyissa meg a .github/workflows/starter-no-infra_msdocs-core-sql-XYZ fájlt az explorerben. Ezt a fájlt az App Service létrehozási varázslója hozta létre.
dotnet publish
A lépés alatt adjon hozzá egy lépést az Entity Framework Core eszköz telepítéséhez a paranccsaldotnet tool install -g dotnet-ef --version 8.*
.- Az új lépésben adjon hozzá egy újabb lépést az adatbázis-migrálási csomag létrehozásához az üzembehelyezési csomagban:
dotnet ef migrations bundle --runtime linux-x64 -o ${{env.DOTNET_ROOT}}/myapp/migrationsbundle
. A migrálási csomag egy önálló végrehajtható fájl, amely a .NET SDK nélkül futtatható az éles környezetben. A Linux App Service-tárolóban csak a .NET-futtatókörnyezet található, a .NET SDK-val nem.
6. 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 connections
: . 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.
7. 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.
8. 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.
5. Adatbázisséma létrehozása
A virtuális hálózat által védett SQL Database használatával a dotnet-adatbázisok migrálásának legegyszerűbb módja az App Service-tárolóval folytatott SSH-munkamenet.
1. lépés: Az App Service lap bal oldali menüjében válassza a Development Tools>SSH lehetőséget, majd az Ugrás lehetőséget.
2. lépés: Az SSH-terminálban:
- Futtassa az
cd /home/site/wwwroot
parancsot. Itt találja az összes telepített fájlt. - Futtassa a GitHub-munkafolyamat által létrehozott migrálási csomagot a paranccsal
./migrationsbundle -- --environment Production
. Ha sikerül, az App Service sikeresen csatlakozik az SQL Database-hez. Ne feledje, hogy--environment Production
megfelel a Program.cs végrehajtott kódmódosításoknak.
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.
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: Adjon hozzá néhány feladatot a listához. Gratulálunk, egy biztonságos, adatvezérelt ASP.NET Core-alkalmazást futtat a Azure-alkalmazás Service-ben.
Tipp.
A mintaalkalmazás implementálja a gyorsítótár-feltöltési mintát. Amikor másodszor látogat meg egy adatnézetet, vagy újra betölti ugyanazt a lapot az adatmódosítások elvégzése után, a weblap feldolgozási ideje sokkal gyorsabban jelenik meg, mert az adatbázis helyett a gyorsítótárból tölti be az adatokat.
7. Diagnosztikai naplók streamelése
Azure-alkalmazás szolgáltatás rögzíti a konzolra naplózott összes üzenetet, hogy segítsen az alkalmazással kapcsolatos problémák diagnosztizálásában. A mintaalkalmazás minden végpontján konzolnapló-üzeneteket ad ki, hogy bemutassuk ezt a képességet.
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, majd 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.
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 SQL Database és az Azure Cache for Redis szolgáltatást is 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 dotnet-app-service-sqldb-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, és telepítse az alkalmazáskódot a
azd up
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 up
A
azd up
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). Emellett lefordítja és üzembe helyezi az alkalmazáskódot, de később módosítja a kódot, hogy működjön az App Service-lel. 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. Amikor befejeződik, a parancs egy hivatkozást is megjelenít az üzembe helyezési alkalmazásra.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, az adatbázis-kiszolgáló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.
- Azure SQL Database-kiszolgáló: Csak a privát végpontja mögött érhető el.
- Azure SQL Database: A rendszer létrehoz egy adatbázist és egy felhasználót a kiszolgálón.
- 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.
- saját DNS zónák: Engedélyezze a kulcstartó, az adatbázis-kiszolgáló és a Redis-gyorsítótár DNS-feloldását a virtuális hálózaton.
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. A kapcsolati sztring ellenőrzése
Tipp.
Az alapértelmezett SQL-adatbázis kapcsolati sztring SQL-hitelesítést használ. A biztonságosabb, jelszó nélküli hitelesítésért tekintse meg Hogyan módosítsa az SQL Database-kapcsolatot felügyelt identitás használatára?
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_SQL_CONNECTIONSTRING
ésAZURE_REDIS_CONNECTIONSTRING
a . Csak a beállításnevek jelennek meg. Így néznek ki az AZD-kimenetben:App Service app has the following connection strings: - AZURE_SQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
AZURE_SQL_CONNECTIONSTRING
tartalmazza az Azure-beli SQL Database kapcsolati sztring, ésAZURE_REDIS_CONNECTIONSTRING
tartalmazza az Azure Redis cache-hez kapcsolati sztring. Ezeket később kell használnia a kódban.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érdés: "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz és a gyorsítótárhoz?" A Copilot esetleg magyarázatot ad az
MyDatabaseContext
osztályról és a Program.cs konfigurálásáról."Éles módban azt szeretném, ha az alkalmazás az adatbázishoz AZURE_SQL_CONNECTIONSTRING nevű kapcsolati sztring és a AZURE_REDIS_CONNECTIONSTRING* nevű alkalmazásbeállítást használna." 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 a Program.cs fájlban.
Nyissa meg Program.cs 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 módosítások üzembe helyezése előtt még létre kell hoznia egy migrálási csomagot.
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 SQL Database használatával az adatbázis-áttelepítések futtatásának legegyszerűbb módja az App Service-tárolóval folytatott SSH-munkamenet. Az App Service Linux-tárolói azonban nem rendelkeznek .NET SDK-val, így az adatbázis-áttelepítések futtatásának legegyszerűbb módja egy önálló migrálási csomag feltöltése.
Hozzon létre egy migrálási csomagot a projekthez a következő paranccsal:
dotnet ef migrations bundle --runtime linux-x64 -o migrationsbundle
Tipp.
A mintaalkalmazás (lásd : DotNetCoreSqlDb.csproj) úgy van konfigurálva, hogy belefoglalja ezt a migrationsbundle-fájlt . A fázis során a
azd package
migrálási csomag hozzá lesz adva az üzembe helyezési csomaghoz.Az összes módosítás üzembe helyezése a következővel
azd up
: .azd up
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>-<hash>.scm.azurewebsites.net/webssh/host
Az SSH-terminálon futtassa a következő parancsokat:
cd /home/site/wwwroot ./migrationsbundle -- --environment Production
Ha sikeres, az App Service sikeresen csatlakozik az adatbázishoz. Ne feledje, hogy
--environment Production
megfelel a Program.cs végrehajtott kódmódosításoknak.
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.
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>-<hash>.azurewebsites.net/
Adjon hozzá néhány feladatot a listához.
Gratulálunk, egy webalkalmazást futtat a Azure-alkalmazás Service-ben, biztonságos kapcsolattal az Azure SQL Database-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 kedvéért az AZD-sablon már engedélyezte a naplózást a helyi fájlrendszerbe , és a naplókat egy Log Analytics-munkaterületre szállítja.
A mintaalkalmazás szabványos naplózási utasításokat tartalmaz ennek a képességnek a bemutatásához, ahogyan az a következő kódrészletben is látható:
public async Task<IActionResult> Index()
{
var todoItems = await _cache.GetAsync(_TodoItemsCacheKey);
if (todoItems != null)
{
_logger.LogInformation("Data from cache.");
var todoList = JsonConvert.DeserializeObject<List<Todo>>(Encoding.UTF8.GetString(todoItems));
return View(todoList);
}
else
{
_logger.LogInformation("Data from database.");
var todoList = await _context.Todo.ToListAsync();
var serializedTodoList = JsonConvert.SerializeObject(todoList);
await _cache.SetAsync(_TodoItemsCacheKey, Encoding.UTF8.GetBytes(serializedTodoList));
return View(todoList);
}
}
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 .NET-alkalmazásokban való naplózásról az Azure Monitor OpenTelemetry engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz című 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 Azure SQL Database portál üzembehelyezési nézete ütközési állapotot jelenít meg
- Az Azure Portalon a webalkalmazás naplóstreamjének felhasználói felülete hálózati hibákat jelenít meg
- Az SSH-munkamenet a böngészőben
SSH CONN CLOSED
- Megjelenik
Connected!
a portál naplóstream oldala, de nincsenek naplók
Az Azure SQL Database portál üzembehelyezési nézete ütközési állapotot jelenít meg
Az előfizetéstől és a kiválasztott régiótól függően előfordulhat, hogy az Azure SQL Database üzembe helyezési állapota jelenik Conflict
meg, és a művelet részletei az alábbi üzenettel láthatók:
Location '<region>' is not accepting creation of new Windows Azure SQL Database servers at this time.
Ezt a hibát valószínűleg a kiválasztott régióra vonatkozó előfizetés korlátja okozza. Próbáljon meg másik régiót választani az üzembe helyezéshez.
Az Azure Portalon a webalkalmazás naplóstreamjének felhasználói felülete hálózati hibákat jelenít meg
A következő hibaüzenet jelenhet meg:
Unable to open a connection to your app. This may be due to any network security groups or IP restriction rules that you have placed on your app. To use log streaming, please make sure you are able to access your app directly from your current network.
Ez általában átmeneti hiba az alkalmazás első indításakor. Várjon néhány percet, és ellenőrizze újra.
Az SSH-munkamenet a böngészőben SSH CONN CLOSED
A Linux-tároló elindítása néhány percet vesz igénybe. Várjon néhány percet, és ellenőrizze újra.
Megjelenik Connected!
a portál naplóstream oldala, de nincsenek naplók
A diagnosztikai naplók konfigurálása után az alkalmazás újraindul. Előfordulhat, hogy frissítenie kell a lapot, hogy a módosítások érvénybe lépjenek a böngészőben.
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 Azure SQL Database-kiszolgálóhoz?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
- Hogyan hibakeresési hibákat a GitHub Actions üzembe helyezése során?
- Hogyan módosítsa az SQL Database-kapcsolatot felügyelt identitás használatára?
- 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.
- Az Azure SQL Database általános célú, kiszolgáló nélküli szinten jön létre standard sorozatú hardvereken a minimális magokkal. Kis költséggel jár, és más régiókba is elosztható. A maximális méret csökkentésével még tovább csökkentheti a költségeket, vagy vertikálisan felskálázhatja a kiszolgálószint, a számítási szint, a hardverkonfiguráció, a magok száma, az adatbázis mérete és a zónaredundancia módosításával. Lásd: Az Azure SQL Database díjszabása.
- Az Azure Cache for Redis alapszintű, minimális gyorsítótármérettel jön létre. Ez a szint egy kis költséggel jár. Magasabb teljesítményszintekre skálázhatja a magasabb rendelkezésre állás, a fürtözés és más funkciók érdekében. Tekintse meg az Azure Cache for Redis 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 Azure SQL Database-kiszolgálóhoz?
- A parancssori eszközről való alapszintű hozzáféréshez az alkalmazás SSH-termináljáról is futtatható
sqlcmd
. Az alkalmazás tárolója nem találhatósqlcmd
meg, ezért manuálisan kell telepítenie. Ne feledje, hogy a telepített ügyfél nem marad fenn az alkalmazás újraindítása során. - Ha SQL Server Management Studio-ügyfélről vagy Visual Studióból szeretne csatlakozni, 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.
Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions használatával?
Vegyük példaként az App Service automatikusan létrehozott munkafolyamat-fájlját, és mindegyik git push
elindít egy új buildet és üzembe helyezést. A GitHub-adattár helyi klónjából a kívánt frissítéseket leküldheti a GitHubra. Példa:
git add .
git commit -m "<some-message>"
git push origin main
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 parancsok bármelyikéből dotnet
például több kimenetet kaphat a -v
beállítás hozzáadásával. 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.
Hogyan módosítsa az SQL Database-kapcsolatot felügyelt identitás használatára?
Az SQL-adatbázis alapértelmezett kapcsolati sztring a Service Connector kezeli az alapértelmezettConnector névvel, és SQL-hitelesítést használ. Ha felügyelt identitást használó kapcsolatra szeretné cserélni, futtassa a következő parancsokat a cloud shellben a helyőrzők cseréje után:
az extension add --name serviceconnector-passwordless --upgrade
az sql server update --enable-public-network true
az webapp connection delete sql --connection defaultConnector --resource-group <group-name> --name <app-name>
az webapp connection create sql --connection defaultConnector --resource-group <group-name> --name <app-name> --target-resource-group <group-name> --server <database-server-name> --database <database-name> --client-type dotnet --system-identity --config-connstr true
az sql server update --enable-public-network false
Alapértelmezés szerint a parancs az webapp connection create sql --client-type dotnet --system-identity --config-connstr
a következőket hajtja végre:
- Beállítja a felhasználót az SQL-adatbáziskiszolgáló Microsoft Entra-azonosítójának rendszergazdájaként.
- Hozzon létre egy rendszer által hozzárendelt felügyelt identitást, és hozzáférést biztosít az adatbázishoz.
- Létrehoz egy jelszó nélküli kapcsolati sztring,
AZURE_SQL_CONNECTIONGSTRING
amelyet az alkalmazás már használ az oktatóanyag végén.
Az alkalmazásnak most már csatlakoznia kell az SQL-adatbázishoz. További információ : Oktatóanyag: Csatlakozás azure-adatbázisokhoz az App Service-ből titkos kulcsok nélkül felügyelt identitás használatával.
Tipp.
Nem szeretné engedélyezni a nyilvános hálózati kapcsolatot? Kihagyhatja az sql server update --enable-public-network true
a parancsokat egy, a virtuális hálózattal integrált Azure Cloud Shellből, ha rendelkezik tulajdonosi szerepkör-hozzárendeléssel az előfizetésben.
Ahhoz, hogy az identitásnak hozzáférést biztosítson a virtuális hálózat által védett adatbázishoz, az webapp connection create sql
közvetlen kapcsolatot kell létesítenie az Entra ID-hitelesítéssel az adatbázis-kiszolgálóval. Alapértelmezés szerint az Azure Cloud Shell nem rendelkezik ezzel a hozzáféréssel a hálózat által védett adatbázishoz.
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.
Íme néhány más dolog, amit mondhat a válasz finomhangolásához:
- Azt akarom, hogy ez a kód csak éles módban fusson.
- Azt akarom, hogy ez a kód csak a Azure-alkalmazás szolgáltatásban fusson, helyileg nem.
- A --output-path paraméter nem támogatott.
Kapcsolódó tartalom
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.
Vagy tekintse meg a többi erőforrást is: