Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
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.
Du har skapat ditt första program. Nästa uppgift blir att köra den. Ändra katalogen till projektmappen och kör 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.
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 wgethttp://server/file.zip
file.zip frånhttp://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 wget
gå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://localhost
sker 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.
Det här är vad som händer nu:
- Du gör en HTTP-begäran till
http://localhost:5000
och 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.
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.
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.
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ä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.