【问题标题】:vNext on Apache webserverApache 网络服务器上的 vNext
【发布时间】:2015-02-20 14:55:05
【问题描述】:

我一直在摆弄 vNext 并让示例项目运行起来。我创建了一个 Ubuntu 虚拟机,安装了所需的软件包,并通过 k run(控制台应用程序)和 k kestrel(MVC 应用程序)运行。

现在,进入下一步:在专用网络服务器上运行多个项目。 Kestrel(至少现在)只是一个用于 vNext 的简单开发网络服务器。它发展成成熟的网络服务器的机会似乎很小。

因此,我想让这个东西在 Apache 上运行。我猜 mod-mono 会在某个地方发挥作用。但是,目前我认为它还不支持最新的 vNext 框架。另一方面,我想我们会在某个地方需要 KRE。

有什么消息说我们很快就会在 Apache 上运行 ASP.NET 项目吗?有人成功了吗?

我对跨平台 .NET 应用程序的想法非常着迷。我现在的雇主在使用跨平台和开源软件的项目上进行了大量投资。我想提前了解一些知识,并尝试带头完全迁移到 Linux Web 服务器而不是 Windows 服务器。

谢谢!

【问题讨论】:

  • 好吧...我还没有找到 Apache 的解决方案。但是,nginx 是 Apache 的绝佳替代品,您可以将其配置为代理到 kestrel 服务器:pkula.blogspot.be/2015/01/… 它远非完美,但它是朝着正确方向迈出的一步。

标签: asp.net asp.net-core dnx .net-core


【解决方案1】:

我很高兴看到有很多人试图让 vnext 在 Windows 环境之外运行:)

当然,你对红隼的看法是对的。它可能最终会成为一个简单的 Web 服务器,就像它现在在 node.js Hello World 教程中工作一样。您可以尝试将其用作生产环境,方法是在 Web 服务器上的后台 Running K Kestrel in the background 运行它,然后通过 Apache Proxy 将请求传递给 kestrel

VirtualHost 示例代理对 kestrel 的请求于 *:5004 开始

<VirtualHost *:80>
ServerName example.com:80

ProxyRequests On

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPreserveHost Off

ProxyPass / http://localhost:5004
ProxyPassReverse / http://localhost:5004

</VirtualHost>

但我不推荐上述解决方案。 kestrel 存在一些问题,阻止您在 tty 外部发送输出,因此您无法在启动时使用启动脚本运行它。因此,只要您的服务器保持在线,您启动的网站就会持续存在 :)

我推荐的是使用 Docker。它是一种由 Microsoft 支持的 ASP.NET 包装器。在这个阶段你可以更好地利用它。

这里有更多信息

http://blogs.msdn.com/b/webdev/archive/2015/01/14/running-asp-net-5-applications-in-linux-containers-with-docker.aspx

【讨论】:

  • 对不起,但我不明白 Docker 如何有助于在 Apache 上运行 Asp.net 5。你能解释一下吗?
  • 嗨@Donald 我明白你在想什么。问题是 - 您不能在 Apache 网络服务器下直接运行 ASP.NET 5 应用程序。您可以做的是创建一个 Apache 代理并将请求传递给 Kestrel 服务器。但推荐的解决方案是使用 docker insted。在我附加的链接下,您可以找到一个很好的教程,该教程展示了如何使其在 linux 环境下工作。您还可以查看mono-project.com/docs/about-mono/compatibility,这是 .NET 的开源实现,如果它们支持 4.6,则可能可以在 Apache 下运行应用程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 2018-04-13
  • 2017-09-15
  • 1970-01-01
  • 2015-12-19
相关资源
最近更新 更多