Självstudie: Distribuera en ASP.NET Core- och Azure SQL Database-app till Azure App Service
I den här självstudien får du lära dig hur du distribuerar en datadriven ASP.NET Core-app till Azure App Service och ansluter till en Azure SQL Database. Du distribuerar också en Azure Cache for Redis för att aktivera cachelagringskoden i ditt program. Azure App Service är en mycket skalbar webbvärdtjänst med självkorrigering som enkelt kan distribuera appar i Windows eller Linux. Även om den här självstudien använder en ASP.NET Core 7.0-app är processen densamma för andra versioner av ASP.NET Core och ASP.NET Framework.
För den här kursen behöver du:
- Ett Azure-konto med en aktiv prenumeration. Om du inte har ett Azure-konto kan du skapa ett kostnadsfritt.
- Ett GitHub-konto. du kan också få en gratis.
Programexempel
Om du vill utforska exempelprogrammet som används i den här självstudien laddar du ned det från lagringsplatsen https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore eller klonar det med hjälp av följande Git-kommando:
git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore
1. Skapa App Service, databas och cache
I det här steget skapar du Azure-resurserna. Stegen som används i den här självstudien skapar en uppsättning säkra som standardresurser som inkluderar App Service, Azure SQL Database och Azure Cache. För skapandeprocessen anger du:
- Webbappens namn . Det är namnet som används som en del av DNS-namnet för din webbapp i form av
https://<app-name>.azurewebsites.net
. - Regionen som ska köra appen fysiskt i världen.
- Runtime-stacken för appen. Det är där du väljer den .NET-version som ska användas för din app.
- Värdplanen för appen. Det är prisnivån som innehåller uppsättningen funktioner och skalningskapacitet för din app.
- Resursgruppen för appen. Med en resursgrupp kan du gruppera (i en logisk container) alla Azure-resurser som behövs för programmet.
Logga in på Azure-portalen och följ dessa steg för att skapa dina Azure App Service-resurser.
Steg 1: I Azure-portalen:
- Ange "webbappdatabas" i sökfältet överst i Azure-portalen.
- Välj objektet webapp + databas under rubriken Marketplace . Du kan också navigera till guiden för att skapa direkt.
Steg 2: På sidan Skapa webbapp + databas fyller du i formuläret på följande sätt.
- Resursgrupp → Välj Skapa ny och använd namnet msdocs-core-sql-tutorial.
- Region → Valfri Azure-region nära dig.
- Namn → msdocs-core-sql-XYZ där XYZ är tre slumpmässiga tecken. Användarnamnet måste vara unikt inom Azure.
- Körningsstack → .NET 7 (STS).
- Vill du lägga till Azure Cache for Redis? → Ja.
- Värdplan → Basic. När du är klar kan du skala upp till en produktionsprisnivå senare.
- Välj SQLAzure som databasmotor. Azure SQL Database är en fullständigt hanterad paaS-databasmotor (plattform som en tjänst) som alltid körs på den senaste stabila versionen av SQL Server.
- Välj Granska + skapa.
- När valideringen är klar väljer du Skapa.
Steg 3: Distributionen tar några minuter att slutföra. När distributionen är klar väljer du knappen Gå till resurs . Du tas direkt till App Service-appen, men följande resurser skapas:
- Resursgrupp → Containern för alla skapade resurser.
- App Service-plan → Definierar beräkningsresurserna för App Service. En Linux-plan på Basic-nivån skapas.
- App Service → Representerar din app och körs i App Service-planen.
- Virtuellt nätverk → integrerat med App Service-appen och isolerar serverdelsnätverkstrafik.
- Privata slutpunkter → Åtkomstslutpunkter för databasservern och Redis-cachen i det virtuella nätverket.
- Nätverksgränssnitt → Representerar privata IP-adresser, en för var och en av de privata slutpunkterna.
- Azure SQL Database-servern → Endast tillgänglig bakom den privata slutpunkten.
- Azure SQL Database → En databas och en användare skapas åt dig på servern.
- Azure Cache for Redis → Endast tillgänglig bakom den privata slutpunkten.
- Privat DNS zoner → Aktivera DNS-matchning för databasservern och Redis-cachen i det virtuella nätverket.
2. Kontrollera anslutningssträng
Guiden för att skapa genererade anslutningssträng för SQL-databasen och Redis-cachen redan. I det här steget letar du upp de genererade anslutningssträng för senare.
Steg 1: På sidan App Service går du till den vänstra menyn och väljer Konfiguration.
Steg 2:
- Rulla längst ned på sidan och leta reda på AZURE_SQL_CONNECTIONSTRING i avsnittet Anslut ionssträngar. Den här strängen genererades från den nya SQL-databasen genom guiden skapa. Det här namnet är allt du behöver för att konfigurera programmet.
- Leta också upp AZURE_REDIS_CONNECTIONSTRING i avsnittet Programinställningar . Den här strängen genererades från den nya Redis-cachen av guiden skapa. Det här namnet är allt du behöver för att konfigurera programmet.
- Om du vill kan du välja knappen Redigera till höger om varje inställning och se eller kopiera dess värde.
Senare ändrar du programmet till att använda
AZURE_SQL_CONNECTIONSTRING
ochAZURE_REDIS_CONNECTIONSTRING
.
3. Distribuera exempelkod
I det här steget konfigurerar du GitHub-distribution med GitHub Actions. Det är bara ett av många sätt att distribuera till App Service, men också ett bra sätt att ha kontinuerlig integrering i distributionsprocessen. Som standard startar varje git push
till din GitHub-lagringsplats bygg- och distributionsåtgärden.
Steg 1: I ett nytt webbläsarfönster:
- Logga in på ditt GitHub-konto.
- Navigera till https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
- Markera Förgreningen.
- Välj Skapa förgrening.
Steg 2: På sidan App Service går du till den vänstra menyn och väljer Distributionscenter.
Steg 3: På sidan Distributionscenter:
- I Källa väljer du GitHub. Som standard är GitHub Actions valt som byggprovider.
- Logga in på ditt GitHub-konto och följ anvisningarna för att auktorisera Azure.
- I Organisation väljer du ditt konto.
- I Lagringsplats väljer du msdocs-app-service-sqldb-dotnetcore.
- I Gren väljer du huvud.
- I den översta menyn väljer du Spara. App Service checkar in en arbetsflödesfil i den valda GitHub-lagringsplatsen i
.github/workflows
katalogen.
Steg 4: Gå tillbaka till GitHub-sidan i det förgrenade exemplet och öppna Visual Studio Code i webbläsaren genom att trycka på .
nyckeln.
Steg 5: I Visual Studio Code i webbläsaren:
- Öppna DotNetCoreSqlDb/appsettings.json i utforskaren.
- Ändra namnet på anslutningssträng
MyDbConnection
tillAZURE_SQL_CONNECTIONSTRING
, som matchar anslutningssträng som skapades i App Service tidigare.
Steg 6:
- Öppna DotNetCoreSqlDb/Program.cs i utforskaren.
options.UseSqlServer
I -metoden ändrar du namnet på anslutningssträngMyDbConnection
tillAZURE_SQL_CONNECTIONSTRING
. Det är här som anslutningssträng används av exempelprogrammet.builder.Services.AddDistributedMemoryCache();
Ta bort metoden och ersätt den med följande kod. Koden ändras från att använda ett minnesinternt cacheminne till Redis-cachen i Azure, och det gör den med hjälpAZURE_REDIS_CONNECTIONSTRING
av tidigare.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});
Steg 7:
- Öppna .github/workflows/main_msdocs-core-sql-XYZ i utforskaren. Den här filen skapades av guiden Skapa apptjänst.
- Under steget
dotnet publish
lägger du till ett steg för att installera Entity Framework Core-verktyget med kommandotdotnet tool install -g dotnet-ef --version 7.0.14
. - Under det nya steget lägger du till ytterligare ett steg för att generera ett databasmigreringspaket i distributionspaketet:
dotnet ef migrations bundle --runtime linux-x64 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate
. Migreringspaketet är en fristående körbar fil som du kan köra i produktionsmiljön utan att behöva .NET SDK. App Service Linux-containern har bara .NET-körningen och inte .NET SDK.
Steg 8:
- Välj källkontrolltillägget.
- I textrutan skriver du ett incheckningsmeddelande som
Configure DB & Redis & add migration bundle
. - Välj Checka in och skicka.
Steg 9: Tillbaka på sidan Distributionscenter i Azure-portalen:
- Välj Loggar. En ny distributionskörning har redan startats från de incheckade ändringarna.
- I loggobjektet för distributionskörningen väljer du posten Skapa/distribuera loggar med den senaste tidsstämpeln .
Steg 10: Du tas till din GitHub-lagringsplats och ser att GitHub-åtgärden körs. Arbetsflödesfilen definierar två separata steg, skapa och distribuera. Vänta tills GitHub-körningen visar statusen Slutförd. Det tar några minuter.
4. Generera databasschema
Med SQL Database som skyddas av det virtuella nätverket är det enklaste sättet att köra dotnet-databasmigreringar i en SSH-session med App Service-containern.
Steg 1: På sidan App Service går du till den vänstra menyn och väljer SSH.
Steg 2: I SSH-terminalen:
- Kör
cd /home/site/wwwroot
. Här är alla dina distribuerade filer. - Kör migreringspaketet som genereras av GitHub-arbetsflödet med
./migrate
. Om det lyckas ansluter App Service till SQL Database. Endast ändringar i filer i/home
kan bevaras utöver omstarter av appar. Ändringar utanför/home
sparas inte.
5. Bläddra till appen
Steg 1: På App Service-sidan:
- Välj Översikt på den vänstra menyn.
- Välj appens URL. Du kan också navigera direkt till
https://<app-name>.azurewebsites.net
.
Steg 2: Lägg till några uppgifter i listan. Grattis, du kör en säker datadriven ASP.NET Core-app i Azure App Service.
Dricks
Exempelprogrammet implementerar cache-aside-mönstret . När du besöker en datavy för andra gången, eller läser in samma sida igen när du har gjort dataändringar, visar bearbetningstiden på webbsidan en mycket snabbare tid eftersom den läser in data från cacheminnet i stället för databasen.
6. Strömma diagnostikloggar
Azure App Service samlar in alla meddelanden som loggas till konsolen för att hjälpa dig att diagnostisera problem med ditt program. Exempelappen matar ut konsolloggmeddelanden i var och en av sina slutpunkter för att demonstrera den här funktionen.
Steg 1: På App Service-sidan:
- Välj App Service-loggar på den vänstra menyn.
- Under Programloggning väljer du Filsystem.
Steg 2: Välj Loggström på den vänstra menyn. Du ser loggarna för din app, inklusive plattformsloggar och loggar inifrån containern.
7. Rensa resurser
När du är klar kan du ta bort alla resurser från din Azure-prenumeration genom att ta bort resursgruppen.
Steg 1: I sökfältet överst i Azure-portalen:
- Ange resursgruppsnamnet.
- Välj resursgruppen.
Steg 2: På resursgruppssidan väljer du Ta bort resursgrupp.
Steg 3:
- Ange resursgruppens namn för att bekräfta borttagningen.
- Välj Ta bort.
Vanliga frågor och svar
- Hur mycket kostar den här installationen?
- Hur gör jag för att ansluta till Azure SQL Database-servern som skyddas bakom det virtuella nätverket med andra verktyg?
- Hur fungerar utveckling av lokala appar med GitHub Actions?
- Hur gör jag för att felsöka under GitHub Actions-distributionen?
Hur mycket kostar den här installationen?
Prissättningen för skapa resurser är följande:
- App Service-planen skapas på Basic-nivån och kan skalas upp eller ned. Se Priser för App Service.
- Azure SQL Database skapas på en serverlös nivå för generell användning på Standard-seriens maskinvara med minsta möjliga kärnor. Det finns en liten kostnad och kan distribueras till andra regioner. Du kan minimera kostnaderna ännu mer genom att minska dess maximala storlek, eller så kan du skala upp den genom att justera servernivå, beräkningsnivå, maskinvarukonfiguration, antal kärnor, databasstorlek och zonredundans. Läs mer i Prissättning för Azure SQL Database.
- Azure Cache for Redis skapas på Basic-nivån med den minsta cachestorleken. Det finns en liten kostnad som är associerad med den här nivån. Du kan skala upp den till högre prestandanivåer för högre tillgänglighet, klustring och andra funktioner. Se Priser för Azure Cache for Redis.
- Det virtuella nätverket debiteras inte om du inte konfigurerar extra funktioner, till exempel peering. Se Priser för Azure Virtual Network.
- Den privata DNS-zonen medför en liten avgift. Se Priser för Azure DNS.
Hur gör jag för att ansluta till Azure SQL Database-servern som skyddas bakom det virtuella nätverket med andra verktyg?
- För grundläggande åtkomst från ett kommandoradsverktyg kan du köra
sqlcmd
från appens SSH-terminal. Appens container levereras inte medsqlcmd
, så du måste installera den manuellt. Kom ihåg att den installerade klienten inte finns kvar i omstarter av appar. - Om du vill ansluta från en SQL Server Management Studio-klient eller från Visual Studio måste datorn finnas i det virtuella nätverket. Det kan till exempel vara en virtuell Azure-dator som är ansluten till ett av undernäten, eller en dator i ett lokalt nätverk som har en plats-till-plats-VPN-anslutning med det virtuella Azure-nätverket.
Hur fungerar utveckling av lokala appar med GitHub Actions?
Ta den autogenererade arbetsflödesfilen från App Service som exempel. Var git push
och en startar en ny version och distributionskörning. Från en lokal klon av GitHub-lagringsplatsen får du önskade uppdateringar att skicka den till GitHub. Till exempel:
git add .
git commit -m "<some-message>"
git push origin main
Hur gör jag för att felsöka under GitHub Actions-distributionen?
Om ett steg misslyckas i den autogenererade GitHub-arbetsflödesfilen kan du prova att ändra det misslyckade kommandot för att generera mer utförliga utdata. Du kan till exempel få mer utdata från något av dotnet
kommandona genom att lägga till alternativet -v
. Checka in och skicka ändringarna för att utlösa en annan distribution till App Service.
Nästa steg
Gå vidare till nästa självstudie för att lära dig hur du skyddar din app med en anpassad domän och ett certifikat.
Eller kolla in andra resurser: