Mam w domu Raspberry Pi 3B (Raspberry Pi 3B Arm architecture 32-bit) i ostatnio się kurzę w domu, ponieważ programy .NET Core mogą być wieloplatformowe, więc zamierzam napisać stronę internetową do wdrożenia na Raspberry Pi. Domowy internet ma publiczny adres IP, ale adres IP zmienia się za każdym razem, gdy router jest restartowany, a darmowy DDNS w routerze ASUS nie jest łatwy w użyciu (domowy adres IP się zmienił, a rozwiązywanie nazw domen nie zadziałało na czas). Mam w domu desktopowy DELL i serwer DELL EMC, więc przygotuj się na napisanie usługi DDNS i narzędzia Wake-on-the-Internet z ASP.NET Core.
Dzięki DDNS możeszUzyskaj adres IP Internetu w domu na czas, użycie funkcji Wake-on-Network jest możliweObudź mój komputer stacjonarny DELL, co jest wygodne do konsultowania informacji w domu.
Strony napisane przy użyciu ASP.NET Core 6 są wdrażane na Raspberry PiDziała nieprzerwanie od ponad 3 miesięcy, bez żadnych problemów.
Zainstaluj runtime AspNetCore
Najpierw Raspberry Pi musi być zainstalowane z systemem Raspberry Pi OS, a samouczek wygląda następująco:
Następnie zainstaluj AspNetCore Runtime na Raspberry Pi, zaloguj się na hosta Raspberry Pi przez SSH i korzystaj z niegosudo -iPrzełącz się na root i utwórz folder /usr/dotnet za pomocą następującego polecenia:
Pobierz aspnetcore-runtime-6.0.1-linux-arm.tar.gz i rozpakuj za pomocą następującego polecenia:
Aby utworzyć miękkie link, polecenie jest następujące:
W tym momencie instalowane jest środowisko uruchomieniowe wymagane przez ASP.NET stronę Core i sprawdzane jest zainstalowane runtime, jak pokazano na poniższym rysunku:
DDNS Dynamic Domain Name Service
Wywołaj interfejs DNSPod, aby zaimplementować dynamiczną usługę nazw domen DDNS, dokument interfejsu:Logowanie do linku jest widoczne.
Utwórz nowy projekt MVC ASP.NET Core 6 używając VS 2022, stwórz nowy plik DNSPodOptions.cs do skonfigurowania parametrów wymaganych dla interfejsu wywołania, w następujący sposób:
appsettings.json Dodaj następującą konfigurację:
Zmodyfikuj plik Program.cs, aby odwzorować informacje konfiguracyjne na klasę DNSPodOptions, a kod wygląda następująco:
Utwórz nowy plik DDNSWorker.cs, stwórz usługę w tle, uzyskuj adres IP raz na minutę i wywołaj interfejs DNSPPod, aby zaktualizować rozdzielczość nazw domen, jeśli adres IP się zmieni. (Uwaga:Jeśli w ciągu 1 godziny zostanie złożonych więcej niż 5 wniosków o modyfikację rekordów bez żadnych zmian, rekordy zostaną zablokowane przez system na 1 godzinę i nie będą już dozwolone do ponownej modyfikacji。 Na przykład oryginalna wartość rekordu to już 1.1.1.1, a nowe żądanie wymaga jej zmiany na 1.1.1.1. )
Kod jest następujący:
Zmodyfikuj plik Program.cs i zarejestruj usługę backendową za pomocą następującego kodu:
Pełny kod Program.cs przedstawia się następująco:
Debugger może normalnie wywołać interfejs DNSPOD, w następujący sposób:
Wake On LAN
Wake-on-LAN jest skracane do WOL lub WoL, co w języku chińskim najczęściej oznacza "online wake-up" i "zdalne budzenie". WOL to technologia, a także specyfikacja tej technologii, a jej efekt polega na umożliwieniu komputerowi, który wszedł w stan uśpioności lub wyłączenia, wydawanie mu poleceń przez drugi koniec sieci lokalnej (głównie Ethernet), tak aby obudził się z hibernacji, wrócił do stanu operacyjnego lub przeszedł ze stanu wyłączenia na stan. Ponadto technologie związane z WOL obejmują także mechanizmy zdalnego sterowania, takie jak zdalne wyłączanie i zdalne ponowne uruchomienie.
Zmodyfikuj kontroler HomeController i dodaj interfejs Wake-on-Network – kod wygląda następująco:
Edytuj stronę Index.cshtml, dodaj pole wejściowe adresu MAC i przycisk, a następnie użyj Ajaxa do wywołania interfejsu, kod wygląda następująco:
Rozpocznij projekt zgodnie z poniższą ilustracją:
Zainstalowany na Raspberry Pi
Korzystając z VS 2022, aby wydać projekt, prześlij pakiet do folderu /home/pi/wol Raspberry Pi, jak pokazano poniżej:
Utwórz nowy plik nbddns.service w folderze /etc/systemd/system i zarejestruj projekt jako usługę Linuksa, w następujący sposób:
Uruchom usługę nbddns i ustaw uruchamianie tak, aby uruchamiał się automatycznie za pomocą następującego polecenia:
Zobacz status usługi, jak pokazano na poniższym rysunku:
Na koniec, w ustawieniach routeraMapowanie portów, a potem uzyskać dostęp przez nazwę domeny i zmapowany port extranet, mój telefonKorzystanie z sieci 4GbezpośredniMożesz uzyskać dostęp do ASP.NET aplikacji Core wdrożonych na Raspberry Pi, jak pokazano na poniższym rysunku:
(Koniec)
|