結合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 。

NM7[OQ)`BRG`OQ5HBK()]XQ

 

在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

image
如果我把后端的ASP.NET Core應用關掉,會看到下面的頁面

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM