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 a bemutatóban megtanulhatja, hogyan valósítson meg egy adatvezérelt ASP.NET Core alkalmazást az Azure App Service-ben, és hogyan csatlakozzon egy Azure SQL adatbázishoz. Az Azure Cache for Redis telepítésére is szükség lesz, hogy engedélyezze a gyorsítótár kódját az alkalmazásában. Az Azure App Service egy rendkívül skálázható, önjavító, webhoszting szolgáltatás, amely könnyedén képes alkalmazásokat telepíteni Windows-ra vagy Linux-ra. Bár ez az útmutató egy ASP.NET Core 8.0 alkalmazást használ, a folyamat ugyanaz az ASP.NET Core más verziói esetén is.
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.
- Titkosítsa a kapcsolat titkait egy kezelt identitás és a Key Vault hivatkozások segítségével.
- Telepítsen egy ASP.NET Core mintaprogramot az App Service-re 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ését végezze az Azure portálon.
- Telepítse ugyanazt az architektúrát, és hajtsa végre a telepítést az Azure Developer CLI használatával.
- Optimalizáld a fejlesztési munkafolyamatodat a GitHub Codespaces és a GitHub Copilot segítségével.
Előfeltételek
- Egy Azure-fiók aktív előfizetéssel. Ha még nincs Azure-fiókod, hozhatsz létre egyet ingyen.
- A GitHub-fiók. Ingyenesen is beszerezhet egyet.
- ASP.NET Core fejlesztés ismerete.
- (Opcionális) A GitHub Copilot kipróbálásához szükség van egy GitHub Copilot fiókra. 30 napos ingyenes próbaidőszak elérhető.
- Egy Azure-fiók aktív előfizetéssel. Ha még nincs Azure-fiókod, hozhatsz létre egyet ingyen.
- Azure Developer CLI telepítve. A lépéseket végrehajthatja az Azure Cloud Shell használatával, mivel az már tartalmazza az Azure Developer CLI-t.
- ASP.NET Core fejlesztés ismerete.
- (Opcionális) A GitHub Copilot kipróbálásához szükség van egy GitHub Copilot fiókra. 30 napos ingyenes próbaidőszak elérhető.
Ugorj a végére
Ha csak látni szeretné, hogyan fut a bemutatóban szereplő példaalkalmazás az Azure-ban, egyszerűen futtassa az alábbi parancsokat az Azure Cloud Shell-ben, és kövesse a megjelenő 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 mintatároló tartalmazza a fejlesztői környezet konfigurációjá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 fejlesztői konténer futtatható egy GitHub Codespace-ben, ami azt jelenti, hogy a mintát bármelyik számítógépen futtathatod, amely rendelkezik webböngészővel.
1. lépés: Egy új böngészőablakban:
- Jelentkezzen be GitHub fiókjába.
- Nyissa meg 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.
2. lépés: A GitHub forkban:
- Válaszd ki a main>starter-no-infra lehetőséget az indító ág számára. Ez az ág csak a példaprojektet tartalmazza, és nem tartalmaz Azure-hez kapcsolódó fájlokat vagy konfigurációt.
- 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
Megkérdezheti a GitHub Copilot-ot erről a repozitóriumról. 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 hozza létre az Azure-erőforrásokat. A bemutatóban használt lépések egy alapértelmezés szerint biztonságos erőforrás-készletet hoznak létre, amely magában foglalja az App Service-t, az Azure SQL Database-et és az Azure Cache-t. 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ásához 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. Egy erőforráscsoport lehetővé teszi, hogy az alkalmazáshoz szükséges összes Azure erőforrást egy logikai tárolóba csoportosítsák.
Lépjen be az Azure portálra, és kövesse ezeket a lépéseket az Azure App Service erőforrások létrehozásához.
1. lépés: Az Azure portálon:
- 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>. Közvetlenül navigálhat a létrehozási varázslóhoz is.
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.
- Válassza az Azure Cache for Redis létrehozása lehetőséget.
- 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 Szervezetben válassza ki a GitHub-aliast.
- 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 szerver: Csak a privát végpontja mögül érhető el.
- Azure SQL Database: Egy adatbázis és egy felhasználó létrehozásra került a szerveren az ön számára.
- Azure Cache for Redis: Csak a privát végpontja mögü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.
- Privát DNS-zónák: Engedélyezi a kulcstár, az adatbázis-szerver és a Redis gyorsítótár DNS-feloldását a virtuális hálózatban.
3. Biztonságos kapcsolat titkai
A varázsló már létrehozta a kapcsolódási változót Önnek, mint .NET kapcsolat karakterláncokat és alkalmazás beállításokat. Azonban a biztonsági legjobb gyakorlat az, hogy az App Service-ből teljesen tartsuk távol a titkokat. A titkait átmozgatja egy kulcstartóba, és az alkalmazás beállításait Key Vault hivatkozásokra változtatja a Szolgáltatáskapcsolók segítségével.
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?
1. lépés: Az aktuális kapcsolat karakterláncának visszakeresé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 Kapcsolati karakterlánc hozzáadása/szerkesztése menüpontban, a Érték mezőben keresse meg a karakterlánc végén a Password= részt.
- Másolja a jelszó sztringjét a Password= után, hogy később használhassa. Ez a kapcsolati karakterlánc lehetővé teszi, hogy csatlakozzon az SQL adatbázishoz, amelyet egy privát végpont mögött biztosítanak. A titkok azonban közvetlenül az App Service alkalmazásban vannak mentve, ami nem a legjobb megoldás. Hasonlóképpen, a Redis gyorsítótár csatlakozási sztringje az Alkalmazás beállítások fülön tartalmaz egy titkot. 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ávba írja be a "kulcstár" szót, majd válassza ki a következőket: Marketplace>Kulcstár.
- 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 Hely területen válassza ki ugyanazt a helyet, mint az App Service-alkalmazás.
- 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álaszd ki a(z) Titok tárolása a Key Vaultban lehetőséget.
- A Key Vault Connection alatt válassza a Ú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.
5. lépés: Alakítsa ki a Key Vault-kapcsolatot
- A Kapcsolat létrehozása párbeszédablakban a Kulcstartóhoz való kapcsolatnál, a Kulcstartó résznél 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ő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ó. Amikor elkészült, a Key Vault Connection legördülő lista automatikusan kiválasztja azt.
- 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.
7. lépés: Konfigurálja a Redis csatlakozót a Key Vault titkok 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álaszd ki a(z) Titok tárolása a Key Vaultban lehetőséget.
- A Key Vault Connection alatt válassza ki az Ön által 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.
8. lépés: A Key Vault integrációjának ellenőrzése
- 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 a kulcstartóban van kezelve. - A Redis kapcsolat karaktersorozatának ellenőrzéséhez válassza ki az App setting lapot. Az AZURE_REDIS_CONNECTIONSTRING mellett kattintson a Show value gombra. Az értéknek
@Microsoft.KeyVault(...)is kell lennie.
Ö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.
- Rendszer által rendelt kezelt identitással Key Vault kapcsolat létrehozása.
- 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 a GitHub telepítést GitHub Actions használatával konfigurálja. 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 minden git push a GitHub tárházadba elindítja a build és a deploy folyamatot.
1. lépés: Térjen vissza a minta elágazás GitHub-kódterébe, és futtassa le a git pull origin starter-no-infra parancsot.
Ez behúzza az újonnan elkötelezett munkafolyamat-fájlt a kódtérbe.
2. lépés (1. lehetőség: a GitHub Copilottal):
- Kezdjen egy új chat beszélgetést azáltal, hogy kiválasztja a Chat nézetet, majd kiválasztja a +.
- Kérdezd meg: "@workspace Hogyan kapcsolódik az alkalmazás az adatbázishoz és a gyorsítótárhoz?" A Copilot magyarázattal szolgálhat a
MyDatabaseContextosztályról, és arról, hogyan van konfigurálva a Program.cs fájlban. - Kérdezze meg a következőt: "Éles módban azt szeretném, ha az alkalmazás a AZURE_SQL_CONNECTIONSTRING nevű kapcsolati sztringet használna az adatbázishoz és a AZURE_REDIS_CONNECTIONSTRING nevű alkalmazásbeállításhoz." 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 a Program.cs fájlt az intézőben, és adja hozzá a kódjavaslatot. A GitHub Copilot nem adja ugyanazt a választ minden alkalommal, é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: Mit tehetek a GitHub Copilot használatával a kódterületemen?.
2. lépés (2. lehetőség: a 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.
3. lépés (1. lehetőség: a GitHub Copilottal):
- Nyissa meg .github/workflows/starter-no-infra_msdocs-core-sql-XYZ a fájlkezelőben. Ezt a fájlt az App Service varázsló létrehozása hozta létre.
- Jelölje ki a
dotnet publishlépést, és válassza ki a
. - Ask Copilot, "Telepítsd a dotnet ef-et, majd hozd létre a migrációs csomagot ugyanabban a kimeneti mappában."
- Ha a javaslat elfogadható, válassza az Elfogadás lehetőséget. A GitHub Copilot nem adja ugyanazt a választ minden alkalommal, é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: Mit tehetek a GitHub Copilot használatával a kódterületemen?.
3. lépés (2. lehetőség: a GitHub Copilot nélkül):
- Nyissa meg .github/workflows/starter-no-infra_msdocs-core-sql-XYZ a fájlkezelőben. Ezt a fájlt az App Service varázsló létrehozása hozta létre.
- A
dotnet publishlépés alatt adj hozzá egy lépést az Entity Framework Core eszköz telepítéséhez adotnet tool install -g dotnet-ef --version 8.*parancs segítségével. - 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ációs csomag egy önálló végrehajtható fájl, amelyet futtathatsz a termelési környezetben anélkül, hogy szükség lenne a .NET SDK-ra. Az App Service linux konténer csak a .NET futtatókörnyezetet tartalmazza, a .NET SDK-t nem.
4. lépés:
- Válassza ki a Source Control kiterjesztést.
- A szövegdobozba írjon be egy commit üzenetet, például
Configure Azure database and cache connections. Vagy válaszd a
lehetőséget, és hagyd, hogy a GitHub Copilot létrehozza a commit üzenetet számodra. - 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.
5. lépés: Vissza az Üzembehelyezési központ lapra az Azure Portalon:
- 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.
6. lépés: A rendszer a GitHub-adattárba viszi, é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árjon, amíg a GitHub futás sikeres státuszt mutat: Success. 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 generált migrációs csomagot a következő parancs segítségével:
./migrationsbundle -- --environment Production. 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álok, sikeresen futtatsz egy webalkalmazást az Azure App Service-ben, biztosított kapcsolatot teremtve az Azure SQL Database-hez.
Tipp
A mintapéldában a cache-aside mintát valósítják meg. Amikor másodszor látogat el egy adatnézetre, vagy ugyanazt az oldalt frissíti adatváltoztatások után, a Feldolgozási idő a weboldalon sokkal gyorsabb időt mutat, mert az adatokat a gyorsítótárból tölti be az adatbázis helyett.
7. Diagnosztikai naplók streamelése
Az Azure App Service rögzíti az összes konzolnaplót, hogy segítsen diagnosztizálni az alkalmazással kapcsolatos problémákat. 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
Miután befejezte, 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 portál tetején található keresősávban:
- 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. Hozzon létre Azure erőforrásokat, és telepítsen egy mintapéldányt
Ebben a lépésben létrehozod az Azure erőforrásokat, és telepítesz egy mintapéldány alkalmazást az App Service szolgáltatásra Linuxon. Ebben az útmutatóban használt lépések egy alapértelmezés szerint biztonságos erőforráskészletet hoznak létre, amely magában foglalja az App Service, az Azure SQL Database és az Azure Cache for Redis szolgáltatásokat.
A fejlesztői konténer már rendelkezik az Azure Developer CLI-vel (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 A jelenlegi 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 az Azure-ban található webalkalmazásának DNS-neve részeként ( <app-name>-<hash>.azurewebsites.net). Alfanumerikus karakterek és kötőjelek engedélyezettek.Jelentkezzen be az Azure-ba úgy, hogy futtatja a
azd auth loginparancsot, és követi az 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 upparancs segítségével. Kövesse az utasítást, hogy válassza ki a kívánt Azure erőforrás-előfizetést és helyet.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 nyújt az előkészítési és telepítési folyamatról, beleértve egy hivatkozást az Azure-ban történt telepítésre. 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 tartalmaz (azure.yaml és a infra könyvtár), amelyek alapértelmezett módon biztonságos architektúrát hoznak létre a következő Azure-erőforrásokkal:
- Erőforrá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 szerver: Csak a privát végpontja mögül érhető el.
- Azure SQL Database: Egy adatbázis és egy felhasználó létrehozásra került a szerveren az ön számára.
- Azure Cache for Redis: Csak a privát végpontja mögü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.
- Privát DNS-zónák: Engedélyezi a kulcstár, az adatbázis-szerver és a Redis gyorsítótár DNS-feloldását a virtuális hálózatban.
Miután a parancs befejezte az erőforrások létrehozását és az alkalmazás kódjának első alkalommal történő telepítését, a telepített mintaalkalmazás még nem működik, mivel kisebb változtatásokat kell végrehajtania, hogy kapcsolódhasson az Azure-adatbázishoz.
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 SQL adatbázis kapcsolati karakterláncát az Azure-ban, ésAZURE_REDIS_CONNECTIONSTRINGtartalmazza 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 codespace-ben indíts el egy új chat munkamenetet a Chat nézet kiválasztásával, majd válaszd ki a +-t.
Kérdezd meg: "@workspace Hogyan kapcsolódik az alkalmazás az adatbázishoz és a gyorsítótárhoz?" A Copilot magyarázattal szolgálhat a
MyDatabaseContextosztályról, és arról, hogyan van konfigurálva a Program.cs fájlban.Kérdezd meg: "Produkciós módban azt akarom, hogy az alkalmazás az AZURE_SQL_CONNECTIONSTRING nevű kapcsolati karakterláncot használja az adatbázishoz, és az AZURE_REDIS_CONNECTIONSTRING* alkalmazás beállítását." A Copilot adhat egy kódjavaslatot, amely hasonló az alábbi 2. lehetőség: GitHub Copilot nélkül lépésekhez, és még meg is mondhatja, hogy a Program.cs fájlban végezd el a módosítást.
Nyissa meg a Program.cs fájlt az intézőben, és adja hozzá a kódjavaslatot.
A GitHub Copilot nem adja ugyanazt a választ minden alkalommal, é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: Mit tehetek a GitHub Copilot használatával a kódterületemen?.
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. Azonban az App Service Linux konténerek nem rendelkeznek a .NET SDK-val, így a legegyszerűbb módja az adatbázis-migrációk futtatásának az, hogy feltöltsenek egy önálló migrációs csomagot.
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 mintapéldány alkalmazás (lásd DotNetCoreSqlDb.csproj) úgy van beállítva, 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álok, sikeresen futtatsz egy webalkalmazást az Azure App Service-ben, biztosított kapcsolatot teremtve az Azure SQL Database-hez.
Problémák merültek fel? Nézze meg a Hibaelhárítási szakaszt.
7. Diagnosztikai naplók streamelése
Az Azure App Service képes rögzíteni a konzol naplófájlokat, hogy segítsen diagnosztizálni az alkalmazáshoz kapcsolódó problémákat. Kényelmi szempontból az AZD sablon már bekapcsolta a naplózást a helyi fájlrendszerbe, és a naplókat egy Log Analytics munkaterületre küldi.
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>
Tudjon meg többet a naplózásról .NET alkalmazásokban a 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
Az összes Azure erőforrás törléséhez az aktuális telepítési környezetben futtassa a azd down parancsot, és kövesse az utasításokat.
azd down
Hibaelhárítás
- Az Azure SQL-adatbázis portáltelepítési nézete Konfliktus állapotot jelez
- Az Azure portálon a webalkalmazás log stream 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 portál telepítési nézete az Azure SQL Database esetén egy Konfliktus állapotot mutat.
Előfizetésétől és a kiválasztott régiótól függően előfordulhat, hogy az Azure SQL Database telepítési állapotát Conflict értékként látja, az alábbi üzenettel a műveleti részletekben:
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.
Az Azure portálon a webalkalmazás naplófolyam UI-ja hálózati hibákat mutat.
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 csatlakozhatok az Azure SQL adatbázis szerverhez, amely a virtuális hálózat mögött van biztosítva, más eszközökkel?
- Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions segítségével?
- Hogyan tudom elhárítani a hibákat a GitHub Actions telepítése során?
- 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
- Mit tehetek a GitHub Copilot segítségével a codespace-emben?
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.
- 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. 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. Tekintse meg az Azure SQL Database árazását.
- Az Azure Cache for Redis Alap szinten jön létre a minimális gyorsítótár mérettel. 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. Tekintse meg az Azure Cache for Redis árazá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. Tekintse meg az Azure Virtual Network díjszabását.
- A privát DNS zóna használata kis díjat von maga után. Tekintse meg az Azure DNS díjszabását.
Hogyan csatlakozhatok az Azure SQL Database szerverhez, amelyeket a virtuális hálózat mögött védenek, más eszközök segítségével?
- 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. - Ahhoz, hogy kapcsolódjon a SQL Server Management Studio kliensről vagy a Visual Studio-ból, a gépének a virtuális hálózaton belül kell lennie. Például lehet egy Azure VM, amely az egyik alhálózathoz csatlakozik, vagy egy olyan gép egy helyszíni hálózatban, amelynek site-to-site VPN kapcsolata van az Azure virtuális hálózattal.
Hogyan működik a helyi alkalmazásfejlesztés a GitHub Actions-szal?
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. Egy helyi klónból a GitHub adattárból elvégzi a kívánt frissítéseket és feltölti őket a GitHubra. Például:
git add .
git commit -m "<some-message>"
git push origin main
Hogyan tudom hibakeresni a hibákat a GitHub Actions telepítése során?
Ha egy lépés sikertelen az automatikusan generált GitHub munkafolyamat fájlban, próbálja meg módosítani a sikertelen parancsot, hogy részletesebb kimenetet generáljon. 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?
Az adatbázis alapértelmezett csatlakozási karakterláncát a Service Connector kezeli, amelynek neve defaultConnector, és SQL hitelesítést használ. 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 felhasználódat a Microsoft Entra ID adminisztrátorának az SQL adatbázis szerveren.
- Hozzon létre rendszer által kiosztott kezelt identitást, és adjon hozzáférést az adatbázishoz.
- A végén egy jelszó nélküli kapcsolati karakterláncot hoz létre
AZURE_SQL_CONNECTIONGSTRINGnéven, amelyet az alkalmazás már használ a bemutató végén.
Az alkalmazásának most már kapcsolata van az SQL adatbázissal. További információért lásd: Útmutató: Kapcsolódás Azure-adatbázisokhoz App Service-ből jelszavak nélkül, felügyelt identitás használatával.
Tipp
Nem akarja engedélyezni a nyilvános hálózati kapcsolatot? Az az sql server update --enable-public-network true szerepkört hozzárendelve az előfizetésedhez, kihagyhatod , ha a parancsokat egy a virtuális hálózatodhoz integrált Azure Cloud Shellből futtatod.
Ahhoz, hogy a virtuális hálózat által biztosított adatbázishoz szükséges hozzáférést biztosítsuk az azonosítónak, az webapp connection create sql-nak közvetlen kapcsolat szükséges az Entra ID hitelesítéssel az adatbázis szerverhez. Alapértelmezés szerint az Azure felhőhéj nem rendelkezik hozzáféréssel a hálózatilag védett adatbázishoz.
Mit tehetek a GitHub Copilot-tal a kódtérben?
Észrevehetted, hogy a GitHub Copilot chatnézete már ott volt számodra, amikor létrehoztad a kódtárat. Az Ön kényelme érdekében a GitHub Copilot chat bővítmény fel van véve a konténerdefinícióba (lásd .devcontainer/devcontainer.json). Azonban, szüksége van egy GitHub Copilot fiókra (30 napos ingyenes próba elérhető).
Néhány tipp, amikor a GitHub Copilot-tal beszél:
- 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 a GitHub Copilotnak nincs hozzáférése egyetlen fájlhoz sem a tárházában. Ha kérdései vannak egy fájllal kapcsolatban, nyissa meg a fájlt a szerkesztőben.
- Ahhoz, hogy a GitHub Copilot hozzáférhessen a repozitórium összes fájljához a válaszainak előkészítésekor, kezdje a kérdését a következővel:
@workspace. További információért lásd: Use the @workspace agent. - A csevegési szakaszban a GitHub Copilot javasolhat változtatásokat, és (a
@workspace-vel) akár azt is, hogy hol kellene ezeket megtenni, de nem teheti meg őket 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 az Azure App Service-ben fusson, és ne helyileg.
- 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.