Dela via


Del 2.1 – Skapa och konfigurera ASP.NET Core-program i Linux

Gäller för: .NET 8 och senare

Den här artikeln beskriver hur du skapar och konfigurerar ASP.NET Core-program i Linux.

Förutsättningar

Om du vill följa övningarna i den här delen måste du ha en .NET SDK installerad. Om du vill installera SDK:t läser du installationsanvisningarna i del 1 efter behov.

Målet för den här delen

Lär dig hur du skapar ett ASP.NET Core-webbprogram med hjälp av .NET-kommandoradsgränssnittet (CLI) i Linux och hur du publicerar programmet till katalogen /var . När du lär dig de här begreppen övar du på några grundläggande uppgifter som att arbeta med filer och mappar och köra kommandon som en privilegierad användare. Du får också lära dig hur du redigerar filer med hjälp av textredigeraren vi i Linux.

.NET CLI

Enligt den här .NET CLI-dokumentationen är .NET CLI en plattformsoberoende verktygskedja för att utveckla, skapa, köra och publicera .NET-program. .NET CLI installeras tillsammans med .NET SDK.

Dessa utbildningar använder dotnet kommandot ofta. Det här kommandot är kraftfullt och har två huvudfunktioner:

  • Den innehåller kommandon för att arbeta med .NET-projekt. Skapar dotnet build till exempel ett projekt. Varje kommando definierar sina egna alternativ och argument. Alla kommandon stöder --help alternativet för att skriva ut korta förklaringar om hur du använder kommandot.
  • Den kör .NET-program.

Du använder dotnet new kommandot för att skapa ditt första ASP.NET Core-projekt i Linux. Det här kommandot hämtar typen av projektet som ett argument. Projekttyperna förklaras i det här dokumentet. Du kan också visa en lista med typer genom att köra dotnet new utan en parameter. Webbrelaterade projekttyper är markerade i gult på följande skärmbild.

Skärmbild av det nya dotnet-kommandot.

Skapa ett ASP.NET Core-webbprogram med SDK

Du använder .NET CLI för att skapa ditt första webbprogram med hjälp av följande kommando:

dotnet new <template_type> -n <project_name> -o <output_directory>

Dessa regler gäller när du använder dotnet new:

  • Kommandot skapar projektfilerna i utdatakatalogen. Om du utelämnar -o <output_directory> segmentet skapas projektet i den aktuella katalogen. Du kan alltid använda växeln -o .
  • Om mappen inte finns skapar kommandot den.
  • Om du utelämnar -n <project_name> segmentet blir projektnamnet samma som katalognamnet.

Du är välkommen att hitta kreativa namn för själva katalogen och projektet. Tänk dock på att Linux är skiftlägeskänsligt. I den här övningen använder du det mer konservativa AspNetCoreDemo som projektnamn och skapar det i firstwebapp katalogen.

Kör följande kommando för att skapa projektet:

dotnet new webapp -n AspNetCoreDemo -o firstwebapp 

Granska utdata för att se katalog- och projektnamnen. Följande skärmbild visar också innehållet i utdatakatalogen. Du bör känna till katalogstrukturen om du har skapat ett ASP.NET Core-webbprogram i Windows tidigare.

Skärmbild av det nya dotnet-kommandot för den första webbappen.

Du har skapat ditt första program. Nästa uppgift blir att köra den. Ändra katalogen till projektmappen och kör dotnet run.

Skärmbild av kommandot dotnet run.

Kommentar

Följande objekt i den här skärmbilden:

  • Webbprogrammet lyssnar på port 5001 för HTTPS-begäranden och lyssnar på port 5000 för HTTP-begäranden.
  • Innehållsroten finns under hemkatalogen.

Vi rekommenderar att du inte får programmet att köras under din hemkatalog. Du publicerar den till en annan katalog senare, men du bör testa den innan du publicerar den. Du kan trycka på Ctrl+C för att stoppa programmet. Men för tillfället kan du fortsätta att köra den och öppna en ny terminalsession med hjälp av den metod du föredrar för att ansluta till den virtuella Linux-datorn. I det här exemplet använder du PowerShell igen.

