使用Jexus驱动Asp.Net Core 程序
起因
本文主要是Jexus驱动Asp.Net Core Web程序,为什么要使用Jexus驱动呢?- 多个站点方便管理,可以是同时用Asp.Net Webform/Mvc站点;
- 自由协商多个asp.net core的端口;
- Jexus的主进程是精灵进程,在Asp.Net Core使用时遇到无法处理的异常导致进程退出的,Jexus会自动启动Asp.Net Core进程;
这里的Linux系统采用的是Bash on Ubuntu on Windows,比起虚拟机使用更方便,Jexus版本使用独立版5.8.2.16 .
1.新建一个Mvc项目(Asp.net Core)
//在qiufeng.blog目录下,新建mvc
dotnet new mvc
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
//.UseIISIntegration() //这里不用iis承载
.UseStartup<Startup>()
.Build();
host.Run();
}
}
//直接发布项目
dotnet publish
2.在jexus配置驱动程序 (主要看AppHost配置)
port=80
root=/ /var/www/default
hosts=* #OR your.com,*.your.com
# addr=0.0.0.0
# CheckQuery=false
#NoLog=true
AppHost={
CmdLine=dotnet /var/www/qiufeng.blog/bin/Debug/netcoreapp1.1/publish/qiufeng.blog.dll;
AppRoot=/var/www/qiufeng.blog/bin/Debug/netcoreapp1.1/publish;
Port=0}
# NoFile=/index.aspx
# Keep_Alive=false
UseGZIP=true
配置好,启动Jexus: sudo ./jws start
(1) 在浏览器地址栏输入: http://192.168.65.186/ ,可以正常访问Asp.Net Core Mvc项目;暂时不用关心Asp.Net Core项目的端口,由Jexus代理了,看一下Asp.Net Core和Jexus进程关系.
因为Jexus是精灵进程,dotnet进程的父进程为Jexus的主进程,所以dotnet进程在运行的时候有Jexus进行守护,如异常退出的,Jexus则会主动拉起dotnet进程.
(2) 先看看进程名为dotnet的id为:185
(3) 开启bash,手动杀掉进程,模拟dotnet异常退出
(4) 通过进程列表,查看dotnet进程id,Jexus重新拉起dotnet进程.
秋风
2017-06-19