Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: .NET 8 i nowsze
W tym artykule przedstawiono sposób tworzenia i konfigurowania aplikacji ASP.NET Core w systemie Linux.
Wymagania wstępne
Aby wykonać ćwiczenia opisane w tej części, musisz mieć zainstalowany zestaw .NET SDK. Aby zainstalować zestaw SDK, zapoznaj się z instrukcjami instalacji w części 1, w razie potrzeby.
Cel tej części
Dowiedz się, jak utworzyć aplikację internetową platformy ASP.NET Core przy użyciu interfejsu wiersza polecenia platformy .NET w systemie Linux oraz jak opublikować aplikację w katalogu /var . Podczas nauki tych pojęć będziesz ćwiczyć niektóre podstawowe zadania, takie jak praca z plikami i folderami oraz uruchamianie poleceń jako użytkownik uprzywilejowany. Dowiesz się również, jak edytować pliki przy użyciu edytora tekstów vi w systemie Linux.
.NET CLI
Zgodnie z tą dokumentacją interfejsu wiersza polecenia platformy .NET interfejs wiersza polecenia platformy .NET jest wieloplatformowym łańcuchem narzędzi do tworzenia, kompilowania, uruchamiania i publikowania aplikacji platformy .NET. Interfejs wiersza polecenia platformy .NET jest instalowany razem z zestawem .NET SDK.
Te szkolenia często używają dotnet
polecenia . To polecenie jest zaawansowane i ma dwie główne funkcje:
- Udostępnia polecenia do pracy nad projektami platformy .NET. Na przykład
dotnet build
kompiluje projekt. Każde polecenie definiuje własne opcje i argumenty. Wszystkie polecenia obsługują--help
opcję drukowania krótkich wyjaśnień dotyczących używania polecenia. - Uruchamia aplikacje .NET.
Użyjesz polecenia , dotnet new
aby utworzyć pierwszy projekt ASP.NET Core w systemie Linux. To polecenie pobiera typ projektu jako argument. Typy projektów zostały wyjaśnione w tym dokumencie. Listę typów można również wyświetlić, uruchamiając polecenie dotnet new
bez parametru. Typy projektów związanych z siecią Web są wyróżnione kolorem żółtym na poniższym zrzucie ekranu.
Tworzenie aplikacji internetowej platformy ASP.NET Core przy użyciu zestawu SDK
Użyjesz interfejsu wiersza polecenia platformy .NET, aby utworzyć pierwszą aplikację internetową przy użyciu następującego polecenia:
dotnet new <template_type> -n <project_name> -o <output_directory>
Te reguły mają zastosowanie w przypadku używania polecenia dotnet new
:
- Polecenie tworzy pliki projektu w katalogu wyjściowym. Jeśli pominięto
-o <output_directory>
segment, projekt zostanie utworzony w bieżącym katalogu. Zawsze można użyć przełącznika-o
. - Jeśli folder nie istnieje, polecenie go utworzy.
- Jeśli pominięto
-n <project_name>
segment, nazwa projektu będzie taka sama jak nazwa katalogu.
Możesz znaleźć twórcze nazwy katalogu i samego projektu. Należy jednak pamiętać, że w systemie Linux jest rozróżniana wielkość liter. W tym ćwiczeniu użyj bardziej konserwatywnej AspNetCoreDemo
nazwy projektu i utwórz ją w firstwebapp
katalogu.
Aby utworzyć projekt, uruchom następujące polecenie:
dotnet new webapp -n AspNetCoreDemo -o firstwebapp
Sprawdź dane wyjściowe, aby wyświetlić katalog i nazwy projektów. Poniższy zrzut ekranu zawiera również zawartość katalogu wyjściowego. Jeśli wcześniej utworzono aplikację internetową ASP.NET Core w systemie Windows, należy zapoznać się ze strukturą katalogów.
Utworzono pierwszą aplikację. Następnym zadaniem będzie jego uruchomienie. Zmień katalog na folder projektu i uruchom polecenie dotnet run
.
Uwaga 16.
Następujące elementy na tym zrzucie ekranu:
- Aplikacja internetowa nasłuchuje na porcie 5001 dla żądań HTTPS i nasłuchuje na porcie 5000 dla żądań HTTP.
- Katalog główny zawartości znajduje się w katalogu głównym.
Zalecamy, aby aplikacja nie działała w katalogu głównym. Opublikujesz go w innym katalogu później, ale przed opublikowaniem go należy przetestować. Możesz nacisnąć Ctrl+C , aby zatrzymać aplikację. Jednak na razie zachowaj jego działanie i otwórz nową sesję terminalu przy użyciu preferowanej metody nawiązywania połączenia z maszyną wirtualną z systemem Linux. W tym przykładzie ponownie użyjesz programu PowerShell.
Testowanie witryny internetowej z innego terminalu
W nowej sesji terminalu sprawdź, czy aplikacja nasłuchuje na portach 5000 i 5001. System Linux ma to samo netstat
polecenie, które ma system Windows. Uruchom netstat
razem z przełącznikiem -tlp
. Możesz zapoznać się z netstat
przełącznikami w tym artykule lub przejrzeć plik pomocy, uruchamiając polecenie man netstat
lub info netstat
.
Oto dane wyjściowe netstat -tlp
polecenia z drugiej sesji terminalu. Pokazuje on, że proces AspNetCoreDemo jest uruchomiony przy użyciu identyfikatora PID 781 i nasłuchuje na portach 5000 i 5001 dla protokołów IPv4 i IPv6.
Aby przetestować witrynę internetową, możesz użyć narzędzia curl i wget . Oba polecenia tworzą wywołanie HTTP po stronie docelowej, ale zachowują się inaczej:
-
Curl
to po prostu narzędzie przeglądarki wiersza polecenia. Wysyła ono żądanie HTTP do danego obiektu docelowego i wyświetla tylko zwykłe dane wyjściowe odpowiedzi HTTP. Na przykład wyświetla on znaczniki źródłowe HTML dla aplikacji internetowej. -
Wget
jest modułem pobierania HTTP. Wysyła żądanie HTTP i pobiera dany zasób. Na przykład wgethttp://server/file.zip
pobiera file.zip zhttp://server
i zapisz go w bieżącym katalogu.
Polecenie wget
zawiera również kilka dodatkowych szczegółów, takich jak przekierowanie i wszelkie komunikaty o błędach, które mogą zostać odebrane. W związku z tym można go użyć jako pierwotnej wersji narzędzia śledzenia HTTP zawsze wtedy, gdy jest to potrzebne.
Aby uzyskać więcej informacji na temat różnic między elementami curl
i wget
, przejdź do strony internetowej StackExchange.
W tej serii szkoleniowej wcześniej pobrano wget
plik menedżera pakietów .deb z serwerów firmy Microsoft przed zainstalowaniem platformy .NET.
Jeśli uruchomisz polecenie curl http://localhost
, nic się nie dzieje. Najprawdopodobniej oznacza to, że nie ma odpowiedzi HTTP. Następnie możesz uruchomić polecenie wget http://localhost
, aby sprawdzić, czy podczas próby uzyskania dostępu do witryny jest wyświetlanych więcej informacji.
Dzieje się tak teraz:
- Żądanie HTTP jest nawiązywane z
http://localhost:5000
usługą , a połączenie powiodło się. Oznacza to, że aplikacja akceptuje połączenia na porcie 5000. - Otrzymasz tymczasową odpowiedź przekierowania HTTP 307 z aplikacji, która wskazuje bezpieczną lokalizację HTTPS:
https://localhost:5001
. - Wget jest wystarczająco inteligentny, aby wykonać to przekierowanie i wysłać nowe żądanie do
https://localhost:5001
. - Połączenie powiodło się ponownie.
wget
Nie ufa jednak certyfikatowi SSL. W związku z tym połączenie kończy się niepowodzeniem.
Polecenie wget
zaleca obejście tego problemu przy użyciu przełącznika --no-check-certificate
w celu zapewnienia niezabezpieczonego połączenia. Jednak takie podejście obejmuje ustawienia certyfikatów SSL, które są poza zakresem tego szkolenia. Zamiast tego można skonfigurować aplikację ASP.NET Core, aby nie przekierowywała żądań HTTP do protokołu HTTPS. Jeśli znasz ASP.NET Core application development (lub po prostu konfigurację), zmodyfikuj plik Startup.cs , aby usunąć konfigurację przekierowania.
Edytowanie plików przy użyciu narzędzia vi
Edytor tekstów vi dla dystrybucji systemu Linux umożliwia edytowanie wszystkich rodzajów plików zwykłego tekstu. Użyjesz go w tym szkoleniu, aby ponownie skonfigurować aplikację.
Aby móc edytować aplikację, musisz zamknąć aplikację. Najpierw zamknij otwartą sesję terminalu. Następnie naciśnij Ctrl+C , aby zamknąć aplikację.
Aby edytować plik Startup.cs , uruchom następujące polecenie:
vi ~/firstwebapp/Startup.cs
Uwaga 16.
To polecenie uruchamia edytor vi, a następnie ładuje plik. Skrót ~ (tylda) odnosi się do katalogu macierzystego, w którym utworzono projekt. Oznacza to, że polecenie wskazuje /home/YourName>/<firstwebapp/Startup.cs.
Naciśnij I (Wstaw), aby włączyć tryb edycji. Powinien zostać wyświetlony komunikat -- INSERT - w dolnej części wiersza polecenia. Użyj strzałek, aby nawigować w pliku. Oznacz jako komentarz wiersze app.UseHsTs()
; i app.UseHttpsRedirection()
, dodając //
na początku, jak pokazano na poniższym zrzucie ekranu.
Naciśnij esc , aby zamknąć tryb edycji, wprowadź ciąg :wq!, a następnie naciśnij Enter. Zwróć uwagę, że znak dwukropka (:
) oznacza, że wprowadzasz polecenie, w
oznacza to zapis, q
oznacza zamknięcie i !
wymusza pisanie.
Po naciśnięciu Enter zmiany powinny zostać zapisane. Możesz zweryfikować zmiany, uruchamiając polecenie cat ~/firstwebapp/Startup.cs
. To polecenie wyświetla zawartość pliku Startup.cs .
Uruchom ponownie aplikację. W tym celu zmień bieżący katalog na ~/firstwebapp
katalog i uruchom dotnet run
ponownie. Następnie otwórz kolejną sesję terminalu na serwerze i ponownie uruchom curl http://localhost:5000
polecenie. Tym razem polecenie powinno zwrócić zawartość HTML strony głównej.
Udało Ci się pomyślnie uruchomić pierwszą aplikację internetową ASP.NET Core w systemie Linux.
Wdrażanie aplikacji w katalogu /var
Głównym celem tego ćwiczenia jest hostowanie aplikacji internetowej za zwrotnym serwerem proxy, dzięki czemu łączenie klientów może uzyskiwać dostęp do aplikacji z innego komputera przy użyciu tylko nazwy hosta bez numeru portu. Jest to, czego można oczekiwać w rzeczywistych scenariuszach. Później będziesz pracować z serwerem Nginx, aby wykonać to zadanie. Jednak zanim to zrobisz, opublikuj aplikację w katalogu /var . Jest to spowodowane tym, że zalecamy, aby nie uruchamiać aplikacji w katalogu głównym użytkownika.
Pamiętaj, że katalog /var jest używany do przechowywania zawartości i plików dziennika przez różne aplikacje, takie jak Apache i Nginx. Zastosujesz to rozwiązanie, publikując nowo utworzoną aplikację internetową w lokalizacji /var.
Przejdź do folderu projektu, a następnie uruchom polecenie dotnet publish
, aby utworzyć folder publikowania. Skopiuj ten folder do katalogu /var .
Zrzut ekranu pokazuje, że dotnet publish
polecenie utworzyło pliki publikowania w folderze ~/firstwebapp/bin/Debug/net5.0/publish/ . Następnie następujące polecenie zostało użyte do skopiowania wszystkich plików do folderu /var/firstwebapp/ :
sudo cp -a ~/firstwebapp/bin/Debug/net5.0/publish/ /var/firstwebapp/
Uwaga 16.
Zanotuj użycie polecenia sudo
przed poleceniem copy. Jest to używane, ponieważ użytkownicy standardowi nie mają uprawnień do zapisu w katalogu /var . W związku z tym należy uruchomić polecenie jako superużytkownik.
Aby uruchomić aplikację z opublikowanego folderu, uruchom następujące polecenie:
dotnet /var/firstwebapp/AspNetCoreDemo.dll
Jeśli chcesz, możesz uruchomić te testy przy użyciu tych samych curl
poleceń i wget
. Dzieje się tak, ponieważ aplikacja będzie nadal nasłuchiwać na porcie 5000 dla żądań HTTP.
Okres istnienia procesu i następnych kroków
Jeśli aplikacja wymaga stałego czasu pracy, uruchamianie aplikacji .NET w interakcyjnej sesji użytkownika nie jest dobrym rozwiązaniem z następujących powodów:
- Jeśli użytkownicy mieli zakończyć sesje, na przykład przez zamknięcie programu PuTTY lub klienta SSH programu PowerShell lub zamknięcie sesji, aplikacja zostanie zamknięta.
- Jeśli proces zostanie zakończony z jakiegoś powodu (na przykład proces ulega awarii z powodu nieobsługiwanego wyjątku), nie zostanie uruchomiony automatycznie i musi zostać uruchomiony ponownie ręcznie.
- Jeśli serwer zostanie uruchomiony ponownie, aplikacja nie zostanie uruchomiona automatycznie.
Następne kroki
Część 2.2 — Instalowanie serwera Nginx i konfigurowanie go jako odwrotnego serwera proxy
Upewnij się, że aplikacja internetowa jest uruchamiana automatycznie. Zainstaluj i skonfiguruj serwer Nginx jako zwrotny serwer proxy w celu kierowania żądań HTTP wysyłanych do portu 80 do aplikacji dotnet (dzięki czemu klienci mogą łączyć się bez konieczności podawania numeru portu).
Zastrzeżenie dotyczące innych firm
Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.