Erstellen einer .NET Core 2.0 + Nginx + Supervisor-Umgebung unter einem Centos7-System

Erstellen einer .NET Core 2.0 + Nginx + Supervisor-Umgebung unter einem Centos7-System

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
Nachdem Sie sichergestellt haben, dass die Konfiguration korrekt ist, können Sie auf jedem Host den folgenden Befehl verwenden, um den Supervisor-Server Supervisord zu starten.
beaufsichtigt

Beenden Sie Supervisord
Supervisorctl Herunterfahren

[Konfigurationsdatei neu laden]
Supervisorctl 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:
  • .Net Core3.0 WebApi-Projekt-Framework-Aufbau: Verwendung von Serilog als Ersatz für Log4j
  • .Net Core Service Governance Consul erstellt Cluster
  • Diagramm des Prozesses zum Erstellen einer .NET Core-Umgebung für kontinuierliche Integration basierend auf Jenkins
  • CodeFirst erstellt eine Asp.Net Core 2.0-Website von Grund auf
  • Tutorial zum Erstellen einer .Net Core+Angular Cli/Angular4-Entwicklungsumgebung
  • So erstellen Sie eine Asp.net-Kernentwicklungsumgebung in VS2015
  • Detaillierte Erläuterung der .Net Core + Angular2-Umgebungskonstruktion
  • Erstellen einer ASP.NET Core-Umgebung auf einem Cloud-Server
  • Erstellen einer ASP.NET Core-Umgebung unter Linux (Ubuntu)
  • Schritte zum Erstellen einer ASP.NET Core-Bereitstellungsumgebung unter Windows 10
  • Grafik-Tutorial für die Windows Server 2012 R2 Standard ASP.NET Core-Umgebung
  • Das Ubuntu16.04-System erstellt eine .Net Core-Entwicklungsumgebung

<<:  Detaillierte Erläuterung der Verwendung von MySQL-Profilen zur Analyse von langsamem SQL (Group Left Join ist effizienter als Unterabfrage)

>>:  Vue zeigt dynamisch den Wochentag an, der dem Datum entsprechend dem ausgewählten Monat entspricht

Artikel empfehlen

So fügen Sie bei der Webseitenerstellung Webfont-Dateien Vektorsymbole hinzu

Wie wir alle wissen, gibt es in Computern zwei Art...

Funktionsprinzip und Implementierungsmethode der Vue-Anweisung

Einführung in Vue Die aktuelle Ära der großen Fro...

Linux-Installation, MongoDB-Start und Lösung allgemeiner Probleme

MongoDB-Installationsprozess und Problemaufzeichn...

MySql-Wissenspunkte: Transaktion, Index, Sperrprinzip und Nutzungsanalyse

Dieser Artikel erläutert anhand von Beispielen di...

Lösung für Vues Unfähigkeit, Array-Änderungen zu beobachten

Inhaltsverzeichnis 1. Vue-Listener-Array 2. Situa...

Einführung in das Enctype-Attribut des Form-Tags und seine Anwendungsbeispiele

Enctype: Gibt den Kodierungstyp an, der vom Browse...

Komponentendesignspezifikationen für die Entwicklung von WeChat-Miniprogrammen

Designspezifikationen für WeChat Mini-Programmkom...

Beherrschen Sie die häufig verwendeten HTML-Tags zum Zitieren von Inhalten auf Webseiten.

Verwenden Sie „blockquote“ für lange Zitate, „q“ ...

Details zum TypeScript-Mapping-Typ

Inhaltsverzeichnis 1. Zugeordnete Typen 2. Mappin...

Welche Codes sollte ich beherrschen, wenn ich Webdesign lerne?

In diesem Artikel werden einige der Techniken ausf...

Tutorial zur mobilen Entwicklung: Zusammenfassung der Pixelanzeigeprobleme

Vorwort Ich bin davon überzeugt, dass bei der Ent...

Einige Hinweise zum Ändern des innodb_data_file_path-Parameters von MySQL

Vorwort innodb_data_file_path wird verwendet, um ...