Entwicklung von ASP.NET Framework 4.x unter macOS
ServBay macht durch die integrierte potente Mono-Umgebung die Entwicklung und das Testen von ASP.NET Framework 1.1/2.0/3.x/4.x (maximal unterstützt bis 4.7.x) unter macOS einfach und machbar.
Seit der Version v1.12.0 von ServBay haben wir Mono 6.14.0 integriert und den XSP-Entwicklungsserver mitgeliefert, um Ihnen zwei Hauptmethoden zur Ausführung von ASP.NET Framework 4.x-Anwendungen anzubieten:
- Schnelle Entwicklung und Tests mit XSP
- Stabile Bereitstellung von Anwendungen, die näher an Produktionsumgebungen sind, mit Nginx + FastCGI.
Dieses Dokument führt Sie durch die Schritte zur Konfiguration und Ausführung Ihres ASP.NET Framework 4.x-Projekts in der ServBay-Umgebung.
Voraussetzungen
- ServBay installieren: Stellen Sie sicher, dass Sie ServBay v1.12.0 oder höher auf macOS installiert haben.
- Mono installieren:
- Öffnen Sie die ServBay-Anwendung.
- Wählen Sie im linken Navigationsbereich "Pakete".
- Finden Sie in der Liste der Pakete die Kategorie ".NET" und klicken Sie darauf, um sie zu erweitern.
- Finden Sie "Mono 6" (die Version sollte 6.14.0 oder höher sein), klicken Sie auf die Schaltfläche "Installieren" rechts und warten Sie, bis die Installation abgeschlossen ist.
Bereiten Sie Ihr ASP.NET-Projekt vor
- Projektdatei: Stellen Sie sicher, dass Sie ein ASP.NET Framework 4.x Web Application oder Web Site-Projekt haben.
- Empfohlener Speicherort: Wir empfehlen dringend, Ihr Website-Projekt im von ServBay zentral verwalteten
www
-Verzeichnis unter/Applications/ServBay/www/
abzulegen. Erstellen Sie ein separates Unterverzeichnis für jedes Projekt.- Beispiel: Wenn Ihr Projektname
MyWebApp
lautet, wäre der empfohlene Pfad/Applications/ServBay/www/MyWebApp
. - In den nächsten Schritten verwenden wir
/Applications/ServBay/www/MyWebApp
als Beispielpfad. Bitte ersetzen Sie dies durch den tatsächlichen Pfad Ihres Projekts.
- Beispiel: Wenn Ihr Projektname
Methode 1: Verwendung von XSP (integrierte Entwicklungsumgebung)
XSP ist ein leichtgewichtiger ASP.NET-Webserver, der speziell für Mono entwickelt wurde und sich ideal für Entwicklungs- und Testphasen eignet. Das mit ServBay installierte Mono 6-Paket bringt XSP4 (für ASP.NET 4.x) bereits mit.
Hinweis
- Wenn Sie ein ASP.NET 1.1-Projekt ausführen möchten, verwenden Sie den Befehl
xsp
. - Wenn Sie ein ASP.NET 2.0-Projekt ausführen möchten, verwenden Sie den Befehl
xsp2
.
Schritte:
Terminal öffnen: Öffnen Sie die Terminal-Anwendung auf macOS.
Navigieren Sie zum Projektverzeichnis: Verwenden Sie den
cd
-Befehl, um in das Stammverzeichnis Ihres ASP.NET-Projekts (das Verzeichnis, das dieweb.config
-Datei enthält) zu gelangen.bash# Beispiel: Wechseln in das Projektverzeichnis namens MyWebApp cd /Applications/ServBay/www/MyWebApp
1
2XSP-Server starten: Führen Sie im Stammverzeichnis des Projekts folgenden Befehl aus, um den XSP4-Server zu starten. Sie können eine Portnummer (z. B. 8080 oder 9000) angeben, um Konflikte mit anderen Diensten in ServBay zu vermeiden.
bash# Starten des Projekts im aktuellen Verzeichnis auf Port 9000 xsp4 --port 9000
1
2xsp4
: Ruft den XSP-Server für .NET 4.x auf.--port 9000
: Gibt die Portnummer an, auf der der Server lauscht.
Zugriff auf die Anwendung: Öffnen Sie Ihren Webbrowser und navigieren Sie zu
http://localhost:9000
oderhttp://127.0.0.1:9000
. Sie sollten sehen, dass Ihre ASP.NET-Anwendung ausgeführt wird.Server stoppen: Wenn Sie mit der Entwicklung oder den Tests fertig sind, kehren Sie zum Terminalfenster zurück und drücken Sie
Ctrl + C
oderEnter
, um den XSP-Server zu stoppen.
Vorteile:
- Einfache Konfiguration, schneller Start.
- Sehr gut für lokale Entwicklung und Debugging geeignet.
Nachteile:
- Geringere Leistung als die Produktionsserver wie Nginx.
- Relativ grundlegende Funktionen, die die Produktionsumgebung nicht vollständig simulieren.
Methode 2: Verwendung von Nginx + FastCGI
Diese Methode verwendet Nginx, verwaltet von ServBay, als Frontend-Webserver, der über das FastCGI-Protokoll dynamische Anfragen an den Mono-Backend-Prozess (fastcgi-mono-server4
) weiterleitet. Diese Methode ist näher an der Bereitstellung in einer Produktionsumgebung und bietet eine bessere Leistung.
Hinweis
- Wenn Sie ein ASP.NET 1.1-Projekt ausführen möchten, verwenden Sie den Befehl
fastcgi-mono-server
. - Wenn Sie ein ASP.NET 2.0-Projekt ausführen möchten, verwenden Sie den Befehl
fastcgi-mono-server2
.
Schritte:
Stellen Sie sicher, dass Mono und Nginx installiert und aktiv sind:
- Installieren Sie Mono 6 und Nginx über die „Pakete“ in ServBay.
- Stellen Sie im Abschnitt „Dienste“ von ServBay sicher, dass der Nginx-Dienst gestartet ist.
Bereiten Sie Ihr ASP.NET-Projekt vor: Stellen Sie sicher, dass Ihr Projekt im empfohlenen Pfad wie
/Applications/ServBay/www/MyWebApp
liegt.FastCGI Mono-Server starten:
- Öffnen Sie ein neues Terminalfenster.
- Führen Sie den Prozess
fastcgi-mono-server4
aus. Dieser Prozess hört auf FastCGI-Anfragen von Nginx und führt Ihren ASP.NET-Code aus.bash# Beispiel: Starten des FastCGI-Dienstes für das Projekt MyWebApp fastcgi-mono-server4 --applications=/:/Applications/ServBay/www/MyWebApp \ --socket=tcp:127.0.0.1:9001 \ --loglevels=Standard \ --printlog
1
2
3
4
5--applications=/:/Applications/ServBay/www/MyWebApp
: Ordnet den Root-Pfad (/
) dem physischen Pfad Ihres Projekts zu. Bitte ersetzen Sie/Applications/ServBay/www/MyWebApp
durch den tatsächlichen Pfad Ihres Projekts.--socket=tcp:127.0.0.1:9001
: Gibt die TCP-Adresse und den Port an, auf dem der FastCGI-Server lauscht. Stellen Sie sicher, dass dieser Port (z. B. 9001) nicht belegt ist und mit derfastcgi_pass
-Anweisung in der untenstehenden Nginx-Konfiguration übereinstimmt.--loglevels=Standard --printlog
: (optional) Druckt Protokolle auf Standardniveau im Terminal zur Fehlersuche.
- Hinweis: Dieses Terminalfenster muss geöffnet bleiben, um den FastCGI-Dienst auszuführen. Für die Langzeitnutzung sollten Sie möglicherweise Werkzeuge wie
nohup
oderscreen
/tmux
verwenden, damit es im Hintergrund läuft.
Nginx-Website konfigurieren:
Gehen Sie in ServBay zum Abschnitt „Sites“.
Klicken Sie auf „Site hinzufügen“ oder bearbeiten Sie eine vorhandene Site.
Domain festlegen: Zum Beispiel
mywebapp.test
. ServBay wird automatisch zu Ihrer Hosts-Datei hinzugefügt.Website-Root-Verzeichnis festlegen: Sehr wichtig! Setzen Sie dies auf den tatsächlichen Pfad Ihres ASP.NET-Projekts, z. B.
/Applications/ServBay/www/MyWebApp
. Dies konfiguriert korrekt dieroot
-Anweisung in der Nginx-Konfiguration.Wichtig: Überprüfen/Ändern der Nginx-Konfigurationsdatei: Klicken Sie auf das Auswahlfeld „Benutzerdefinierte Konfiguration“ in der oberen rechten Ecke der Standorteinstellungen. ServBay generiert eine Basisconfiguration basierend auf dem von Ihnen festgelegten Website-Root. Sie müssen sicherstellen, dass die
location /
und@mono
(oder andere ähnlich benannte locations) korrekt konfiguriert sind, um Anfragen an den FastCGI Mono-Server weiterzuleiten.Ein Beispiel eines zu überprüfenden oder hinzuzufügenden Teils, basierend auf der automatisch generierten Konfiguration von ServBay:
nginxserver { listen 443; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:ServBay:10m; ssl_session_tickets off; ssl_certificate /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.crt; # Stellen Sie sicher, dass das Zertifikat mit dem tatsächlichen Pfad übereinstimmt ssl_certificate_key /Applications/ServBay/ssl/private/tls-certs/mywebapp.test/mywebapp.test.key; # Stellen Sie sicher, dass das Zertifikat mit dem tatsächlichen Pfad übereinstimmt server_name mywebapp.test; # sollte mit dem in ServBay festgelegten Domainnamen übereinstimmen root /Applications/ServBay/www/MyWebApp; # **Stellen Sie sicher**, dass dies mit Ihrem festgelegten Website-Root übereinstimmt index index.html index.htm default.aspx Default.aspx; # Fügt ASP.NET-Standarddokumente hinzu location / { try_files $uri $uri/ @mono; # Versucht, statische Dateien zu verwenden, ansonsten wird an @mono übergeben } # (optional, aber empfohlen) Nginx verarbeitet direkt gängige statische Dateien # location ~* \.(ico|css|js|gif|jpe?g|png|svg|woff|woff2|ttf|eot)$ { # expires max; # log_not_found off; # access_log off; # } location @mono { # Leitet Anfragen an den FastCGI Mono-Server weiter # **Der Port muss** mit dem beim Start von fastcgi-mono-server4 angegebenen --socket-Parameter übereinstimmen fastcgi_pass 127.0.0.1:9001; # Notwendige FastCGI-Parameter include fastcgi_params; # SCRIPT_FILENAME wird basierend auf der root-Anweisung und $fastcgi_script_name korrekt gesetzt fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO ""; } # ServBay könnte auch andere Standardkonfigurationen wie Protokollierung, Zugriffskontrolle usw. enthalten # access_log /Applications/ServBay/logs/nginx/mywebapp.test.access.log; # error_log /Applications/ServBay/logs/nginx/mywebapp.test.error.log; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43Speichern Sie die Konfiguration und starten Sie Nginx neu: Speichern Sie die Nginx-Konfigurationsdatei. ServBay wird die Nginx-Konfiguration automatisch nach dem Speichern neu laden. Wenn die Konfiguration fehlerhaft ist, gibt ServBay eine Fehlermeldung aus. Gegebenenfalls können Sie Nginx manuell auf der Seite „Dienste“ von ServBay neu starten.
Zugriff auf die Anwendung: Öffnen Sie den Browser und greifen Sie auf den Domainnamen zu, den Sie in Nginx konfiguriert haben (z. B.
https://mywebapp.test
, beachten Sie, dass hier das HTTPS-Protokoll verwendet wird). Nginx leitet die Anfragen an denfastcgi-mono-server4
weiter, der Ihren ASP.NET-Code ausführt.
Vorteile:
- Bessere Leistung, stabiler.
- Näher an Produktionsumgebungsbereitstellungen.
- Kann Nginx verwenden, um statische Dateien, Lastverteilung, SSL und andere erweiterte Funktionen zu bearbeiten.
- Höhere Integration mit ServBay's Site-Management, Domain- und Hosts-Verwaltung.
Nachteile:
- Relativ komplexere Konfiguration als XSP.
- Manuelle Verwaltung des
fastcgi-mono-server4
-Prozesses erforderlich.
Entscheidungsfindung
- Für schnelle Entwicklung, Debugging und einfache Tests ist die Verwendung von XSP die bequemste Methode.
- Für Leistungssteigerungen und Tests oder interne Bereitstellungen, die näher an Produktionsumgebungen sind, oder wenn Sie die erweiterten Funktionen von Nginx und die Site-Management-Funktionalität von ServBay nutzen möchten, ist die Wahl der Nginx + FastCGI-Methode die bessere Wahl.
Hinweise und Fehlersuche
- Dateiberechtigungen: Stellen Sie sicher, dass der Nginx-Prozess (in der Regel von ServBay verwaltet) und der macOS-Benutzer, der
fastcgi-mono-server4
ausführt, Lesezugriff auf Ihre Projektdateien (unter/Applications/ServBay/www/YourProjectName
) haben. Gegebenenfalls müssen die Verzeichnisberechtigungen (chmod
oderchown
) angepasst werden. - Pfad: Überprüfen Sie sorgfältig die Projektpfade in der Nginx-Konfiguration (
root
-Anweisung) und imfastcgi-mono-server4
-Befehl (--applications
-Parameter), um sicherzustellen, dass sie vollständig korrekt sind und auf das Verzeichnis zeigen, das dieweb.config
enthält. - Portkonflikte: Stellen Sie sicher, dass die Ports, die von XSP oder
fastcgi-mono-server4
verwendet werden (in den Beispielen 9000 oder 9001), nicht von anderen Anwendungen belegt sind. - Protokolle:
- Überprüfen Sie die Ausgangsprotokolle in der Terminalausgabe, wenn
fastcgi-mono-server4
gestartet wird. - Überprüfen Sie die Fehlerprotokolle von Nginx. Sie können den Pfad zu den Fehlerprotokollen des entsprechenden Standorts in den Einstellungen von ServBay finden (in der Regel unter
/Applications/ServBay/logs/nginx/mywebapp.test.error.log
).
- Überprüfen Sie die Ausgangsprotokolle in der Terminalausgabe, wenn
- Kompatibilität der Mono-Version: Mono 6.14.0 ist im Großen und Ganzen mit .NET Framework 1.1 bis .NET Framework 4.7.2 kompatibel. Wenn Sie Funktionen einer höheren Version des .NET Framework verwenden, verwenden Sie bitte die offizielle .NET Core- oder .NET-Installation von Microsoft über ServBay.
Mit dem integrierten Mono-6-Umfeld von ServBay und der empfohlenen Projektstruktur wird die Entwicklung und Ausführung von ASP.NET Framework 4.x-Anwendungen unter macOS noch normgerechter und benutzerfreundlicher. Wir hoffen, dass Ihnen dieses Dokument hilft, Ihre Entwicklungsarbeiten erfolgreich zu beginnen!