专栏首页张善友的专栏结合Jexus + Kestrel 部署 asp.net core 生产环境

结合Jexus + Kestrel 部署 asp.net core 生产环境

ASP.NET Core 是微软的全新的框架。这一框架的目标 ︰

  1. 跨平台
  2. 针对云应用优化
  3. 解除 System.Web 的依赖。 获得下面三个方面的优势,你可以把它认为是一个C# 版本的NodeJS:

1) 模块化实现 2) 一切都尽可能的-异步 3) 依赖关系注入

       微软已经如期发布了.NET Core R2, 具体参见文章《微软.NET Core RC2正式发布,横跨所有平台》,现在可以放心的基于.NET Core 构建 ASP.NET Core 。那么问题就来了,生产环境我们如何部署呢?

  ASP.NET Core 的运行环境由新开发的 Kestrel Server 负责,IIS 退回到 HTTP 的侦听器的角色,微软也特别为了这个需求开发了 IIS Platform Handler,以处理 HTTP 与运行环境之间的信息转发工作,微软官方推荐在Linux服务器上使用Nginx,Haproxy等代理Kestrel Server,具体参考 http://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS。

需要安装AspNetCoreModule(安装 ASP.NET Core Server Hosting Bundle 或者.NET Core SDK时会装上), AspNetCoreModule是一个native IIS module。Jexus 5.8.1 版本的端口“转发”功能也类似于IIS 的实现方式,通过端口转发方式将Kestrel 保护起来,又可以高性能运行。Jexus的实现方式上刘冰的博客《为支持ASP.NET5跨平台,Jexus再添新举措》进行了解释。

        下面我们来介绍下怎么设置通过Jexus 把asp.net core 的请求转发给Kestrel Server来处理。我假设你已经把asp.net core rc2 的网站准备好了,我这里演示的就是我的一个实验站点“Hello World”, 运行在Azure上的Centos 7.0上,服务端口是127.0.0.1:5000 。

在jexus上为之新建一个网站,在这个网站的配置文件中加一行: AppHost.Port=5000 通过以上处理,访问jexus的这个网站,就会把请求转发到对应的应用上。下面是我的示例dotnetcore,配置文件放在/usr/jexus/siteconf,创建一个网站叫做dotnetcore:

port=5001 hosts=*

AppHost.Port=5000 

通过 5001 端口转发到 5000端口,配置非常简单,这时的jexus也是一个侦听和数据转发的角色。当然,作为服务器,jexus也是一个“网站组织者”的角色。因为每个应用程序容器都有不同的端口,而服务器对外服务器不可能一个端口一个服务。通过jexus的“组织”,就能让不同的端口通过域名共同一个80端口。

保存后,重启Jexus服务器就生效了,就可以通过浏览器访问到asp.net core 网站了。 

大家可以通过 http://mono.cloudapp.net:5001/  访问到我这个最简单的Hello World

如果我把后端的ASP.NET Core应用关掉,会看到下面的页面

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mix 10 上的asp.net mvc 2的相关Session

    Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

    张善友
  • ASP.NET 5 和Entity Framework 7公告仓库

    ASP.NET 5 有一个公告仓库来介绍ASP.NET 5和 Entity Framework 7的主要变更说明,这个对于日夜更新的项目来说,很多人经常会遇到问...

    张善友
  • 在 Windows Phone上使用QQConnect OAuth2

    QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码 这篇文章讲述的普通的ASP.NET站点上使用QQ互联,本篇文章主要介绍在Windows...

    张善友
  • C#怎样用文件读写在文件的原有基础上追加一行数据

    首先添加命名空间using System.IO; 这里有两种方法,希望对你有帮助,操作文件时,一定要记得及时关闭流。

    zls365
  • BZOJ3675: [Apio2014]序列分割(斜率优化)

    小H最近迷上了一个分隔序列的游戏。在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列。为了得到k+1个子序列,小H需要重复k次以下的步...

    attack
  • 【爬虫军火库】AnyProxy安装使用【Windows】

    分析网络请求详情是写爬虫应用的初始步骤,抓包便是一种十分强大的分析手段,尤其是对手机App进行抓包,往往能收获到Web端没有的API接口。抓包的工具多种多样,功...

    不二小段
  • 自助性BI工具:Clearify QQube

    插播:关注“互联网数据官”回复“独立站PPT”下载宋星老师跨境独立站营销的流量策略最新演讲PPT。 译者:严小鳙、审校:李晓艳 本文长度为1683字,预估阅读时...

    iCDO互联网数据官
  • JSP-Servlet中文乱码

      客户端 get 方法时 出现乱码:   解决办法: String str1 = request.getParameter("stuname"); Stri...

    用户1154259
  • 原创 | 函数 scanf 前世今生

    上述代码作何解读? 简单,就是让你从标准输入设备(也就是键盘),敲入一个十进制整数,然后放进变量 age 之中。然后做一惊一乍状爆出你的年龄。

    用户2617681

扫码关注云+社区

领取腾讯云代金券