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.