使用Jexus驱动Asp.Net Core 程序

起因

  本文主要是Jexus驱动Asp.Net Core Web程序,为什么要使用Jexus驱动呢?
  1. 多个站点方便管理,可以是同时用Asp.Net Webform/Mvc站点;
  2. 自由协商多个asp.net core的端口;
  3. 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驱动asp.net core程序,进程间的关系

 因为Jexus是精灵进程,dotnet进程的父进程为Jexus的主进程,所以dotnet进程在运行的时候有Jexus进行守护,如异常退出的,Jexus则会主动拉起dotnet进程.

 (2) 先看看进程名为dotnet的id为:185

 使用ps -ef查看dotnet进程id 

 (3) 开启bash,手动杀掉进程,模拟dotnet异常退出

 手动杀掉dotnet进程 

 (4) 通过进程列表,查看dotnet进程id,Jexus重新拉起dotnet进程.

  

秋风 2017-06-19