Ausführen von ASP.Net auf einem Linux-basierten Server

89

Für einen Entwickler mit Java-Hintergrund bin ich daran interessiert, die Softwareentwicklung auch mit den ASP.NET-Tools / -Plattform zu untersuchen.

Java-Webanwendungen (.jsp und Servlets) können auf vielen Serverplattformen ausgeführt werden.

Frage : Kann eine .NET-Webanwendung auf einem Linux-basierten Server ausgeführt werden? In Anbetracht des Szenarios, dass ein Windows-Server nicht zum Hosten einer Web-App verwendet werden kann.

Anand
quelle

Antworten:

69

Dies hängt davon ab, welche spezifischen .NET-Technologien Sie verwenden. Das Mono-Projekt bietet ein Apache-Modul (mod_mono) zum Ausführen von ASP.NET-Sites, und soweit ich weiß, funktioniert es gut.

Mono unterstützt zwar nicht alle .NET-APIs - insbesondere WPF (und möglicherweise auch WCF, an die ich mich nicht erinnern kann) -, bietet jedoch eine gute Unterstützung für viele andere Teile des Frameworks.

Wenn Sie bei Null anfangen und insbesondere auf Nicht-Windows-Server abzielen möchten, ist es ein gutes Ziel, sicherzustellen, dass Ihr Projekt mit Mono funktioniert. Wenn Sie jedoch bestimmte APIs oder Sprachfunktionen benötigen, die von Mono nicht unterstützt werden, müssen Sie für die Bereitstellung einen Windows-Server verwenden. Es ist eine Design-Zeit / Architektur-Wahl, die vorne mitmachen sollte.

Alastairs
quelle
3
Zu Ihrer Information, der Mono-Projektbetreuer hat auch auf diese Frage eine Antwort.
Joel Coehoorn
8
Wenn Sie mit dem Mono-Projekt und seinen Betreuern nicht vertraut sind, bezieht sich Joel auf diese Antwort .
Alastairs
Ich habe eine asp.net Seite, die ich mit der Haupt-PHP-Website in einen Linux-Server integrieren möchte. Ist es möglich? Ist es tatsächlich möglich, PHP und Asp.net auf demselben Linux-Server zu haben?
Hosein Aqajani
86

Ich weiß also, dass dies eine ältere Frage ist, aber ich denke, sie könnte eine aktualisierte Antwort enthalten.

Microsoft hat asp.net vnext und sein Open Source offiziell veröffentlicht und kann sowohl auf Linux als auch auf Mac bereitgestellt werden . Es ist alles noch ziemlich neu, basiert jedoch auf den neuesten Mono-Builds und erfordert daher derzeit das Kompilieren des mono-frameworkMonos. Ich vermute jedoch, dass der Zugriff mit der Zeit einfacher sein wird, da verschiedene Linux-Distributionen aktualisierte Versionen von Mono veröffentlichen. Dies ist eine Anleitung zum Einrichten

Diese Informationen können etwas flüchtig sein und können sich bei Aktualisierungen ändern.

Aktualisieren Sie ASP.NET CORE 11/10/2017

Terrance
quelle
Welche Linux-Webserver werden ab heute von ASP.NET Core unterstützt?
MrCalvin
12

Ich kann aus Erfahrung sprechen. Selbst wenn Ihre ASP.net-Website nur von Mono unterstützte .NET-Bibliotheken verwendet, wird es Ihnen schwer fallen, sie zum Laufen zu bringen, wenn sie über Hello World hinausgeht.

Sie müssen nicht viel Code neu schreiben, aber Sie werden Stunden / Tage / Wochen damit verbringen, sich mit kleinen Problemen mit der Konfiguration von mod_mono / xsp / apache und den Dateiberechtigungen und der Fehlerbehandlung sowie all den kleinen Dingen zu befassen, die in eine große Website einfließen. (Seien Sie bereit, viel Zeit damit zu verbringen, Fragen zu Serverfault zu stellen :))

Das Problem ist, dass viele Leute Mono nicht für ASP.net-Websites verwenden und es daher nicht so viele Leute gibt, die Fehler melden, so dass viele Dinge, die kleinere Fehler sind, für eine lange Zeit nicht behoben werden.

thelsdj
quelle
Ich gebe zu, ich hatte die gleichen Gedanken und habe mich selbst mit einem echten Projekt konfrontiert.
Eslam Hamouda
10

Jetzt können Sie die ASP.NET 5-App mit Visual Studio in Docker unter Linux veröffentlichen. Siehe den folgenden Beitrag von Scott Haselman

http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx

Tepu
quelle
Gibt es keinen Produktionswebserver, der mit ASP.NET 5 funktioniert, außer Kestrel, der nur ein Entwicklungsserver ist? Wie ist dies eine gültige Option ohne die Möglichkeit, eine ASP.NET-Website unter Linux zu hosten?
Chris Hawkes
1
und Docker-Container, die für Windows erstellt wurden, werden nur auf Windows Server 16 ausgeführt, sodass sie für die Frage nicht relevant sind
Jocelyn,
10

