如何进行.net Core 生产环境下的KestrelServer + Shell 实践

发布时间:2021-12-23 17:37:08 作者:柒染
来源:亿速云 阅读:107

这篇文章将为大家详细讲解有关如何进行.net Core 生产环境下的KestrelServer + Shell 实践,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1、背景描述 原项目部署在windwos 服务器下的windwos 服务程序。 

2、现已经改版为Linux Centos 下的服务程序。 

环境说明:

服务器系统:CentOS 7.0+

相关工具:Xshel、Xftp

服务器软件软件:.netcore、

1.安装 CentOS

测试环境自行安装,生产环境公司运维团队准备。

2.安装 .net Core SDK For Centos7

这里想必网上已经烂大街 了。

参考:https://www.microsoft.com/net/core#linuxredhat

选择指定的系统:这里选择Centos

提前使用windwos 开发好的程序。给予.net Core 1.1

下面几种方法:

方案1:

1.jexus+ KestrelServer 

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

KestrelServer :Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器,libuv是一个跨平台的异步I/O库。ASP.NET Core模板项目使用Kestrel作为默认的web服务器. 

因为这里是准对发布Windwos 服务的改造程序。所以这里也是一个类似与服务程序的程序。

1、安装jexus

 这里参考官网 https://www.jexus.org/ 

2.安装完成我们发布程序,在对应的目录下创建属于自己的文件夹。

如何进行.net Core 生产环境下的KestrelServer + Shell 实践

这里对应相关已经全部安装好.如图所示,因为公司对这里要求比较严格这里就不贴过多图。

 上传程序到

如何进行.net Core 生产环境下的KestrelServer + Shell 实践

3.配置jexus 配置文件。

4.这里怀着慢慢的激情运行Jexus的命令。查看进程结果没有任何反应.

a) 这里的问题就不说了,因为Jexus需要root权限,因为公司分配的权限没有root权限。对root权限限制比较严重。这里也和Jexus 的大牛宇内流云 沟通最终因为权限问题放弃使用 Jexus。(因为Jexus这里必须使用Root权限)。

方案2: 

  1. KestrelServer + Linux Shell编程模式

1.Shell脚本: 

1.如何进行.net Core 生产环境下的KestrelServer + Shell 实践

2.Start.sh  程序将要启动调用 Start.sh脚本:

#!/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

export PATH

source /home/baseuser/.bash_profile

nohup dotnet /home/baseuser/www/XX.XX.Service/XX.XX.Service.dll >nohup.out 2>&1 &

2.Stop.sh 程序将要停止时调用Stop.sh 


#!/bin/bash    
echo      "begain kill server !"    
ps      -ef|      grep      XXX|      grep      -      v      "grep"      |      awk      '{print "kill "$2}'      |sh    
sleep      2    
processnum=`      ps      -ef|      grep      XXX|      grep      -      v      "grep"      |      wc      -l`    
if      [ $processnum -      eq      0 ]    
          then    
          echo      "kill Success !"    
else    
          echo      "kill Failed !"    
exit    
Fi    

3.ServerStatus.sh Linux系统定时器定时检查脚本。


#!/bin/sh    
PATH=      /usr/local/sbin      :      /usr/local/bin      :      /usr/sbin      :      /usr/bin      :      /sbin      :      /bin    
export      PATH    
source      /home/baseuser/      .bash_profile    
echo      'look for server statu...'      >>server_status.log    
processnum=`      ps      -ef|      grep      XXX|      grep      dotnet|      wc      -l`    
echo      $processnum >>server_status.log    
if      [ $processnum -      eq      0 ]    
          then    
          echo      'server is shut down ...begain start server...'      >>server_status.log    
          echo      "`source /home/baseuser/www/XXX.XXX.Service/start.sh`"    
          echo      'server is starting'      >>server_status.log    
else    
          echo      'server is normal...'      >>server_status.log    
exit    
fi    

4 配置系统定时器:crontab -e

1
*      /1      * * * *       cd      /home/baseuser/www/XXX      .XXX.Service && .      /serverstatus      .sh 2>&1    

查看相关进程:

如何进行.net Core 生产环境下的KestrelServer + Shell 实践

或者这是,你可以自己杀掉 程序进程,程序自己会重启。 

我这里只运行windwos服务程序的改造程序,若想运行Web应用,直接安装Nginx稍作配置即可。

关于如何进行.net Core 生产环境下的KestrelServer + Shell 实践就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 在Linux系统中以单容器安装Nginx+ASP.NET Core的方法
  2. 如何进行SequoiaDB + JanusGraph的实践

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kestrelserver shell

上一篇:user status和system status的mapping逻辑是什么

下一篇:mysql中出现1053错误怎么办

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》