在基于Linux的服务器上运行ASP.Net


89

对于具有Java背景的开发人员,我也有兴趣探索使用ASP.NET工具/平台进行软件开发。

Java Web应用程序(.jsp和servlet)可以在许多服务器平台上运行。

问题:.NET Web应用程序能否在基于Linux的服务器上运行?考虑到无法使用Windows服务器托管Web应用程序的情况。

Answers:


69

这取决于您使用的是哪种特定的.NET技术。该Mono项目提供运行ASP.NET网站的Apache模块(是mod_mono),并从我收集它工作得很好。

但是,Mono不支持所有.NET API-特别是WPF(我可能还记得WPF),但它确实为框架的其他许多方面提供了良好的支持。

如果您是从头开始并且特别想针对非Windows服务器,那么确保您的项目与Mono一起工作将是一个不错的目标。但是,如果需要Mono不支持的特定API或语言功能,则需要使用Windows服务器进行部署。这是设计时/架构选择应首先解决的问题。


3
fyi,mono项目维护者在这个问题上也有答案。
乔尔·科洪

8
如果您不熟悉Mono项目及其维护者,那么此答案就是Joel所指的答案
alastairs 2012年

我有一个asp.net页面,我想与Linux服务器中的主要php网站集成。可能吗?确实,是否可以在同一台Linux服务器上安装php和asp.net?
侯赛因·阿卡贾尼

86

所以我知道这是一个较旧的问题,但我认为它可以得到更新的答案。

微软已经正式发布了asp.net vnext及其开放源代码,并且可以部署到Linux和Mac。它的一切仍然很新,但是确实依赖于最新版本的mono,因此当前需要您进行编译,mono-framework但是随着时间的推移,我怀疑由于各种Linux发行版发布了更新版本的Mono,它会更易于访问。这是一个设置指南

该信息可能有些不稳定,并且更新是由于更改。

更新ASP.NET CORE 11/10/2017


到目前为止,ASP.NET Core支持哪些Linux Web服务器?
MrCalvin


12

我可以根据经验说话。即使您的ASP.net网站仅使用Mono支持的.NET库,如果它的运行范围超出Hello World,您将很难运行它。

您无需重新编写太多代码,但是您将花费数小时/天/周来处理与mod_mono / xsp / apache配置和文件权限以及错误处理有关的小问题,以及进入大型网站的所有小问题。(准备花很多时间问关于serverfault的问题:))

问题在于,很多人没有在ASP.net网站上使用Mono,因此报告错误的人不多,因此很多作为次要错误的东西很长时间都无法修复。


我承认,我有同样的想法,面对一个真实的项目时也面对着自己。
Eslam Hamouda

10

现在,您可以使用Visual Studio将ASP.NET 5应用发布到Linux上的Docker。请参阅以下Scott Scottelman的文章

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


除了仅作为开发服务器的Kestrel之外,没有其他可以与ASP.NET 5配合使用的生产Web服务器吗?如何在Linux上无法托管ASP.NET网站的有效选择?
克里斯·霍克斯

1
和为Windows构建的docker容器仅在Windows服务器16上运行,因此与该问题无关
jocelyn



4

对于Linux上的ASP.NET,请查看Mono。

也就是说,成千上万的站点可以在Windows Server上运行而没有任何问题。任何操作系统的配置不​​当的服务器将很容易受到攻击;Linux不会使您摆脱管理员的困境。

因此,我猜想我使用ASP.NET应用程序的“最佳实践”是使用Windows Server 2008(可能是Web版本)。并聘请好的管理员。


关于防病毒问题。Windows需要防病毒软件。我想这样会增加服务器端区域的成本。对吗?
阿南德

大多数防病毒产品的“服务器”版本都比其“桌面”版本贵,通常要贵好几倍,这主要是由于预期的用途。我建议使用AVG(www.avg.com),ESET(www.eset.com)或Computer Associates(www.ca.com)。
devstuff

4

您可以使用Mono在Apache / Linux上运行ASP.NET应用程序,但是在Windows下它的功能有限。至于“他们”所说的Windows更容易受到攻击-这是不正确的。在过去的两年中,IIS的安全性问题比Apache少,但无论哪种情况,都取决于机器的管理-可以轻松保护两个OS。如今,攻击点不是操作系统或Web服务器软件,而是应用程序本身。


3
任何事情都可能是脆弱的。除非将其关闭并与网络断开连接,否则没有安全的东西
blowdart


3

dotnet是GitHub上.NET的官方主页。这是从Microsoft和社区中找到许多.NET OSS项目的良好起点,其中包括许多.NET Foundation的一部分。

这可能是支持Linux的一个很好的开始。


2

现在,.NET在多个平台上运行,例如linux,Mac os等,但是mono并非完全独立于平台,因为要在另一个OS中部署.NET所需的第三方软件。因此,它不像Java平台独立。

Mono在不同的平台上运行,因为JIT在不同的操作系统中。

在月光下(.NET中的银色光),单声道并不是完全成功。不仅研究还在进行。

Mono使用XSP2服务器或apache。一些大公司正在使用这个项目,一些机器人项目也在单声道上运行。

有关更多详细信息,请 访问http://www.mono-project.com/Main_Page



1

Mono项目是您的最佳选择。但是,它有很多陷阱(例如在某些领域不完整的API支持),而且在法律上是灰色的(像Richard Stallman这样的人嘲笑了Mono的使用,因为微软可能会通过使用其专利权而放弃Mono,但是那是另一个故事)。

无论如何,Apache通过一个模块支持.NET / Mono,但是上一次我检查Debian提供的版本时,它仅提供了Perl语言的支持。我不能说是否更改过,也许其他人可以在那里纠正我。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.