Uruchomienie ASP.Net na serwerze opartym na systemie Linux


89

W przypadku programisty z doświadczeniem w Javie jestem zainteresowany badaniem tworzenia oprogramowania przy użyciu narzędzi / platformy ASP.NET.

Aplikacje internetowe Java (.jsp i serwlety) mogą działać na wielu platformach serwerowych.

Pytanie : Czy aplikacja internetowa .NET będzie mogła działać na serwerze z systemem Linux? Biorąc pod uwagę scenariusz, w którym nie można używać serwera Windows do hostowania aplikacji internetowej.

Odpowiedzi:


70

To zależy, jakich konkretnych technologii .NET używasz. Projekt Mono udostępnia moduł Apache (mod_mono) do uruchamiania witryn ASP.NET iz tego, co wiem, działa dobrze.

Mono nie obsługuje jednak wszystkich interfejsów API platformy .NET - w szczególności WPF (i prawdopodobnie również WCF, nie pamiętam) - ale zapewnia dobrą obsługę wielu innych elementów frameworka.

Jeśli zaczynasz od zera i szczególnie chcesz kierować reklamy na serwery inne niż Windows, dobrym celem byłoby upewnienie się, że projekt działa z Mono. Jeśli jednak potrzebujesz określonych interfejsów API lub funkcji językowych, które nie są obsługiwane przez Mono, będziesz musiał użyć serwera Windows do wdrożenia. To wybór architektoniczny / projektowy, który powinien nadejść z góry.


3
fyi, opiekun projektu mono również ma odpowiedź na to pytanie.
— Joel Coehoorn

8
Jeśli nie znasz projektu Mono i jego opiekunów, ta odpowiedź jest tą, do której odnosi się Joel.
— alastairs

Mam stronę asp.net, którą chcę zintegrować z główną witryną php na serwerze linux. Czy to możliwe? Rzeczywiście, czy można mieć php i asp.net na tym samym serwerze linux?
— Hosein Aqajani

86

Więc wiem, że to starsze pytanie, ale myślę, że może wytrzymać zaktualizowaną odpowiedź.

Firma Microsoft oficjalnie wydała asp.net vnext i jego oprogramowanie typu open source, które można wdrożyć zarówno w systemie Linux, jak i na komputerach Mac. To wszystko jest wciąż całkiem nowe, ale opiera się na najnowszych kompilacjach mono i dlatego obecnie wymaga skompilowania, mono-frameworkale podejrzewam, że z czasem będzie łatwiej uzyskać dostęp, ponieważ różne dystrybucje linuxa wypuszczają zaktualizowane wersje mono. To jest przewodnik konfiguracji

Te informacje mogą być nieco niestabilne, a wraz z aktualizacjami mają się zmienić.

Zaktualizuj ASP.NET CORE 11/10/2017


Jakie serwery internetowe systemu Linux są obecnie obsługiwane przez platformę ASP.NET Core?
— MrCalvin


12

Mogę mówić z doświadczenia. Nawet jeśli Twoja witryna ASP.net korzysta tylko z bibliotek .NET obsługiwanych przez Mono, będziesz mieć trudności z jej uruchomieniem, jeśli jest to coś więcej niż Hello World.

Nie będziesz musiał ponownie pisać dużo kodu, ale spędzisz godziny / dni / tygodnie zajmując się drobnymi problemami z konfiguracją mod_mono / xsp / apache i uprawnieniami do plików oraz obsługą błędów i wszystkimi drobiazgami, które trafiają do dużej witryny. (Przygotuj się na spędzenie dużo czasu na zadawaniu pytań dotyczących awarii serwera :))

Problem polega na tym, że wiele osób nie używa Mono w witrynach ASP.net, a więc nie ma tak wielu osób zgłaszających błędy, więc wiele drobnych błędów pozostaje nierozwiązanych przez długi czas.


Przyznaję, że miałem te same myśli i stanąłem twarzą w twarz z tym, co robiłem przy prawdziwym projekcie.
— Eslam Hamouda

10

Teraz możesz opublikować aplikację ASP.NET 5 na platformie Docker w systemie Linux za pomocą programu Visual Studio. Zobacz poniższy post od Scotta Haselmana

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


Czy nie ma produkcyjnego serwera WWW, który będzie współpracował z ASP.NET 5, z wyjątkiem Kestrel, który jest tylko serwerem programistycznym? W jaki sposób jest to prawidłowa opcja bez możliwości hostowania witryny ASP.NET w systemie Linux?
— Chris Hawkes,