Da sich die Technologien weiterentwickeln und diese Frage in Google an erster Stelle steht , müssen wir über das Mono hinaus den neuen asp.net-Kern einbeziehen, der eine vollständige Neufassung von asp.net darstellt, um für die Produktion unter Linux und Windows sowie für die Entwicklung für Linux ausgeführt zu werden , Windows und Mac :

Sie können Ihre ASP.NET Core-Apps plattformübergreifend unter Windows, Mac und Linux entwickeln und ausführen. ASP.NET Core ist Open Source bei GitHub.

mqueirozcorreia
quelle
5

Ja wir können. Machen Sie sich mit Mono Project vertraut und lesen Sie diesen Artikel, um loszulegen.

dde
quelle
Werden alle Bibliotheken richtig eingestellt in ASP.Net Web - Formulare mit Monoin Linux - Umgebung?
Raja
4

Informationen zu ASP.NET unter Linux finden Sie unter Mono .

Das heißt, Tausende von Websites laufen unter Windows Server ohne Probleme. Ein schlecht konfigurierter Server mit einem beliebigen Betriebssystem ist anfällig. Linux wird Sie nicht vor einem schlechten Administrator retten.

Ich denke, meine "Best Practice" für die Bereitstellung einer ASP.NET-App wäre die Verwendung von Windows Server 2008 (wahrscheinlich Web Edition). Und stellen Sie einen guten Administrator ein.

Dahlbyk
quelle
Was ist mit Antivirenproblemen? Windows erfordert Antivirensoftware. Ich denke, das erhöht die Kosten für den serverseitigen Bereich. Bin ich richtig?
Anand
Die meisten "Server" -Editionen von Antivirenprodukten sind teurer als ihre "Desktop" -Editionen, oft um ein Vielfaches teurer, hauptsächlich aufgrund der erwarteten Verwendung. Ich würde AVG (www.avg.com), ESET (www.eset.com) oder Computer Associates (www.ca.com) empfehlen.
Devstuff
4

Sie können Mono verwenden , um ASP.NET-Anwendungen unter Apache / Linux auszuführen. Es gibt jedoch nur eine begrenzte Teilmenge dessen, was Sie unter Windows tun können. "Sie" sagen, Windows sei anfälliger für Angriffe - das stimmt nicht. IIS hatte in den letzten Jahren weniger Sicherheitsprobleme als Apache, aber in beiden Fällen hängt alles von der Verwaltung der Boxen ab - beide Betriebssysteme können problemlos gesichert werden. Heutzutage sind die Angriffspunkte nicht das Betriebssystem oder die Webserver-Software, sondern die Anwendungen selbst.

Blasrohrpfeil
quelle
3
alles könnte verwundbar sein. Nichts ist sicher, es sei denn, es ist ausgeschaltet und vom Netzwerk getrennt
Blowdart
@blowdart, jetzt werfen Sie einen Blick auf Facebook laufen auf Apache makeuseof.com/tag/facebook-work-nuts-bolts-technology-explained
Anirudha Gupta
3

dotnet ist die offizielle Heimat von .NET auf GitHub. Es ist ein guter Ausgangspunkt, um viele .NET OSS-Projekte von Microsoft und der Community zu finden, einschließlich vieler, die Teil der .NET Foundation sind.

Dies könnte ein guter Anfang sein, um Linux zu unterstützen.

Kurkula
quelle
2

Heute wird .Net auf mehreren Plattformen wie Linux, Mac OS usw. ausgeführt, aber Mono ist nicht vollständig plattformunabhängig. Für die Bereitstellung von .NET in einem anderen Betriebssystem ist Software von Drittanbietern erforderlich. Daher ist es nicht wie eine Java-Plattform unabhängig.

Mono läuft auf einer anderen Plattform, da JIT in verschiedenen Betriebssystemen vorhanden ist.

Mono ist im Mondlicht nicht ganz erfolgreich (silbernes Licht in .NET). Es wird nicht nur geforscht.

Mono verwendet XSP2-Server oder Apache. Einige der großen Unternehmen nutzen dieses Projekt. Einige der Roboterprojekte laufen auch auf Mono.

Weitere Informationen finden Sie unter http://www.mono-project.com/Main_Page .

anishMarokey
quelle
1

Das Mono-Projekt ist Ihre beste Option. Es hat jedoch viele Fallstricke (wie unvollständige API-Unterstützung in einigen Bereichen) und es ist rechtlich grau (Leute wie Richard Stallman haben die Verwendung von Mono verspottet, weil Microsoft Mono möglicherweise durch die Nutzung seiner Patentrechte herabsetzt, aber das ist eine andere Geschichte).

Wie auch immer, Apache unterstützt .NET / Mono über ein Modul, aber als ich das letzte Mal die mit Debian gelieferte Version überprüfte, gab es nur Unterstützung für die Perl-Sprache. Ich kann nicht sagen, ob es sich seitdem geändert hat, vielleicht kann mich dort jemand anderes korrigieren.

Ben
quelle