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

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

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

:.NET Web应用程序能够在基于Linux的服务器上运行吗? 考虑到不能使用Windows服务器托pipeWeb应用程序的情况。

这取决于你使用的是什么特定的.NET技术。 Mono项目提供了一个运行ASP.NET网站的Apache模块(mod_mono),并且从我收集的内容来看,它运行良好。

单声道不支持所有的.NET API,虽然 – 特别是WPF(也可能是WCF,我不记得) – 但它确实提供了很多框架的支持。

如果您从头开始,特别是要定位非Windows服务器,那么确保您的项目与Mono一起工作是一个很好的目标。 但是,如果您需要特定的API或Mono不支持的语言function,则需要使用Windows服务器进行部署。 这是一个devise时间/build筑select应该前面。

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

微软已经正式发布了asp.net vnext及其开放源代码并且可以部署到Linux和Mac上。 它的全部仍然是非常新的,但依赖于最新版本的单声道,因此目前需要您编译mono-framework但我怀疑随着各种Linux发行版发布更新版本的单声道将更容易访问。 这是一个如何设置指南

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

更新ASP.NET CORE 11/10/2017

  • asp.net vnext现在被称为asp.net核心 。
  • 由于微软服务架构和Docker以及容器技术的使用, asp.net核心在Microsoft被视为高优先级
  • 由于.net标准2.0,它与现有的.net库变得更加兼容。
  • 与其他技术堆栈(如go和node.js)相比,它performance良好

您可能需要考虑本指南,以帮助Windows开发人员将其代码移植到Mono / Linux:

指南:移植ASP.NET应用程序 – 单声道

我可以从经验中发言。 即使你的ASP.net网站只使用Mono支持的.NET库,如果它不在Hello World之外,你将很难得到它的运行。

您不必重新编写大量代码,但是您将花费几个小时/天/周处理有关mod_mono / xsp / apacheconfiguration和文件权限和error handling以及进入大型网站的所有小事情的小问题。 (准备花很多时间在serverfault上提问:))

问题在于很多人不会使用Mono作为ASP.net网站,所以没有那么多的人报告错误,所以许多小错误的东西很长一段时间都没有被修复。

现在,您可以使用Visual Studio将ASP.NET 5应用程序发布到Linux上的Docker。 看到从斯科特Haselman下面的post

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

由于技术的发展和这个问题在谷歌排名第一,我们需要在单声道之外包括新的asp.net核心,这是一个完全重写的asp.net运行在Linux和Windows生产和Linux开发,Windows和Mac :

您可以在Windows,Mac和Linux上开发和运行跨平台的ASP.NET Core应用程序。 ASP.NET Core在GitHub上是开源的。

我们可以。 熟悉Mono项目并阅读本文开始。

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

也就是说,成千上万个在Windows Server上运行的站点没有任何问题。 configuration不当的任何操作系统的服务器都会受到攻击。 Linux不会从一个可怜的pipe理员中拯救你。

所以我想我的“最好的做法”是用一个ASP.NET应用程序来使用Windows Server 2008(可能是Web版本)。 并聘请一个好的pipe理员。

您可以使用Mono在Apache / Linux上运行ASP.NET应用程序,但它在Windows下可以执行的操作有限。 至于“他们”说Windows更容易受到攻击 – 这是不正确的。 在过去的几年里,IIS几乎没有安全问题,但是无论如何,这完全取决于对这些框的pipe理 – 这两个操作系统都可以很容易地得到保护。 现在的攻击点不是操作系统或networking服务器软件,而是应用程序本身。

dotnet是GitHub上.NET的官方主页。 从Microsoft和社区中find许多.NET OSS项目是一个很好的起点,其中包括许多.NET基础的一部分。

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

现在有一天,.Net运行在linux,Mac os等多种平台上,但是mono并不是完全独立于平台,因为要在另一个操作系统上部署.NET所需要的第三方软件,所以它不像java独立平台。

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

Mono在月光下并不完全成功(.NET中的银光)。不仅研究正在进行。

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

欲了解更多详情http://www.mono-project.com/Main_Page

Novell公司的Mono Project可以让你在Apache上运行ASP.Net。

http://www.mono-project.com/Main_Page

单声道项目是你最好的select。 然而,它有很多陷阱(比如在一些地区不完整的API支持),并且在法律上是灰色的(理查德·斯托曼(Richard Stallman)等人嘲笑单声道的使用,因为微软可能通过使用其专利权在单声道上下了台,这是另一个故事)。

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