Testa webbplatsen från en annan terminal

I den nya terminalsessionen kontrollerar du att programmet lyssnar på portarna 5000 och 5001. Linux har samma netstat kommando som Windows har. Kör netstat tillsammans med växeln -tlp . Du kan bekanta dig med växlarna i den netstat här artikeln, eller så kan du titta på hjälpfilen genom att köra man netstat eller info netstat.

Här är utdata från netstat -tlp kommandot från den andra terminalsessionen. Den visar att AspNetCoreDemo-processen körs med hjälp av PID 781 och lyssnar på portarna 5000 och 5001 för både IPv4 och IPv6.

Skärmbild av kommandot info netstat.

Du kan använda curl och wget för att testa din webbplats. Båda kommandona gör ett HTTP-anrop till målsidan, men de fungerar annorlunda:

  • Curl är helt enkelt ett webbläsarverktyg för kommandoraden. Den gör en HTTP-begäran till det angivna målet och visar endast de oformaterade utdata från HTTP-svaret. Den visar till exempel HTML-källpålägget för ett webbprogram.
  • Wget är en HTTP-nedladdare. Den gör en HTTP-begäran och laddar ned den angivna resursen. Till exempel hämtar wget http://server/file.zip file.zip från http://server och sparar den i den aktuella katalogen.

Kommandot wget visar också lite mer information, till exempel omdirigering och eventuella felmeddelanden som du kan få. Därför kan du använda den som en primitiv version av ett HTTP-spårningsverktyg när du behöver det.

Mer information om skillnaden mellan curl och wgetgår du till StackExchange-webbsidan.

I den här träningsserien har du tidigare använt wget för att ladda ned filen .deb package manager från Microsoft-servrar innan du installerade .NET.

Om du kör curl http://localhostsker ingenting. Detta innebär sannolikt att det inte finns något HTTP-svar. Du kan sedan köra wget http://localhost för att kontrollera om mer information visas när du försöker komma åt webbplatsen.

Skärmbild av kommandot curl localhost.

Det här är vad som händer nu:

  • Du gör en HTTP-begäran till http://localhost:5000och ansluter. Det innebär att programmet godkänner anslutningarna på port 5000.
  • Du får ett tillfälliga HTTP 307-omdirigeringssvar från programmet som pekar på en säker HTTPS-plats: https://localhost:5001.
  • Wget är smart nog att följa den här omdirigeringen och göra en ny begäran till https://localhost:5001.
  • Du ansluter igen. Litar dock wget inte på SSL-certifikatet. Därför misslyckas anslutningen.

Kommandot wget rekommenderar att du kringgår det här problemet med hjälp av växeln --no-check-certificate för att ansluta osäkert. Den här metoden omfattar dock SSL-certifikatinställningar som ligger utanför omfånget för den här utbildningen. I stället kan du konfigurera ditt ASP.NET Core-program så att det inte omdirigerar HTTP-begäranden till HTTPS. Om du är bekant med ASP.NET Core-programutveckling (eller bara konfiguration) redigerar du Startup.cs-filen för att ta bort omdirigeringskonfigurationen.

Redigera filer med hjälp av vi

Du kan använda vi-textredigeraren för Linux-distributioner för att redigera alla typer av oformaterade textfiler. Du använder den i den här utbildningen för att konfigurera om programmet.

Du måste stänga programmet innan du kan redigera det. Stäng först den öppna terminalsessionen. Tryck sedan på Ctrl+C för att stänga av programmet.

Om du vill redigera Startup.cs fil kör du följande kommando:

vi ~/firstwebapp/Startup.cs

Kommentar

Det här kommandot startar vi-redigeraren och läser sedan in filen. Genvägen ~ (tilde) refererar till din hemkatalog där du skapade projektet. Kommandot pekar alltså på /home/<YourName>/firstwebapp/Startup.cs.