1
a kontenery docker zbudowane dla systemu Windows działają tylko na serwerze Windows 16, więc nie ma to związku z pytaniem
— jocelyn

10

Ponieważ technologie ewoluują, a to pytanie zajmuje najwyższe pozycje w Google, musimy uwzględnić poza mono nowy rdzeń asp.net, który jest całkowitym przepisaniem asp.net, aby działał do produkcji w systemie Linux i Windows oraz do programowania w systemie Linux , Windows i Mac :

Możesz tworzyć i uruchamiać aplikacje ASP.NET Core na różnych platformach w systemach Windows, Mac i Linux. ASP.NET Core to oprogramowanie typu open source w witrynie GitHub.



4

W przypadku ASP.NET w systemie Linux sprawdź Mono .

To powiedziawszy, tysiące witryn działa w systemie Windows Server bez żadnych problemów. Słabo skonfigurowany serwer z dowolnym systemem operacyjnym będzie podatny na ataki; Linux nie uchroni Cię przed kiepskim administratorem.

Więc wydaje mi się, że moją „najlepszą praktyką” przy opracowywaniu aplikacji ASP.NET byłoby użycie systemu Windows Server 2008 (prawdopodobnie wersja internetowa). I zatrudnij dobrego administratora.


co z problemem antywirusowym .. Windows wymaga oprogramowania antywirusowego .. Myślę, że to zwiększy koszt obszaru po stronie serwera .. mam rację?
— Anand

Większość wersji „serwerowych” produktów antywirusowych jest droższa niż ich wersje „stacjonarne”, często kilkakrotnie droższe, głównie ze względu na przewidywane użycie. Polecam AVG (www.avg.com), ESET (www.eset.com) lub Computer Associates (www.ca.com).
— devstuff

4

Możesz używać Mono do uruchamiania aplikacji ASP.NET w Apache / Linux, jednak ma ograniczony podzbiór tego, co możesz zrobić w systemie Windows. Co do „oni”, że Windows jest bardziej podatny na ataki - to nieprawda. W ciągu ostatnich kilku lat IIS miał mniej problemów z bezpieczeństwem niż Apache, ale w obu przypadkach wszystko zależy od administrowania skrzynkami - oba systemy operacyjne można łatwo zabezpieczyć. Obecnie punktami ataku nie są systemy operacyjne ani oprogramowanie serwera WWW, ale same aplikacje.


3
wszystko może być wrażliwe. nic nie jest bezpieczne, chyba że zostanie wyłączone i odłączone od sieci
— blowdart

@blowdart, W tej chwili spójrz na facebook uruchomiony na apache makeuseof.com/tag/facebook-work-nuts-bolts-technology-explained
— Anirudha Gupta

3

dotnet to oficjalna strona .NET w serwisie GitHub. To świetny punkt wyjścia do znalezienia wielu projektów .NET OSS firmy Microsoft i społeczności, w tym wielu, które są częścią .NET Foundation.

To może być świetny początek obsługi Linuksa.


2

Obecnie .Net jest uruchamiany na wielu platformach, takich jak Linux, Mac OS itp., Ale mono nie jest w pełni niezależne od platformy, ponieważ wdrożenie .NET w innym systemie operacyjnym wymaga oprogramowania innych firm, więc nie jest niezależne od platformy Java.

Mono działa na innej platformie, ponieważ JIT jest dostępny w różnych systemach operacyjnych.

Mono nie odnosi pełnego sukcesu w świetle księżyca (srebrne światło w .NET). Nie tylko badania są w toku.

Mono używa serwera XSP2 lub Apache. niektóre duże firmy korzystają z tego projektu. Niektóre z projektów robotów działają również w trybie mono.

Aby uzyskać więcej informacji, http://www.mono-project.com/Main_Page .



1

Projekt Mono to najlepsza opcja. Ma jednak wiele pułapek (takich jak niepełna obsługa API w niektórych obszarach) i jest legalnie szara (ludzie tacy jak Richard Stallman wyśmiewali użycie Mono z powodu możliwości, że Microsoft upuścił Mono, korzystając z praw patentowych, ale to inna historia).

W każdym razie Apache obsługuje .NET / Mono za pośrednictwem modułu, ale kiedy ostatnio sprawdzałem wersję dostarczoną z Debianem, zapewniała obsługę tylko języka Perl; Nie mogę powiedzieć, czy to się zmieniło, może ktoś inny może mnie tam poprawić.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.