Ich weiß, dass es möglich ist, eine ASP.Net-Site unter Linux mit Mono und Apache , aber ich würde gerne wissen, wie gut es funktioniert und ob es die Mühe wert ist? Ich bevorzuge Open Source, aber für dieses Projekt möchte ich die schnellste, einfachste und zuverlässigste Lösung.
Die Seite, die ich erstellen werde, ist eine recht einfache ASP.Net-Site, die MySQL verwendet.
Ich würde gerne wissen, ob irgendjemand andere Erfahrung mit Mono in einer Situation wie meiner hat und wie das Projekt lief. Wie ist es mit der Verwendung einer Microsoft-zentrierten Lösung verglichen worden?
Ich weiß Mono ist immer noch etwas unvollständig, aber ich hoffe, dass ich die fehlenden Features nicht brauche.
Diese Frage mag ein wenig "polarisierend" sein. Die meisten ähnlichen Fragen scheinen Antworten von Leuten zu haben, die entweder sehr Microsoft oder Pro-Linux sind. Ich hoffe auf unvoreingenommene Antworten, vorzugsweise von Leuten mit Erfahrung, die beide benutzen.
Ich habe vor anderthalb Jahren von MS-zentrierten Lösungen gewechselt und jetzt hosste ich alle meine Webseiten und Webprojekte auf Linux / Mono / Apache / MySQL basierten virtuellen Servern (ich benutzte ursprünglich nginx statt Apache) , aber mono-fastcgi-server verursachte zufällig thrashing , also wähle ich Apache als Webserver). Ich kann meine (subjektive) Erfahrung mit dieser Konfiguration in einige Punkte zusammenfassen:
Es kann einige Zeit dauern, um sich an die Unterschiede zwischen Linux- und MS-basierten Umgebungen zu gewöhnen (wenn Sie noch nie Linux benutzt haben), aber ich bereue diese Entscheidung nicht. Was mir sehr geholfen hat, war die Erstellung von Installations- und Konfigurationsverfahren für bestimmte Technologien (z. B. mono-parallele Umgebungen, virtuelle Apache-Hostkonfigurationen, die sich mit bestimmten Problemen befassen), die größtenteils wiederholbar und automatisierbar sind.
Sie können Visual Studio weiterhin zum Entwickeln Ihrer Anwendungen und zum anschließenden Bereitstellen auf einem Linux-Computer verwenden. Wenn Sie diesen Ansatz verwenden, ist es eine gute Angewohnheit, Ihre Apps regelmäßig auf Mono zu testen, um mögliche Inkompatibilitäten zu vermeiden.
Ich stelle Webanwendungen über FTP bereit, was wahrscheinlich der einfachste Weg ist (vielleicht ist WinSCP sogar noch einfacher, weil Sie keinen FTP-Server einrichten müssen, aber das hängt von Ihren Einstellungen ab) / p>
Bisher bin ich in zwei Fällen mit Mono / Apache gelandet, bei denen ein Speicherleck die Nichtverfügbarkeit der Website verursacht hat. Dies wurde wahrscheinlich von Boehm Garbage Collector verursacht, den ich auf alten Mono-Installationen verwendete. Ich hatte keine ähnlichen Probleme mit einem neuen sgen GC auf neueren Versionen von Mono.
Am meisten mag ich mono, die auf einer Linux-Umgebung laufen, im Vergleich zu MS-Sachen, dass Sie nicht ständig herumklicken müssen, wenn Sie administrative Aufgaben erledigen. Shell ist für mich eine einheitliche Verwaltungsoberfläche, die Dinge beschleunigen kann (wenn Sie etwas Übung haben).
Hosting von ASP.NET auf Mono aus meiner Erfahrung ist ziemlich einfach und schnell. Ich habe mehrere meiner Projekte mit Mono ASP.NET MVC 1/2 unter Verwendung von MySQL und PostgreSQL hosten, die von Apache mod_mono bedient werden.
Im Vergleich zur Bereitstellung unter Windows Server. Es ist recht eng, wenn moderne Linux-Distribution verwendet wird, die bereits alle Pakete für die Bereitstellung von Mono-ASP.NET bereitstellt. Der einzige Nachteil ist, dass Sie sicherstellen müssen, dass Ihre Web-Anwendung portabel genug ist, um IO-Zugriff zu ermöglichen und nur eine sehr kurze Lernkurve und Erfahrung benötigt, um Ihr Projekt zu debuggen und zu veröffentlichen.
Für die Bereitstellung unseres Projekts unter Linux. Es ist einfach mit Versionskontrolle (VS) wie Mercurial oder Git, wenn Sie die volle Kontrolle über den Server haben. Wenn Sie mehr Erfahrung mit der kontinuierlichen Integration haben, ist es besser. Ich benutze hauptsächlich Mercurial, so dass Schritt nach unten ist der Schritt, den ich normalerweise tun, aber ich denke, es ist fast ähnlich für Git: