Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben az oktatóanyagban megtudhatja, hogyan helyezhet üzembe egy adatvezérelt ASP.NET Core alkalmazást az Azure App Service-re, és csatlakozhat egy Azure SQL Database-hez. Egy Redis-gyorsítótárat is üzembe helyez, hogy engedélyezze a gyorsítótárazási kódot az alkalmazásban. Azure App Service egy nagymértékben skálázható, önjavító, web hosting szolgáltatás, amely könnyen üzembe helyezhet alkalmazásokat Windows vagy Linux rendszeren. Bár ez az oktatóanyag egy ASP.NET Core 8.0-s alkalmazást használ, a folyamat ugyanaz a ASP.NET Core más verzióiban is.
Important
Az Azure Cache for Redis bejelentette az összes termékváltozat kivonási ütemtervét. Javasoljuk, hogy a meglévő Azure Cache for Redis példányokat mihamarabb helyezze át az Azure Felügyelt Redis szolgáltatásba.
Migrálási útmutató:
- Alapszintű, standard és prémium szintű szintek migrálása az Azure Managed Redisbe
- Nagyvállalati szint migrálása az Azure Managed Redisbe
További részletek a nyugdíjba vonulásról:
Ebben az oktatóanyagban megtanulod, hogyan kell:
- Hozzon létre egy alapértelmezés szerint biztonságos App Service, SQL adatbázis és Redis gyorsítótár architektúrát.
- Biztonságos kapcsolati titkos kulcsok felügyelt identitással és Key Vault hivatkozásokkal.
- Egy ASP.NET Core-mintaalkalmazás üzembe helyezése az App Service-ben egy GitHub-adattárból.
- Az alkalmazás kódban érje el az App Service kapcsolati karakterláncokat és alkalmazás beállításokat.
- Végezzen frissítéseket, majd telepítse újra az alkalmazás kódját.
- Adatbázis séma generálása egy migrációs csomag feltöltésével.
- Diagnosztikai naplók streamelése az Azure-ból.
- Az alkalmazás kezelése a Azure portálon.
- Azonos architektúra kiépítése és üzembe helyezése Azure fejlesztői parancssori felülettel.
- Optimalizálja a fejlesztési munkafolyamatot GitHub Codespaces és GitHub Copilot használatával.
Előfeltételek
- Aktív előfizetéssel rendelkező Azure fiók. Ha nincs Azure fiókja, létrehozhat egyet ingyenesen.
- Egy GitHub fiók. Ingyenesen is beszerezhet egyet.
- A ASP.NET Core fejlesztésének ismerete.
- (Nem kötelező) GitHub Copilot kipróbálásához GitHub Copilot fiók. 30 napos ingyenes próbaidőszak elérhető.
- Aktív előfizetéssel rendelkező Azure fiók. Ha nincs Azure fiókja, létrehozhat egyet ingyenesen.
- Azure fejlesztői parancssori felület telepítve. Kövesse a lépéseket a Azure Cloud Shell, mert már telepítve van Azure fejlesztői parancssori felület.
- A ASP.NET Core fejlesztésének ismerete.
- (Nem kötelező) GitHub Copilot kipróbálásához GitHub Copilot fiók. 30 napos ingyenes próbaidőszak elérhető.
Ugorj a végére
Ha csak látni szeretné a mintaalkalmazást ebben az oktatóanyagban, amely Azure fut, futtassa a következő parancsokat a Azure Cloud Shell, és kövesse az 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. Futtassa a mintát
Először is, beállítasz egy minta adatvezérelt alkalmazást kiindulópontként. Az ön kényelme érdekében a minta repozitórium tartalmaz egy fejlesztői környezet konfigurációt. A fejlesztői konténer mindent tartalmaz, amire szükség van egy alkalmazás fejlesztéséhez, beleértve az adatbázist, a gyorsítótárat és minden környezeti változót, amelyre a mintaalkalmazásnak szüksége van. A dev tároló futtatható egy GitHub kódtérben, ami azt jelenti, hogy a mintát bármely számítógépen futtathatja webböngészővel.
1. lépés: Egy új böngészőablakban:
- Jelentkezzen be GitHub fiókjába.
- Navigáljon https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore/fork.
- Törölje a kijelölést a Csak a fő ágat másolja lehetőségnél. Akarod az összes ágat.
- Válassza a Fork létrehozása lehetőséget.
Step 2: A GitHub elágazásban:
- Válaszd ki a main>starter-no-infra lehetőséget az indító ág számára. Ez az ág csak a mintaprojektet tartalmazza, és nem Azure kapcsolódó fájlokat vagy konfigurációkat.
- Válassza a Code>Codespaces>Create codespace on starter-no-infra lehetőséget. A kódtér néhány perc alatt beállítható.
3. lépés: A codespace terminálban:
- Hajtsa végre az adatbázis-migrációkat
dotnet ef database updatesegítségével. - Futtassa az alkalmazást a
dotnet run-vel. - Amikor megjelenik az értesítés
Your application running on port 5093 is available., válassza a Megnyitás a böngészőben lehetőséget. Az új böngészőfülben látnia kell a mintalkalmazást. Az alkalmazás leállításához írja be a következőt:Ctrl+C.
Tipp
Erről az adattárról GitHub Copilot kérdezhet. Például:
- @workspace Mit csinál ez a projekt?
- @workspace Mit csinál a .devcontainer mappa?
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
2. Alkalmazásszolgáltatás, adatbázis és gyorsítótár létrehozása
Ebben a lépésben a Azure erőforrásokat hozza létre. Az oktatóanyagban használt lépések az App Service, Azure SQL Database és Azure Cache-t tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre. A létrehozási folyamathoz meg kell adnia:
- A webes alkalmazás Name-ja. Az alkalmazás DNS-nevének részeként használják.
- Az a Régió, ahol az alkalmazás fizikailag fut a világban. Az alkalmazásod DNS-nevének részeként is használatos.
- A Runtime stack az alkalmazáshoz. Itt választhatja ki az alkalmazáshoz használni kívánt .NET verziót.
- Az alkalmazás tárhelyterve. Ez az árkategória, amely magában foglalja az alkalmazásod funkciókészletét és méretezhetőségi kapacitását.
- A Resource Group az alkalmazáshoz. Az erőforráscsoportokkal (logikai tárolóban) csoportosíthatja az alkalmazáshoz szükséges összes Azure erőforrást.
Jelentkezzen be a Azure portálra, és kövesse az alábbi lépéseket a Azure App Service-erőforrások létrehozásához.
Step 1: A Azure portálon:
- A felső keresősávba írja be az App Service-t.
- Válassza ki az App Service címkével ellátott elemet a Szolgáltatások fejléc alatt.
- Válassza a Webalkalmazás létrehozása lehetőséget>. A létrehozási varázslóra is navigálhat közvetlenül.
2. lépés: A Webalkalmazás létrehozása lapon töltse ki az űrlapot az alábbiak szerint.
- Név: msdocs-core-sql-XYZ. Létrejön egy msdocs-core-sql-XYZ_group nevű erőforráscsoport.
- Futtatókörnyezeti verem: .NET 8 (LTS).
- Operációs rendszer: Linux.
- Régió: az ön által előnyben részesített régió.
- Linux-csomag: Hozzon létre újat , és használja az msdocs-core-sql-XYZ nevet.
- Tarifacsomag: Alapszintű B1. Ha készen áll, áttérhet egy másik tarifacsomagra.
3. lépés:
- Válassza az Adatbázis lapot.
- Válassza az Adatbázis létrehozása lehetőséget.
- A Motorban válassza az SQLAzure lehetőséget.
- Hozzon létre egy Redis-gyorsítótárat.
- Adja meg a gyorsítótár nevét a Név mezőben (a Gyorsítótár területen).
- Az SKU-ban válassza az Alapszintű lehetőséget.
4. lépés:
- Válassza az Üzembe helyezés lapot.
- Folyamatos üzembe helyezés engedélyezése.
- A Organization területen válassza ki GitHub aliasát.
- Az Adattárban válassza az msdocs-app-service-sqldb-dotnetcore lehetőséget.
- A Branch alkalmazásban válaszd ki a starter-no-infra lehetőséget.
- Győződjön meg arról, hogy az alapszintű hitelesítés le van tiltva.
- Válassza az Áttekintés + létrehozás lehetőséget.
- Miután a hitelesítés befejeződik, válassza a Létrehozás lehetőséget.
5. lépés: Az üzembe helyezés végrehajtása néhány percet vesz igénybe. Miután a telepítés befejeződött, válassza a Ugrás az erőforráshoz gombot. Közvetlenül az App Service alkalmazáshoz kerülsz, de a következő erőforrások létrejönnek:
- Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
- App Service terv: Meghatározza az App Service számítási erőforrásait. Egy Linux terv jött létre a Basic szinten.
- App Service: Az alkalmazását képviseli, és az App Service tervben fut.
- Virtuális hálózat: Integrálva van az Alkalmazásszolgáltatás alkalmazással, és elkülöníti a háttérhálózati forgalmat.
- Privát végpontok: Hozzáférési végpontok a kulcstárhoz, az adatbázis szerverhez és a Redis gyorsítótárhoz a virtuális hálózatban.
- Hálózati interfészek: Magán IP-címeket képvisel, egyet-egyet az egyes 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.
- Redis: Csak a privát végpont mögöttről érhető el.
- Key vault: Csak a saját privát végpontjáról érhető el. Titkok kezelésére használják az App Service alkalmazás számára.
- Private 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. Biztonságos kapcsolat titkai
A létrehozási varázsló már létrehozta önnek a kapcsolati változót .NET kapcsolati karakterláncok és alkalmazás-beállítások néven. Azonban a biztonsági legjobb gyakorlat az, hogy az App Service-ből teljesen tartsuk távol a titkokat. Át fogja helyezni a titkait egy kulcstárba, és a Service Connectors segítségével az alkalmazásbeállítást Kulcstár hivatkozásokra módosíthatja.
Tipp
Személy nélküli hitelesítés használatához lásd: Hogyan változtathatom meg az SQL adatbázis kapcsolatát a kezelési identitás használatához?
Step 1: A meglévő kapcsolati karakterlánc lekérése
- Az App Service lap bal oldali menüjében válassza a Beállítások, > Környezeti változók, > Kapcsolati sztringek lehetőséget.
- Válassza ki a AZURE_SQL_CONNECTIONSTRING-t.
- A Add/Edit connection stringValue mezőben keresse meg a Password= részt a sztring végén.
- Másolja a jelszó sztringjét a Password= után, hogy később használhassa. Ez a connection string lehetővé teszi a privát végpont mögött biztonságos SQL-adatbázishoz való csatlakozást. A titkok azonban közvetlenül az App Service alkalmazásban vannak mentve, ami nem a legjobb megoldás. Hasonlóképpen, a Redis cache connection string a App beállításaiban lapon tartalmaz egy titkos kulcsot. Ezt megváltoztatod.
2. lépés: Hozzon létre egy kulcstartót a titkos adatok biztonságos kezelésére
- 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-XYZ_group lehetőséget.
- A Key vault név mezőbe írjon be egy nevet, amely csak betűkből és számokból áll.
- A(z) Régió esetében állítsa be ugyanarra a helyre, mint az erőforráscsoport.
3. lépés: A kulcstár védelme privát végpont használatával
- Válassza a Hálózatkezelés lapot.
- Törölje a kijelölést a Nyilvános hozzáférés engedélyezése opcióról.
- Válassza a Privát végpont létrehozása lehetőséget.
- Az Erőforrás csoportban válassza az msdocs-core-sql-XYZ_group lehetőséget.
- A párbeszédablakban, a Helyszín mezőben válassza ki ugyanazt a helyszínt, mint amit az App Service alkalmazása használ.
- A Name mezőbe írja be a msdocs-core-sql-XYZVvaultEndpoint értéket.
- A virtuális hálózatban válassza ki a virtuális hálózatot az msdocs-core-sql-XYZ_group csoportban.
- Az Alhálózatban válassza ki az elérhető kompatibilis alhálózatot. A Webalkalmazás varázsló az Ön kényelme érdekében hozta létre.
- Kattintson az OK gombra.
- Válassza a Felülvizsgálat + létrehozás elemet, majd válassza a Létrehozás elemet. Várja meg, amíg a kulcstár telepítése befejeződik. Azt kellene látnod, hogy „A telepítésed kész.”
4. lépés:
- A felső keresősávba írja be msdocs-core-sql, majd az App Service erőforrást, amit úgy hívnak, hogy msdocs-core-sql-XYZ.
- Az App Service oldalon, a bal menüben válassza a Beállítások > Szolgáltatás Csatlakozó opciót. ** A varázsló már két csatlakozót létrehozott Önnek az alkalmazás létrehozásához.
- Jelölje be a jelölőnégyzetet az SQL adatbázis csatlakozója mellett, majd válassza a Szerkesztés lehetőséget.
- Válassza a Hitelesítés lapot.
- A Password mezőbe illessze be a korábban másolt jelszót.
- Válassza a Titkos kulcs tárolása az Adattárban lehetőséget.
- A Key Vault Kapcsolat területen válassza az Új létrehozása lehetőséget. A Kapcsolat létrehozása párbeszédablak a szerkesztő párbeszédablak fölé nyílik meg.
Step 5: A Key Vault kapcsolat létrehozása
- A Kapcsolat létrehozása párbeszédpanelen, a Key Vault alatt válassza ki az előzőleg létrehozott kulcstárolót.
- Válassza a Felülvizsgálat és létrehozás lehetőséget.
- Amikor az ellenőrzés befejeződik, válassza a "Create" lehetőséget.
6. lépés: Az SQL adatbázis csatlakozó beállításainak véglegesítése
- Visszatértél a defaultConnector szerkesztési párbeszédablakába. A hitelesítés fülön várja meg, amíg létrejön a kulcstár csatlakozó. Ha elkészült, a Key Vault Kapcsolat legördülő lista automatikusan kiválasztja.
- Válassza ki a Tovább: Hálózatkezelés lehetőséget.
- Válassza a Tűzfalszabályok konfigurálása a célszolgáltatás eléréséhez lehetőséget. Az alkalmazás készítési varázsló már biztosította az SQL adatbázist egy privát végponttal.
- Válassza az Mentésgombot. Várjon, amíg megjelenik a Frissítés sikeres értesítés.
Step 7: A Redis-összekötő konfigurálása Key Vault titkos kódok használatára
- A Szolgáltatás-összekötő lapon jelölje be a Redis gyorsítótár ö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 az Adattárban lehetőséget.
- A Key Vault Kapcsolat területen válassza ki a létrehozott kulcstartót.
- Válassza ki a Tovább: Hálózatkezelés lehetőséget.
- Válassza a Tűzfalszabályok konfigurálása a célszolgáltatás eléréséhez lehetőséget.
- Válassza az Mentésgombot. Várjon, amíg megjelenik a Frissítés sikeres értesítés.
Step 8: Ellenőrizze a Key Vault integrációt
- A bal oldali menüből válassza a Beállítások > Környezeti változók > Kapcsolati karakterláncok lehetőséget újra.
- A AZURE_SQL_CONNECTIONSTRING mellett válassza a Érték megjelenítése lehetőséget. Az értéknek
@Microsoft.KeyVault(...)kell lennie, ami azt jelenti, hogy ez egy kulcstartó-hivatkozás mert a titkos kulcs most már a kulcstartóban van kezelve. - A Redis connection string ellenőrzéséhez válassza a App beállításai lapot. A AZURE_REDIS_CONNECTIONSTRING mellett válassza a Show érték lehetőséget. Az értéknek
@Microsoft.KeyVault(...)is meg kell lennie.
A képernyőkép bemutatja, hogyan lehet megtekinteni a .NET kapcsolat string értékét az Azure-ban.
Összefoglalva, a kapcsolat biztonságának elérése érdekében szükséges folyamat a következőket foglalta magában:
- Az alkalmazásszolgáltatás környezeti változóiból való kapcsolat titkok visszanyerése.
- A kulcstartó létrehozása.
- Key Vault kapcsolat létrehozása a rendszer által hozzárendelt felügyelt identitással.
- Frissítjük a szolgáltatáskapcsolókat, hogy a titkokat a kulcstárolóban tárolják.
4. Telepítse a mintakódot
Ebben a lépésben GitHub üzembe helyezést konfigurálja GitHub Actions használatával. Ez csupán egy a sok módszer közül, amellyel az App Service-be telepíthetünk, de emellett nagyszerű módja annak is, hogy folytonos integrációt valósítsunk meg a telepítési folyamatunkban. Alapértelmezés szerint a GitHub-adattáron végrehajtott minden git push elindítja a build és üzembe helyezési műveletet.
Step 1: A mintaelágazás GitHub kódterében futtassa a git pull origin starter-no-infra.
Ez behúzza az újonnan elkötelezett munkafolyamat-fájlt a kódtérbe.
Step 2 (1. lehetőség: GitHub Copilot esetén):
- Kezdjen egy új chat beszélgetést azáltal, hogy kiválasztja a Chat nézetet, majd kiválasztja a +.
- "@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz és a gyorsítótárhoz?" Copilot adhat némi magyarázatot a
MyDatabaseContextosztályról, valamint arról, hogyan van konfigurálva Program.cs. - "Éles módban szeretném, ha az alkalmazás az AZURE_SQL_CONNECTIONSTRING nevű connection stringet használná az adatbázishoz, és az AZURE_REDIS_CONNECTIONSTRING nevű alkalmazásbeállítást. A Copilot adhat egy kódjavaslatot, amely hasonló az alábbi 2. opció: GitHub Copilot nélkül lépésekhez, és még azt is megmondhatja, hogy módosítsa a Program.cs fájlt."
- Nyissa meg a Program.cs fájlt az intézőben, és adja hozzá a kódjavaslatot. GitHub Copilot nem mindig ugyanazt a választ adja, és nem mindig helyes. Szükséged lehet további kérdések feltevésére a válasz pontosításához. Tippekért lásd: Mihez használhatom a GitHub Copilot a kódtérben?.
Step 2 (2. lehetőség: GitHub Copilot nélkül):
- Nyissa meg a Program.cs fájlt a fájlkezelőben.
- Keresd meg a kommentelt kódot (12-21. sorok), és kommenteld ki.
Ez a kód úgy csatlakozik az adatbázishoz, hogy használja a
AZURE_SQL_CONNECTIONSTRING, és úgy csatlakozik a Redis cache-hez, hogy használja azAZURE_REDIS_CONNECTIONSTRINGalkalmazás beállítást.
Step 3 (1. lehetőség: GitHub Copilot esetén):
- Nyissa meg .github/workflows/starter-no-infra_msdocs-core-sql-XYZ a fájlkezelőben. Az App Service létrehozási varázslója létrehozta ezt a fájlt.
- Jelölje ki a
dotnet publishlépést, és válassza ki a
. - Ask Copilot " Install dotnet ef, 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. GitHub Copilot nem mindig ugyanazt a választ adja, és nem mindig helyes. Szükséged lehet további kérdések feltevésére a válasz pontosításához. Tippekért lásd: Mihez használhatom a GitHub Copilot a kódtérben?.
Step 3 (2. lehetőség: GitHub Copilot nélkül):
- Nyissa meg .github/workflows/starter-no-infra_msdocs-core-sql-XYZ a fájlkezelőben. Az App Service létrehozási varázslója létrehozta ezt a fájlt
- A
dotnet publishlépésben adjon hozzá egy lépést a Entity Framework Core eszköz telepítéséhez adotnet tool install -g dotnet-ef --version 8.*paranccsal. - Az új lépés alá adjunk hozzá egy másik lépést, amely a telepítési csomagban migrációs csomag adatbázis létrehozását generálja:
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, amelyet éles környezetben futtathat anélkül, hogy szüksége van a .NET SDK-ra. A Linux App Service-tároló csak a .NET futtatókörnyezetet, a .NET SDK-t nem.
4. lépés:
- Válassza ki a Source Control kiterjesztést.
- A szövegmezőbe írjon be egy véglegesítési üzenetet, például
Configure Azure database and cache connections. Vagy válassza a
lehetőséget, és hagyja, hogy GitHub Copilot véglegesítési üzenetet hozzon létre Önnek. - Válassza a Rögzítés lehetőséget, majd erősítse meg az Igen gombbal.
- Válaszd ki a Sync changes 1 lehetőséget, majd erősítsd meg a OK gombbal.
A képernyőkép megmutatja a GitHub-ra véglegesített és feltöltött változtatásokat.
Step 5: Vissza a Központi telepítési központ lapra a Azure portálon:
- Válassza a Naplók fület, majd válassza a Frissítés lehetőséget, hogy megtekinthesse az új telepítési futást.
- A telepítési futtatás naplóelemében válassza ki a legfrissebb időbélyegekkel rendelkező Build/Deploy Logs bejegyzést.
Step 6: A GitHub-adattárba kerül, és láthatja, hogy a GitHub művelet fut. A munkafolyamat fájl két különálló szakaszt határoz meg: építés és telepítés. Várja meg, amíg a GitHub fut, és megjeleníti a Success állapotát. Körülbelül 5 percet vesz igénybe.
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
5. Adatbázis séma létrehozása
Az SQL adatbázis virtuális hálózattal való védelme mellett, a legegyszerűbb módja a dotnet adatbázis migrációk futtatásának egy SSH munkamenetben a Linux konténerrel az App Service-ben.
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. (Az indítás néhány percet vesz igénybe.)
2. lépés: Az SSH munkamenetben:
- Futtassa a
cd /home/site/wwwrootprogramot. Itt vannak az összes telepített fájljeid. - Futtassa a GitHub munkafolyamat által létrehozott migrálási csomagot a
./migrationsbundle -- --environment Productionparanccsal. Ha sikerül, az App Service sikeresen csatlakozik az SQL adatbázishoz. Ne feledje, hogy a--environment Productionazokra a kódmódosításokra vonatkozik, amelyeket a Program.cs-ben végzett.
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. Az /home kívüli változások nem kerülnek mentésre.
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
6. Keresse meg az alkalmazást
1. Lépés: Az App Service oldalon:
- A bal oldali menüből válassza az Áttekintés lehetőséget.
- Válaszd ki az alkalmazásod URL-jét.
2. lépés: Adj hozzá néhány feladatot a listához. Gratulálunk, egy webalkalmazást üzemeltet az Azure App Service-ben, amely biztonságos kapcsolatot biztosít az Azure SQL Database szolgáltatással.
Tipp
A mintapéldában a cache-aside mintát valósítják meg. Amikor második alkalommal 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 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 App Service rögzíti az összes konzolnaplót az alkalmazással kapcsolatos problémák diagnosztizálásához. A mintaalkalmazás minden végpontjához naplózási kódot tartalmaz, hogy bemutassa ezt a képességet.
1. Lépés: Az App Service oldalon:
- A bal oldali menüből válassza a Felügyelet>App Service naplókat.
- 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üből válassza a Naplófolyam lehetőséget. Látja az alkalmazása naplóit, beleértve a platform naplókat és a konténeren belüli naplókat.
8. Erőforrások felszabadítása
Ha végzett, törölheti az összes erőforrást a Azure-előfizetésből az erőforráscsoport törlésével.
Step 1: A Azure portál 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: A erőforráscsoport oldalán válassza a Erőforráscsoport törlése lehetőséget.
3. lépés:
- Adja meg az erőforráscsoport nevét a törlés megerősítéséhez.
- 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 a Azure erőforrásokat, és üzembe helyez egy mintaalkalmazást a App Service on Linux. Az oktatóanyagban használt lépések az App Service, az Azure SQL Database és a Redis cache-t tartalmazó, alapértelmezés szerint biztonságos erőforrások készletét hozzák létre.
A fejlesztői tároló már rendelkezik a Azure fejlesztői parancssori felülettel (AZD).
A tárház gyökeréből futtassa a
azd initparancsot.azd init --template dotnet-app-service-sqldb-infraAmikor megkérdezik, adja meg a következő válaszokat:
Kérdés Válasz Az aktuális könyvtár nem üres. Szeretne indítani egy projektet itt a '<your-directory>'-ban? Y Mit szeretnél kezdeni ezekkel a fájlokkal? Hagyja változatlanul a meglévő fájljaimat Adjon meg egy új környezeti nevet Írjon be egy egyedi nevet. Az AZD-sablon ezt a nevet használja a webalkalmazás DNS-nevének részeként Azure ( <app-name>-<hash>.azurewebsites.net). Alfanumerikus karakterek és kötőjelek engedélyezettek.Jelentkezzen be a Azure a
azd auth loginparanccsal, és kövesse a következő utasításokat:azd auth loginHozza létre a szükséges Azure erőforrásokat, és telepítse az alkalmazáskódot a
azd upparanccsal. Az utasításokat követve válassza ki a kívánt előfizetést és helyet a Azure erőforrásokhoz.azd upA
azd upparancs kb. 15 perc alatt fejeződik be (a legtöbb időt a Redis gyorsítótár igényli). Emellett lefordítja és telepíti az alkalmazás kódját, de a későbbiekben módosítani fogja a kódját, hogy az App Service-szel működjön. Amíg fut, a parancs üzeneteket küld a kiépítési és üzembe helyezési folyamatról, beleértve a Azure üzemelő példányra mutató hivatkozást is. Amikor a folyamat befejeződik, a parancs megjelenít egy hivatkozást az alkalmazás telepítéséhez.Ez az AZD-sablon olyan fájlokat (azure.yaml és infra könyvtárat tartalmaz, amelyek az alábbi Azure erőforrásokkal hoznak létre alapértelmezettként biztonságos architektúrát:
- Erőforráscsoport: Az összes létrehozott erőforrás tárolója.
- App Service terv: Meghatározza az App Service számítási erőforrásait. Egy Linux terv jött létre a Basic szinten.
- App Service: Az alkalmazását képviseli, és az App Service tervben fut.
- Virtuális hálózat: Integrálva van az Alkalmazásszolgáltatás alkalmazással, és elkülöníti a háttérhálózati forgalmat.
- Privát végpontok: Hozzáférési végpontok a kulcstárhoz, az adatbázis szerverhez és a Redis gyorsítótárhoz a virtuális hálózatban.
- Hálózati interfészek: Magán IP-címeket képvisel, egyet-egyet az egyes 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.
- Redis: Csak a privát végpont mögöttről érhető el.
- Key vault: Csak a saját privát végpontjáról érhető el. Titkok kezelésére használják az App Service alkalmazás számára.
- Private 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.
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, mert kis módosításokat kell végrehajtania ahhoz, hogy csatlakozni lehessen az adatbázishoz Azure.
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
3. Ellenőrizze a kapcsolat karakterláncait
Tipp
Az alapértelmezett SQL-adatbázis kapcsolati karakterlánc SQL-hitelesítést használ. A biztosabb, jelszó nélküli hitelesítés érdekében lásd: How do I change the SQL Database connection to use a managed identity instead?
Az AZD sablon, amit használsz, már generálta a kapcsolati változókat számodra alkalmazásbeállításokként, és a kényelem érdekében kiírja őket a terminálra. Az alkalmazásbeállítások egy módja annak, hogy a kapcsolati titkokat távol tartsuk a kódtárból.
Az AZD kimenetében keresse meg a
AZURE_SQL_CONNECTIONSTRINGésAZURE_REDIS_CONNECTIONSTRINGbeállításokat. Csak a beállítások neve jelenik meg. Így néznek ki az AZD kimenetében:App Service app has the following connection strings: - AZURE_SQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPEAZURE_SQL_CONNECTIONSTRINGtartalmazza az Azure SQL Database kapcsolati karakterláncát,AZURE_REDIS_CONNECTIONSTRINGpedig az Azure Redis gyorsítótár kapcsolati karakterláncát. Később szükséged lesz rájuk a kódban.Az ön kényelmére az AZD sablon megmutatja az alkalmazás beállítási oldalának közvetlen hivatkozását. Keresse meg a hivatkozást, és nyissa meg egy új böngészőlapon.
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
4. Módosítsa a mintakódot, és telepítse újra.
A GitHub kódtérben indítsa el az új csevegési munkamenetet a Chat nézet kiválasztásával, majd a + kiválasztásával.
"@workspace Hogyan csatlakozik az alkalmazás az adatbázishoz és a gyorsítótárhoz?" Copilot adhat némi magyarázatot a
MyDatabaseContextosztályról, valamint arról, hogyan van konfigurálva Program.cs."Éles üzemmódban azt szeretném, hogy az alkalmazás az adatbázis számára az AZURE_SQL_CONNECTIONSTRING nevű connection stringet, és az AZURE_REDIS_CONNECTIONSTRING* nevű alkalmazásbeállítást használja." Copilot olyan kódjavaslatot adhat, amely hasonló az Option 2: anélkül, hogy GitHub Copilot lépésekben találhatóhoz, és még azt is javasolhatja, hogy a módosítást a Program.cs fájlban végezd el.
Nyissa meg a Program.cs fájlt az intézőben, és adja hozzá a kódjavaslatot.
GitHub Copilot nem mindig ugyanazt a választ adja, és nem mindig helyes. Szükséged lehet további kérdések feltevésére a válasz pontosításához. Tippekért lásd: Mihez használhatom a GitHub Copilot a kódtérben?.
Mielőtt telepítené ezeket a változtatásokat, először még létre kell hoznia egy migrációs csomagot.
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
5. Adatbázis séma létrehozása
Az SQL adatbázisnak a virtuális hálózat általi védelmével az adatbázis-migrációk futtatásának legegyszerűbb módja, ha egy SSH-munkamenetben hajtjuk végre az App Service-tárolóval. Az App Service Linux-tárolói azonban nem rendelkeznek a .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.
Generálj egy migrációs csomagot a projektedhez a következő parancs segítségével:
dotnet ef migrations bundle --runtime linux-x64 -o migrationsbundleTipp
A mintaalkalmazás (lásd DotNetCoreSqlDb.csproj) úgy van konfigurálva, hogy tartalmazza ezt a migrationsbundle fájlt. A
azd packageszakasz során a migrationsbundle hozzá lesz adva a telepítési csomaghoz.Telepítse az összes változást
azd up-vel.azd upAz AZD kimenetében keresse meg az URL-t az SSH munkamenethez, majd nyissa meg a böngészőjében. Ez így néz ki a kimenetben.
Open SSH session to App Service container at: <URL>
Az SSH-munkamenetben futtassa a következő parancsokat:
cd /home/site/wwwroot ./migrationsbundle -- --environment ProductionHa sikerül, az App Service sikeresen csatlakozik az adatbázishoz. Ne feledje, hogy a
--environment Productionazokra a kódmódosításokra vonatkozik, amelyeket a Program.cs-ben végzett.Megjegyzés:
Csak a fájlok
/homemódosításai őrizhetők meg az alkalmazás újraindítása után. Az/homekívüli változások nem kerülnek mentésre.
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
6. 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 így néz ki az AZD kimenetben:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL>
Adjunk hozzá néhány feladatot a listához.
Gratulálunk, egy webalkalmazást üzemeltet az Azure App Service-ben, amely biztonságos kapcsolatot biztosít az Azure SQL Database szolgáltatással.
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
7. Diagnosztikai naplók streamelése
Azure App Service 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 engedélyezte a naplózást a helyi fájlrendszerbe, és a naplókat pedig egy Log Analytics munkaterületre szállítja.
A mintaalkalmazás tartalmaz szabványos naplózási állításokat, hogy bemutassa ezt a képességet, amint az az alábbi kódrészletben 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 kimenetében keresse meg az "App Service" naplók streameléséhez szükséges linket, és nyisson meg azt a böngészőben. A link így néz ki az AZD kimenetében:
Stream App Service logs at: <URL>
Ismerje meg a naplózást a .NET alkalmazásokban az „Azure Monitor OpenTelemetry engedélyezése .NET, Node.js, Python és Java alkalmazásokhoz” című sorozatban.
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
8. Erőforrások felszabadítása
Ha törölni szeretné az összes Azure erőforrást az aktuális üzemi környezetben, futtassa a azd down parancsot, és kövesse az utasításokat.
azd down
Hibaelhárítás
- A Azure SQL Database portál üzembehelyezési nézete ütközési állapotot jelenít meg
- A Azure portálon a webalkalmazás naplóstreamjének felhasználói felülete hálózati hibákat jelenít meg
-
A böngészőben lévő SSH munkamenet a következőt mutatja:
SSH CONN CLOSED - A portál naplófolyam oldala
Connected!megjelenik, de nincsenek naplók
A 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 a Azure SQL Database üzembe helyezési állapota Conflict lesz, és a művelet részletei között a következő üzenet jelenik meg:
Location '<region>' is not accepting creation of new Windows Azure SQL Database servers at this time.
Ez a hiba valószínűleg az Ön előfizetésének a kiválasztott régióra vonatkozó korlátozása okozza. Próbáljon meg egy másik régiót választani a telepítéshez.
A Azure portálon a webalkalmazás naplóstream felhasználói felülete hálózati hibákat jelenít meg
Elképzelhető, hogy ezt a hibát látja:
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 egy átmeneti hiba, amikor az alkalmazást először indítják el. Várjon néhány percet, majd ellenőrizze újra.
A böngészőben az SSH munkamenet megjeleníti SSH CONN CLOSED
A Linux konténer elindulása néhány percet vesz igénybe. Várjon néhány percet, majd ellenőrizze újra.
A portál naplófolyam oldal Connected!-t mutat, de nincsenek naplók.
A diagnosztikai naplók konfigurálása után az alkalmazás újraindul. Lehet, hogy frissítenie kell az oldalt, hogy a változások érvényesüljenek a böngészőben.
Gyakran ismételt kérdések
- Mennyibe kerül ez a beállítás?
- Hogyan csatlakozom 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 GitHub Actions?
- Hogyan lehet hibakeresést végezni a GitHub Actions üzembe helyezése során fellépő hibáknál?
- Hogyan változtathatom meg az SQL adatbázis-kapcsolatot úgy, hogy inkább kezelt identitást használjon?
- Nincs jogosultságom felhasználó által rendelt identitás létrehozására
- Mihez használhatom a GitHub Copilot a kódtérben?
Mennyibe kerül ez a felállás?
Az elkészült erőforrások árazása a következő:
- Az App Service tervet a Basic szintben hozzák létre, és igény szerint felfelé vagy lefelé skálázható. Nézze meg az App Service árképzését.
- A Azure SQL Database általános célú, kiszolgáló nélküli szinten jön létre a standard sorozatú hardvereken a minimális magokkal. Van egy kis költség, és más régiókba is elosztható. Tovább csökkentheti a költségeket, ha csökkenti annak maximális méretét, vagy növelheti a kapacitást a kiszolgálási szint, számítási szint, hardver konfiguráció, magok száma, adatbázis méret és zóna redundancia beállításával. Lásd: Azure SQL Database díjszabás.
- A Azure Cache for Redis a minimális gyorsítótármérettel rendelkező Basic rétegben jön létre. Ennél a szintnél van egy kis költség. Az egészítések magasabb teljesítmény szintekre emelésével növelheti a rendelkezésre állást, a klaszterezést és egyéb funkciókat. Lásd: Azure Cache for Redis díjszabás. További információkért tekintse meg az Azure Managed Redis díjszabását.
- A virtuális hálózat nem jár költséggel, hacsak nem konfigurál további funkciókat, például az összekapcsolást. Lásd: Azure Virtual Network díjszabás.
- A privát DNS zóna használata kis díjat von maga után. Lásd: Azure DNS díjszabás.
Hogyan csatlakozhatok a virtuális hálózat mögött más eszközökkel védett Azure SQL Database kiszolgálóhoz?
- Alapvető hozzáféréshez parancssori eszköz segítségével futtathatja a
sqlcmdaz alkalmazás SSH termináljáról. Az alkalmazás tárolója nem tartalmazza asqlcmd, ezért kézzel kell telepítenie. Ne feledje, hogy a telepített kliens nem marad meg az alkalmazás újraindítása után. - Ha SQL Server Management Studio ügyfélről vagy Visual Studio szeretne csatlakozni, a gépnek a virtuális hálózaton belül kell lennie. Ez lehet például egy Azure 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 kapcsolatot létesít a Azure virtuális hálózattal.
Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions-szel?
Vegyük példaként az App Service által automatikusan generált munkafolyamat-fájlt, minden git push új építési és telepítési futtatást indít el. A GitHub-adattár helyi klónján végezze el a kívánt frissítéseket, majd küldje fel azokat GitHub-ra. Például:
git add .
git commit -m "<some-message>"
git push origin main
Hogyan lehet hibakeresést végezni a GitHub Actions üzembe helyezés során?
Ha egy lépés meghiúsul az automatikusan létrehozott GitHub munkafolyamat-fájlban, próbálja meg módosítani a sikertelen parancsot, hogy részletesebb kimenetet hozzon létre. Például több kimenetet kaphat bármelyik dotnet parancs esetében, ha hozzáadja a -v opciót. Commitálja és tolja fel a változtatásait, hogy újabb telepítést indítson az App Service-ben.
Nincsenek jogosultságaim felhasználó által hozzárendelt identitás létrehozására.
Lásd A GitHub Actions telepítés beállítása a Telepítési Központból.
Hogyan módosíthatom az SQL adatbázis kapcsolatot úgy, hogy az egy kezelt identitást használjon helyette?
A Service Connector az SQL adatbázis alapértelmezett kapcsolati karakterláncát kezeli defaultConnector néven, SQL-hitelesítéssel. A lecseréléséhez a managed identitást használó csatlakozásra, futtassa az alábbi parancsokat a felhő shellben a helyőrzők lecserélése 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 az webapp connection create sql --client-type dotnet --system-identity --config-connstr parancs a következőket hajtja végre:
- Beállítja a felhasználót az SQL-adatbáziskiszolgáló Microsoft Entra ID rendszergazdájaként.
- Hozzon létre rendszer által kiosztott kezelt identitást, és adjon hozzáférést az adatbázishoz.
- Létrehoz egy
AZURE_SQL_CONNECTIONGSTRINGnevű jelszó nélküli connection string, amelyet az alkalmazás már használ az oktatóanyag végén.
Az alkalmazásának most már kapcsolata van az SQL adatbázissal. További információ: Tutorial: Csatlakozás Azure adatbázisokhoz az App Service-ből titkos kulcsok nélkül felügyelt identitás használatával.
Tipp
Nem akarja engedélyezni a nyilvános hálózati kapcsolatot? Ha az az sql server update --enable-public-network true szerepkörrel rendelkezik az előfizetésén, kihagyhatja a azáltal, hogy futtatja az Azure felhőalapú rendszerhéj parancsait, amely a virtuális hálózathoz van integrálva.
Ahhoz, hogy az identitás hozzáférést kapjon a virtuális hálózat által védett adatbázishoz, az webapp connection create sql közvetlen kapcsolatra van szükség Entra ID hitelesítéssel az adatbázis-kiszolgálóhoz. Alapértelmezés szerint a Azure cloud shell nem rendelkezik ezzel a hozzáféréssel a hálózat által védett adatbázishoz.
Mit tehetek a GitHub Copilot-tal a kódkörnyezetemben?
Lehet, hogy észrevette, hogy a GitHub Copilot csevegőnézet 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 való beszélgetéshez:
- Egyetlen chat ülés során a kérdések és válaszok egymásra épülnek, és kérdéseid módosításával finomíthatod a kapott választ.
- Alapértelmezés szerint GitHub Copilot nem rendelkezik hozzáféréssel az adattárban lévő fájlokhoz. Ha kérdései vannak egy fájllal kapcsolatban, nyissa meg a fájlt a szerkesztőben.
- Ha azt szeretné, hogy GitHub Copilot hozzáférhessen az adattár összes fájljához a válaszok előkészítésekor, kezdje a kérdést
@workspace. További információért lásd: Use the @workspace agent. - A csevegési munkamenetben a GitHub Copilot javasolhat módosításokat, és még azt is, hogy hol kell módosítani, de nem hajtja végre a módosításokat helyetted. Rajtad múlik, hogy hozzáadod-e a javasolt változtatásokat, és teszteled azokat.
Íme néhány más dolog, amit mondhatsz, hogy pontosítsd a kapott választ:
- Azt szeretném, ha ez a kód csak a gyártási módban futna.
- Azt akarom, hogy ez a kód csak Azure App Service futjon, helyileg nem.
- A --output-path paraméter úgy tűnik, nem támogatott.
Kapcsolódó tartalom
Lépjen tovább a következő oktatóanyagra, hogy megtanulja, hogyan biztosíthatja alkalmazását egyéni domain-nel és tanúsítvánnyal.
Vagy nézzen meg más forrásokat.