Tryck på I-tangenten (Infoga) för att aktivera redigeringsläge. Nu bör du se - INSERT - längst ned på kommandoraden. Använd piltangenterna för att navigera i filen. Kommentera både raderna app.UseHsTs(); och app.UseHttpsRedirection(); genom att lägga till // i början av dem, enligt följande skärmbild.

Skärmbild av kommentar i kod.

Tryck på Esc för att avsluta redigeringsläget, ange :wq!och tryck sedan på Retur. Observera att kolontecknet (:) innebär att du anger ett kommando, w innebär att skriva, q betyder avsluta och ! tvingar fram skrivning.

Skärmbild av wq-text i kod.

När du trycker på Retur ska ändringarna sparas. Du kan verifiera ändringarna genom att köra cat ~/firstwebapp/Startup.cs. Det här kommandot visar innehållet i Startup.cs-filen.

Starta om programmet. Det gör du genom att ändra den aktuella katalogen till ~/firstwebapp katalogen och köra dotnet run den igen. Öppna sedan en annan terminalsession till servern och kör curl http://localhost:5000 kommandot igen. Den här gången ska kommandot returnera HTML-innehållet på startsidan.

Skärmbild av curl localhost på portkommandot 5000.

Nu har du kört din första ASP.NET Core Web App på Linux.

Distribuera programmet till katalogen /var

Det primära målet med den här övningen är att vara värd för ditt webbprogram bakom en omvänd proxy så att anslutande klienter kan komma åt programmet från en annan dator genom att endast använda värdnamnet utan portnumret. Det här är vad du kan förvänta dig i verkliga scenarier. Du kommer att arbeta med Nginx senare för att slutföra den här uppgiften. Men innan du gör det publicerar du programmet till katalogen /var . Det beror på att vi rekommenderar att du inte kör programmet i en användares hemkatalog.

Kom ihåg att katalogen /var används för att lagra innehåll och loggfiler av olika program som Apache och Nginx. Du följer den metoden här genom att publicera det nyligen skapade webbprogrammet till /var.

Ändra till projektmappen och kör dotnet publish sedan för att skapa en publiceringsmapp. Kopiera mappen till katalogen /var .

Skärmbild av dotnet publish-kommandot.

Skärmbilden dotnet publish visar att kommandot skapade publiceringsfiler i mappen ~/firstwebapp/bin/Debug/net5.0/publish/ . Sedan användes följande kommando för att kopiera alla filer till mappen /var/firstwebapp/ :

sudo cp -a ~/firstwebapp/bin/Debug/net5.0/publish/ /var/firstwebapp/

Kommentar

Observera användningen av sudo före kopieringskommandot. Du använder detta eftersom standardanvändare inte har skrivbehörighet till katalogen /var . Därför måste du köra kommandot som en superanvändare.

Kör följande kommando för att köra programmet från en publicerad mapp:

dotnet /var/firstwebapp/AspNetCoreDemo.dll

Om du vill kan du köra dessa tester med hjälp av samma curl kommandon och wget kommandon. Det beror på att programmet fortfarande lyssnar på port 5000 för HTTP-begäranden.

Processens livslängd och nästa steg

Om programmet kräver konstant drifttid är det inte bra att köra .NET-program i en interaktiv användarsession av följande skäl:

  • Om användarna skulle avsluta sina sessioner, till exempel genom att stänga PuTTY eller PowerShell SSH-klienten eller avsluta sessionen, skulle programmet stängas.
  • Om processen avslutas av någon anledning (till exempel att processen kraschar på grund av ett ohanterat undantag) startar den inte automatiskt och måste startas om manuellt.
  • Om servern startas om startar inte programmet automatiskt.

Nästa steg

Del 2.2 – Installera Nginx och konfigurera det som en omvänd proxyserver

Kontrollera att webbprogrammet startas automatiskt. Installera och konfigurera Nginx som en omvänd proxy för att dirigera HTTP-begäranden som görs till port 80 till dotnet-programmet i stället (så att klienter kan ansluta utan att behöva ange portnumret).

Ansvarsfriskrivning för information från tredje part

De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.