1. Einführung in Linux .NET Core Microsoft hat .NET-Unterstützung immer nur für seine eigene Plattform bereitgestellt, was bedeutet, dass Unterstützung für dieses „theoretisch“ plattformübergreifende Framework unter Linux und macOS nur von Drittanbieterprojekten (wie Mono .NET) bereitgestellt werden kann. Bis Microsoft das vollständig Open Source .NET Core auf den Markt brachte. Diese Open-Source-Plattform ist mit .NET Standard kompatibel und bietet eine vollständig konsistente API unter Windows, Linux und MacOS. Obwohl dieses kleine .NET-Framework nur eine Teilmenge des Standard-.NET ist, ist es bereits ziemlich leistungsstark. Einerseits ermöglicht dieses kleine Framework, dass einige funktionale Anwendungen auf drei Plattformen gleichzeitig ausgeführt werden können (wie einige funktionale Python-Skripte). Andererseits ermöglicht es Serverbetreibern auch, ASP.NET-Dienstprogramme auf Linux-Servern bereitzustellen (insbesondere für Server, auf denen Windows Server nur schwer ausgeführt werden kann). Offizielle Website-Referenz: https://www.microsoft.com/net/core#linuxcentos 2. Vorbereitung vor der Bereitstellung einer Linux .NET Core 2.0-Umgebung 1. Umgebungsbeschreibung: Serversystem: CentOS 7.2.1511 2. Vorbereitung vor der Installation (Firewall ausschalten, Selinux ausschalten) 1) Schalten Sie die Firewall aus: systemctl stop firewalld.service #Firewall stoppen systemctl disable firewalld.service #Firewall-Start deaktivieren firewall-cmd --state #Standard-Firewall-Status anzeigen (beim Schließen wird „notrunning“ angezeigt, beim Öffnen wird „running“ angezeigt) 2) Selinux ausschalten sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config Überprüfen Sie die geänderte Datei wie folgt: [root@localhost ~]# cat /etc/selinux/config # Diese Datei steuert den Status von SELinux auf dem System. # SELINUX= kann einen dieser drei Werte annehmen: # Erzwingen – Die SELinux-Sicherheitsrichtlinie wird erzwungen. # permissiv – SELinux druckt Warnungen, anstatt sie zu erzwingen. # deaktiviert – Es ist keine SELinux-Richtlinie geladen. SELINUX=deaktiviert # SELINUXTYPE= kann einen von drei zwei Werten annehmen: # gezielt - Gezielt werden Prozesse geschützt, # Minimum - Änderung der gezielten Richtlinie. Nur ausgewählte Prozesse werden geschützt. # mls – Mehrstufiger Sicherheitsschutz. SELINUXTYPE=zielgerichtet 3) Starten Sie CentOS neu Neustart 3. Centos stellt eine .NET Core 2.0-Umgebung bereit 1. DOTNET-Produkte hinzufügen Bevor Sie .NET Core installieren, müssen Sie sich bei Microsoft Product Feeds registrieren. Dies muss nur einmal durchgeführt werden. Registrieren Sie zunächst Ihren Microsoft-Signaturschlüssel und fügen Sie dann Ihren Microsoft-Produkt-Feed hinzu. rpm --import https://packages.microsoft.com/keys/microsoft.asc sh -c 'echo -e "[packages-microsoft-com-prod]nname=packages-microsoft-com-prod nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prodnenabled=1ngpgcheck=1ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo' 2. Installieren Sie das .NET Core SDK Bevor Sie fortfahren, entfernen Sie alle vorherigen Vorschauversionen von .NET von Ihrem System. Die folgenden Befehle aktualisieren die Liste der zu installierenden Produkte, installieren die für .NET Core erforderlichen Komponenten und installieren dann das .NET Core SDK. Yum-Aktualisierung yum installiere libunwind libicu -y yum installiere dotnet-sdk-2.0.0 -y 3. Überprüfen Sie, ob dotnet erfolgreich installiert wurde und überprüfen Sie die Version dotnet --info dotnet --version 4. Testen Sie die .NET Core 2.0-Umgebung 1. Initialisieren Sie eine Testumgebung im Home-Verzeichnis und geben Sie den Inhalt "Hallo Welt" aus (Testmethode 1, kann ignoriert werden). CD /Home dotnet neue Konsole -o hwapp CD hwapp dotnet run Die Ausgabe ist wie folgt leer: [root@localhost hwapp]# dotnet run Hallo Welt! 2. Laden Sie die .net Core-Instanzseite zum Testen hoch (Testmethode 2, empfohlen) Testfall für die Centos .net Core 2-Umgebung (laden Sie ihn in das /home-Verzeichnis oder ein benutzerdefiniertes Verzeichnis hoch) Downloadadresse: http://down.51cto.com/data/2334968 Führen Sie den folgenden Befehl aus cd /home/WebAnwendung1 dotnet restore //Wenn Sie Testmethode 1 verwendet haben, müssen Sie diesen Befehl ausführen, um die aktuelle neue Website-Datei neu zu laden dotnet run Nach dem Ausführen wird die folgende Abbildung angezeigt: Greifen Sie über den Internet Explorer auf die Testseite zu 5. Installieren und konfigurieren Sie nginx zur Weiterleitung von ASP.NET Core-Anwendungen 1. Installieren Sie die Nginx-Umgebung [root@localhost ~]#curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm [root@localhost ~]#rpm -ivh nginx.rpm [root@localhost ~]#yum installiere nginx -y Geben Sie „systemctl start nginx“ ein, um nginx zu starten. [root@localhost ~]# systemctl starte nginx Geben Sie „systemctl enable nginx“ ein, um den Start von nginx einzurichten (Linux führt nginx automatisch aus, wenn es abstürzt oder neu gestartet wird, sodass Sie keine Verbindung herstellen müssen, um Befehle einzugeben). [root@localhost ~]#systemctl aktiviere nginx Symlink von /etc/systemd/system/multi-user.target.wants/nginx.service nach /usr/lib/systemd/system/nginx.service erstellt. 2. Überprüfen Sie, ob Sie über den Internet Explorer darauf zugreifen können [root@localhost nginx-1.8.1]# ps -ef|grep nginx root 14626 1 0 08:47 ? 00:00:00 nginx: Master-Prozess nginx nginx 14627 14626 0 08:47 ? 00:00:00 nginx: Arbeitsprozess root 14636 3269 0 08:49 Punkte/1 00:00:00 grep --color=auto nginx Häufig verwendete Betriebsbefehle von nginx systemctl start nginx.service #Nginx-Dienst starten systemctl enable nginx.service #Automatischen Start einrichten systemctl disable nginx.service #Booten und automatischen Start stoppen systemctl status nginx.service #Zeigen Sie den aktuellen Status des Dienstes an systemctl restart nginx.service #Starten Sie den Dienst neu systemctl list-units –type=service #Alle gestarteten Dienste anzeigen 4. Firewall-Konfiguration (wenn das System über eine Firewall verfügt, müssen Sie Regeln schreiben) Befehl: Firewall-cmd –zone=public –add-port=80/tcp –permanent (Port 80 öffnen) Befehl: systemctl restart firewalld (Firewall neu starten, damit die Konfiguration sofort wirksam wird) 5. Konfigurieren Sie nginx zum Weiterleiten von ASP.NET Core-Anwendungen Ändern Sie die Datei /etc/nginx/conf.d/default.conf. Ersetzen Sie den Dateiinhalt durch Server { hören Sie 80; Standort / { Proxy-Passwort http://localhost:88; Proxy_http_Version 1.1; Proxy_Set_Header-Upgrade $http_upgrade; proxy_set_header Verbindung aufrechterhalten; Proxy_Set_Header Host $host; Proxy-Cache-Bypass $http_upgrade; } } Nignx neu laden [root@localhost nginx]# nginx -s neu laden Die Konfiguration von nginx ist abgeschlossen 6. Öffnen Sie dotnet run zum Testen [root@localhost ~]# cd /home/WebAnwendung1/ [root@localhost WebApplication1]# dotnet run Starteinstellungen aus /home/WebApplication1/Properties/launchSettings.json werden verwendet … Hosting-Umgebung: Entwicklung Stammpfad des Inhalts: /home/WebApplication1 Jetzt anhören auf: http://[::]:88 Anwendung gestartet. Drücken Sie zum Herunterfahren Strg+C. Zugriff über IP-Port 80 6. Supervisor konfigurieren Es gibt drei Probleme Frage 1: Die ASP.NET Core-Anwendung wird in der Shell ausgeführt. Wenn Sie die Shell schließen, werden Sie feststellen, dass die ASP.NET Core-Anwendung geschlossen wird, wodurch die Anwendung nicht mehr zugänglich ist. Dies ist sicherlich keine Situation, die wir erleben möchten, und die Produktionsumgebung hat keinerlei Toleranz für diese Situation. Frage 2: Wenn der ASP.NET Core-Prozess unerwartet beendet wird, müssen Sie manuell eine Verbindung zur Shell herstellen, um ihn neu zu starten. Dieser Vorgang ist jedoch häufig nicht rechtzeitig genug. Frage 3: Wenn der Server ausfällt oder neu gestartet werden muss, müssen wir uns trotzdem mit der Shell verbinden, um ihn zu starten. Um dieses Problem zu lösen, benötigen wir ein Programm zur Überwachung des Status der ASP.NET Core-Anwendung. Starten Sie die Anwendung sofort neu, wenn sie nicht mehr ausgeführt wird. Hier verwenden wir das mit Python entwickelte Supervisor-Tool. 1. Supervisor installieren [root@localhost /]# yum install python-setuptools -y [root@localhost /]#easy_install Supervisor 2. Supervisor konfigurieren [root@localhost /]#mkdir /etc/supervisor [root@localhost /]#echo_supervisord_conf > /etc/supervisor/supervisord.conf Ändern Sie die Datei supervisord.conf und ändern Sie die Konfiguration am Ende der Datei [root@localhost /]# vi /etc/supervisor/supervisord.conf Ändern Sie die letzten beiden Zeilen: ;[enthalten] ;Dateien = relatives/Verzeichnis/*.ini Wechseln zu [enthalten] Dateien = conf.d/*.conf ps: Wenn der Dienst gestartet wurde, können Sie mit dem Befehl "supervisorctl reload" die Konfigurationsdatei ändern, damit sie wirksam wird 3. Konfigurieren Sie den ASP.NET Core Application Guard Erstellen Sie eine Datei WebApplication1.conf mit folgendem Inhalt: [root@localhost /]# vi WebApplication1.conf [Programm:WebAnwendung1] command=dotnet WebApplication1.dll; Befehl zum Ausführen des Programmsdirectory=/home/WebApplication1/; Verzeichnis, in dem der Befehl ausgeführt wirdautorestart=true; Gibt an, ob das Programm automatisch neu gestartet werden soll, wenn es unerwartet beendet wirdstderr_logfile=/var/log/WebApplication1.err.log; Fehlerprotokolldateitdout_logfile=/var/log/WebApplication1.out.log; Ausgabeprotokolldateienvironment=ASPNETCORE_ENVIRONMENT=Production; Prozessumgebungsvariableuser=root; Benutzeridentität der Prozessausführungstopsignal=INT Kopieren Sie die Datei nach: „/etc/supervisor/conf.d/WebApplication1.conf“ [root@localhost /]#mkdir /etc/supervisor/conf.d [root@localhost /]#cp WebApplication1.conf /etc/supervisor/conf.d/ Führen Sie supervisord aus, um zu sehen, ob es funktioniert [root@localhost /]#supervisord -c /etc/supervisor/supervisord.confsupervisord -c /etc/supervisor/supervisord.conf [root@localhost /]# ps -ef | grep WebApplication1 root 29878 29685 0 09:57 ? 00:00:00 dotnet WebApplication1.dll root 29892 29363 0 09:57 Punkte/3 00:00:00 grep --color=auto WebApplication1 Wenn der Prozess dotnet WebApplication1.dll vorhanden ist, bedeutet dies, dass der Vorgang erfolgreich war. Zu diesem Zeitpunkt können Sie über einen Browser darauf zugreifen. An diesem Punkt ist die Konfiguration des ASP.NET Core-Anwendungswächters abgeschlossen. Allgemeine Vorgänge des Supervisor-Daemons Supervisor starten Beenden Sie Supervisord [Konfigurationsdatei neu laden] 7. Supervisor-Start konfigurieren Erstellen Sie eine neue Datei „supervisord.service“ [root@localhost /]# vi supervisord.service # dservice für systemd (CentOS 7.0+) # von ET-CS (https://github.com/ET-CS) [Einheit] Beschreibung=Supervisor-Daemon [Service] Typ=Forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl Herunterfahren ExecReload=/usr/bin/supervisorctl neu laden KillMode=Prozess Neustart=bei Fehler NeustartSec=42s [Installieren] WantedBy=Mehrbenutzer.Ziel Kopieren Sie die Datei nach: „/usr/lib/systemd/system/supervisord.service“ [root@localhost /]# cp supervisord.service /usr/lib/systemd/system/ Befehl ausführen: systemctl enable supervisord [root@localhost /]# systemctl enable supervisord Symlink von /etc/systemd/system/multi-user.target.wants/supervisord.service nach /usr/lib/systemd/system/supervisord.service erstellt. Führen Sie den Befehl aus: systemctl is-enabled supervisord #, um zu überprüfen, ob es beim Booten gestartet wird [root@localhost /]# systemctl ist aktiviert supervisord Starten Sie das System neu, um zu prüfen, ob Sie erfolgreich darauf zugreifen können [root@localhost /]# Neustart Oben ist die detaillierte Methode zum Erstellen einer .NET Core2.0+Nginx+Supervisor+Mysql-Umgebung unter dem Centos7-System. Ich hoffe, es wird für alle hilfreich sein. Das könnte Sie auch interessieren:
|
Code kopieren Der Code lautet wie folgt: <!DOC...
Wie wir alle wissen, gibt es in Computern zwei Art...
Einführung in Vue Die aktuelle Ära der großen Fro...
MongoDB-Installationsprozess und Problemaufzeichn...
Dieser Artikel erläutert anhand von Beispielen di...
Inhaltsverzeichnis 1. Vue-Listener-Array 2. Situa...
Enctype: Gibt den Kodierungstyp an, der vom Browse...
Designspezifikationen für WeChat Mini-Programmkom...
Verwenden Sie „blockquote“ für lange Zitate, „q“ ...
Inhaltsverzeichnis 1. Zugeordnete Typen 2. Mappin...
In diesem Artikel werden einige der Techniken ausf...
Vorwort Ich bin davon überzeugt, dass bei der Ent...
In den letzten Projekten werden viele Formulare e...
Vorwort innodb_data_file_path wird verwendet, um ...
1. Einführung in mysqlbackup mysqlbackup ist die ...