结合Jexus + Kestrel 部署 asp.net core 生产环境
?
ASP.NET Core 是微軟的全新的框架。這一框架的目標(biāo) ︰
1) 模塊化實(shí)現(xiàn)
2) 一切都盡可能的-異步
3) 依賴關(guān)系注入
?????? 微軟已經(jīng)如期發(fā)布了.NET Core R2, 具體參見文章《微軟.NET Core RC2正式發(fā)布,橫跨所有平臺》,現(xiàn)在可以放心的基于.NET Core 構(gòu)建 ASP.NET Core 。那么問題就來了,生產(chǎn)環(huán)境我們?nèi)绾尾渴鹉?#xff1f;
ASP.NET Core 的運(yùn)行環(huán)境由新開發(fā)的 Kestrel Server 負(fù)責(zé),IIS 退回到 HTTP 的偵聽器的角色,微軟也特別為了這個(gè)需求開發(fā)了 IIS Platform Handler,以處理 HTTP 與運(yùn)行環(huán)境之間的信息轉(zhuǎn)發(fā)工作,微軟官方推薦在Linux服務(wù)器上使用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時(shí)會(huì)裝上),?AspNetCoreModule是一個(gè)native IIS module。Jexus 5.8.1 版本的端口“轉(zhuǎn)發(fā)”功能也類似于IIS 的實(shí)現(xiàn)方式,通過端口轉(zhuǎn)發(fā)方式將Kestrel 保護(hù)起來,又可以高性能運(yùn)行。Jexus的實(shí)現(xiàn)方式上劉冰的博客《為支持ASP.NET5跨平臺,Jexus再添新舉措》進(jìn)行了解釋。
??????? 下面我們來介紹下怎么設(shè)置通過Jexus 把a(bǔ)sp.net core 的請求轉(zhuǎn)發(fā)給Kestrel Server來處理。我假設(shè)你已經(jīng)把a(bǔ)sp.net core rc2 的網(wǎng)站準(zhǔn)備好了,我這里演示的就是我的一個(gè)實(shí)驗(yàn)站點(diǎn)“Hello World”, 運(yùn)行在Azure上的Centos 7.0上,服務(wù)端口是127.0.0.1:5000 。
?
在jexus上為之新建一個(gè)網(wǎng)站,在這個(gè)網(wǎng)站的配置文件中加一行: AppHost.Port=5000 通過以上處理,訪問jexus的這個(gè)網(wǎng)站,就會(huì)把請求轉(zhuǎn)發(fā)到對應(yīng)的應(yīng)用上。下面是我的示例dotnetcore,配置文件放在/usr/jexus/siteconf,創(chuàng)建一個(gè)網(wǎng)站叫做dotnetcore:
port=5001 hosts=*
AppHost.Port=5000?
?
通過 5001 端口轉(zhuǎn)發(fā)到 5000端口,配置非常簡單,這時(shí)的jexus也是一個(gè)偵聽和數(shù)據(jù)轉(zhuǎn)發(fā)的角色。當(dāng)然,作為服務(wù)器,jexus也是一個(gè)“網(wǎng)站組織者”的角色。因?yàn)槊總€(gè)應(yīng)用程序容器都有不同的端口,而服務(wù)器對外服務(wù)器不可能一個(gè)端口一個(gè)服務(wù)。通過jexus的“組織”,就能讓不同的端口通過域名共同一個(gè)80端口。
保存后,重啟Jexus服務(wù)器就生效了,就可以通過瀏覽器訪問到asp.net core 網(wǎng)站了。?
大家可以通過 http://mono.cloudapp.net:5001/? 訪問到我這個(gè)最簡單的Hello World
如果我把后端的ASP.NET Core應(yīng)用關(guān)掉,會(huì)看到下面的頁面
總結(jié)
以上是生活随笔為你收集整理的结合Jexus + Kestrel 部署 asp.net core 生产环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发现了一个好用的在线勾图的站点
- 下一篇: ASP.NET Core MVC/Web