• Jexus部署Asp.Net Core项目


      在之前的我的博客项目中,我将.net Core发布到Cent OS 上,使用的Nginx代理以及Supervisor进程守护,看过我的博客的童鞋,也会发现,这种方式比较麻烦,光命令行就看的头大,总共部署了两次还是三次,可是每次一样都是要翻博客翻资料,想想还是IIS好用,点几下鼠标就完成了,没有这么多步骤。之前也一直想尝试下使用Jexus部署我的项目,也一直没有时间搞,今天趁着外面下雨,就仔细学习下这个东东。

      Jexus百度百科:

      Jexus 即 Jexus Web Server,简称JWS,是Linux平台上的一款ASP.NET WEB服务器,是 Linux、Unix、FreeBSD 等非Windows系统架设 ASP.NET WEB 服务器的核心程序,是企业级ASP.NET跨平台部署的一种可选方案。与其它WEB服务器相比,Jexus不但具有跨平台ASP.NET服务器这样的标志性特征,同时还拥有内核级的安全监控、入侵检测、URL重写、无文件路由等一系列重要功能和专有特性。

           关于它的定义简单明了,就是一款Linux上的Asp.Net Web服务器,相当于我们的Windows上的IIS,Jexus5.8.2的正式发布为Asp.Net Core进入生产环境提供了平台支持。

    本版的亮点是新增“AppHost”配置项,将HTTP自宿主应用程序(如Asp.net Core应用程序、Node.js应用程序等)统一纳入Jexus的工作进程序列进行管控(启动、停止、重启、崩溃后自动恢复等管理、监控功能),为Asp.Net Core应用程序进入企业化生产环境提供了强有力的平台保障。使用 jexus整合asp.net core的优点:
    1)支持多站点,同一端口可以同时支持任何多的asp.net core应用程序;
          2)应用程序启动、停止、重启与站点的启动、停止、重启等操作一致,无需手工管理asp.net core应用程序;
          3)具有应用程序崩溃后自动重启功能,为企业级不间断运行保障;
          4)具有比反向代理更高的性能优势;
          5)提供与IIS相同的HTTP环境参数。

    下面呢,我将先把我的项目停掉,将Supervisor和Nginx停止运行,首先将Supervisor停止运行,由于Supervisor设置了开机启动,我需要先把它禁用掉:

    禁用开机启动命令:systemctl disable supervisord     

    查看是否为开机启动命令:systemctl is-enabled supervisord 

    如下图所示:表明开机启动已经关闭,可以重启尝试一下。

    此时我重启完后,我的项目就无法访问了,为了下面的内容,我们再将Supervisor启动,命令如图中所示,下面我们再访问时,这时网站已经恢复了,表名我们的服务也已经启动了

    执行 supervisorctl stop all 可以停止全部进程 ,执行完后会显示DayaliBlog.Web:Stoped。接着我们再将Nginx停止,命令为:systemctl stop nginx .停止这些服务是为了排除这些对Jexus的影响,虽然我也不知道会有什么影响。现在我的项目已经完全无法访问了,下面我们开始安装Jexus,以及部署我们的.net core项目。

    安装jexus5.8.2独立版
    mkdir temp
    cd temp
    wget linuxdot.net/down/jexus-5.8.2-x64.tar.gz
    tar zxvf jexus-5.8.2-x64.tar.gz
    cd jexus/
    cd siteconf/

    安装完毕后,我们去修改siteconf里的default文件里的参数,关于要配置的参数说明如下:

    格式:AppHost={CmdLine=命行行; AppRoot=工作路径; Port=端口号}
    说明:CmdLine:必选项。表示启动这个web应用程序的命令(含参数),如 CmdLine= dotnet /var/www/aspnetcore/AspNetCoreStarted.dll
           AppRoot:必选项。表示这个应用程序的工作目录,如:AppRoot=/var/www/aspnetcore
           Port:可选项。表示这个应用程序的侦听端口,多个端口用英文逗号分隔(注:如果没有填写这一项,就请在AppHost.port或reproxy中填写端口号,否则,请求数据无法转发给应用程序)。
           Env:可选参数。表示这个应用程序工作时需要的环境变量,如 env=(PATH=/usr/local/bin:/var/www/aspnetcore:$PATH),多个设置用英文逗号分开。
           ErrLog:可选项。表示将这个应用程序的异常输出重定向到指定的文件(需填写完整路径),如果不原意输出日志,可以不用OutLog项。这时, jexus会自动关掉控制台输出(实质是重定向到/dev/null中了);
           OutLog:可选项。表示将这个应用程序的控制台输出重定向到指定的文件(需填写完整路径);
           User: 可选项。以指定的用户身份运行该应用程序,默认为root身份。
    注意:
       1,AppHost像AppHost.Port一样,不支持虚拟路径;
       2,AppHost功能是将指定的具有http服务能力的web应用程序纳入jexus工作进程进行管理,对Asp.Net Core或Node.js等自宿主web程序用于生产环境具有重要的意义。

    按照以上的说明,修改我要配置的参数

    ######################
    # Web Site: Default 
    ########################################
    
    port=80
    root=/ /root/DayaliBlog.Web
    hosts=*    #OR your.com,*.your.com
    
    
    # addr=0.0.0.0
    # CheckQuery=false
    NoLog=true
     AppHost={CmdLine=dotnet /root/DayaliBlog.Web/DayaliBlog.Web.dll;AppRoot=/root/DayaliBlog.Web;Port=5000}
    # NoFile=/index.aspx
     Keep_Alive=false
     UseGZIP=false
    OutLog=/tmp/out.txt;
    ErrorLog=/tmp/err.txt;
    
    # UseHttps=true
    # ssl.certificate=/x/xxx.crt  #or pem
    # ssl.certificatekey=/x/xxx.key
    # ssl.protocol=TLSv1.0    # TLSv1.1 or  TLSv1.2...
    # ssl.ciphers= 
    
    # DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24
    # AllowFrom=192.168.*.*
    # DenyDirs=~/cgi, ~/upfiles
    # indexes=myindex.aspx
    # rewrite=^/.+?.(asp|php|cgi|pl|sh)$ /index.aspx
    # reproxy=/bbs/ http://192.168.1.112/bbs/
    # host.Redirect=abc.com www.abc.com  301
    # ResponseHandler.Add=myKey:myValue
    
    
    # Jexus php fastcgi address is '/var/run/jexus/phpsvr'
    #######################################################
    # fastcgi.add=php|socket:/var/run/jexus/phpsvr
    
    # php-fpm listen address is '127.0.0.1:9000'
    ############################################
    # fastcgi.add=php|tcp:127.0.0.1:9000
    yi's

    以上#为注释的行,默认的AppHost参数项是注释的,需要取消注释,设置好AppHost参数后,需要启动Jexus,执行命令如下,需要切换到jexus文件目录下

    cd temp
    
    cd jexus
    
    ./jws start 

    执行成功后,再次访问我们的项目,即可访问成功。 
    下面我们需要将Jexus设为开机启动,命令如下:

    cd /etc/init.d/       
    vi jws
    按i编辑模式,粘贴下面内容
    #!/bin/bash
    #chkconfig: 2345 80 05#description:jws
    #
    
    . /etc/rc.d/init.d/functionscase "$1" instart)
      echo "Jexus Start.."
      /usr/jexus/jws start
      ;;
    stop)
      echo "Jexus Stop.."
      /usr/jexus/jws stop
      ;;
    restart)
      echo "Jexus Restart"
      /usr/jexus/jws restart
      ;;
    status)
      /usr/jexus/jws status
      ;;
    *)
      exit 1
      ;;
    esac
    exit $RETVAL
    按ESC后,输入:wq保存文件
    把这个脚本作为“服务”加入
    chmod 766 jws
    chkconfig --add jws

    到此为止,我们就成功的将我们的.net Core项目部署完成了,相对nginx+supervisor来说,jexus的步骤相对与简单些,而且jexus的性能跟IIS的性能相比不相上下。

    参考博客:

    http://www.cnblogs.com/linqingfeng/archive/2013/06/14/3135716.html

    https://mp.weixin.qq.com/s/k0qVppETGDMZ4AUA9IDu1Q

  • 相关阅读:
    [JavaScript-PHP]无刷新Ajax+POST使用阿里云短信平台发送短信
    [PHP]开源php拼音库的使用方法
    redis远程连接不上解决办法
    ServiceStack.Redis连接阿里云redis服务时使用连接池出现的(密码验证)问题
    .Net使用Redis详解之ServiceStack.Redis
    Windows下Redis的使用
    axios文件流下载(excel文件)
    生成线上用https证书,支持通配符和多域名,初学Let's Encrypt用于IIS,纯本地手动
    什么是TXT记录?如何设置、检测TXT记录
    v-cloak 的用法
  • 原文地址:https://www.cnblogs.com/Allen0910/p/7067782.html
Copyright © 2020-2023  润新知