.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 

JexusJexus Jexus Web Server,简称JWS,是Linux平台上的一款ASP.NET WEB服务器,是 LinuxUnixFreeBSD 等非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.安装完成我们发布程序,在对应的目录下创建属于自己的文件夹。

 

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

 上传程序到

3.配置jexus 配置文件。

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

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

 

方案2: 

  1. KestrelServer + Linux Shell编程模式

 

1.Shell脚本

1.

  

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

查看相关进程:

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

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

原文地址:http://www.cnblogs.com/gongzhe/articles/6953556.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 主类及目录结构介绍

转载自 Spring Boot 主类及目录结构介绍 Spring Boot 与传统项目最大的区别是,传统项目都是打成 WAR 包部署到服务器上面,需要额外的 Servlet 容器, 而 Spring Boot 则可以直接打成 jar 包,并内置集成了 Servlet 容器&#xff…

《四世同堂》金句摘抄(十四)

System.out.println("继续看《四世同堂》"); System.out.println("这本书好长啊"); System.out.println("不断的听,不断的看,才到1000多页"); System.out.println("这几天没有好好的读,追求了速度&#x…

mysql中ifnull函数

当里面的参数为null时使用第二个参数,否则使用第一个参数

integer

new Integer(123)每次都会创建一个新的对象; Integer.valueOf(123)会调用缓存池中的对象,多次调用会取得同一个对象的引用。

NET Core中使用Irony实现自己的查询语言语法解析器

在之前《在ASP.NET Core中使用Apworks快速开发数据服务》一文的评论部分,.NET大神张善友为我提了个建议,可以使用Compile As a Service的Roslyn为语法解析提供支持。在此非常感激友哥给我的建议,也让我了解了一些Roslyn的知识。使用Roslyn的一…

给你一份超详细 Spring Boot 知识清单

转载自 给你一份超详细 Spring Boot 知识清单 在过去两三年的Spring生态圈,最让人兴奋的莫过于Spring Boot框架。或许从命名上就能看出这个框架的设计初衷:快速的启动Spring应用。因而Spring Boot应用本质上就是一个基于Spring框架的应用,…

MySQL里面的in关键字

里面的类型必须一致,不能使用%等通配符(in类似于=)

《四世同堂》金句摘抄(十五)

System.out.println("继续看《四世同堂》"); System.out.println("这本书好长啊"); System.out.println("不断的听,不断的看,才到1000多页"); System.out.println("这几天没有好好的读,追求了速度&#x…

6月Unity技术路演华东站报名启动!

2017 Unity技术路演华东区现已正式开启报名!2017年3~5月期间,Unity官方技术团队已分别造访华南、西南地区开展为期一天的技术分享,现在华东站(上海、南京、杭州)已正式启动,在这个夏天&#xff…

《四世同堂》金句摘抄(十六)

System.out.println("继续看《四世同堂》"); System.out.println("这本书好长啊"); System.out.println("不断的听,不断的看,才到1000多页"); System.out.println("这几天没有好好的读,追求了速度&#x…

Redis 如何分析慢查询操作

转载自 Redis 如何分析慢查询操作 什么是慢查询 和mysql的慢SQL日志分析一样,redis也有类似的功能,来帮助定位一些慢查询操作。 Redis slowlog是Redis用来记录查询执行时间的日志系统。 查询执行时间指的是不包括像客户端响应(talking)、发送回复等…

Arrays工具类(jre中基本类库提供的工具类)

1.Arrays.sort(arr); 给数组arr排序 2.Arrays.toString(arr) 打印arr数组 3.Arrays.binarySearch(arr,26); 在数组中快速的查询给定元素出现的位置 如果找到元素 返回元素索引 没找到返回一个负数 在使用时,要求数组必须是升序的 4.Array.copyOf(arr,arr.length);拷贝数组&a…

mysql中的isnull

where条件中的等于号不能比较空值

使用面向对象(OO)的思想,实现循环输入多个会员的信息,根据会员编号,查找会员积分

先来看一下运行结果: 主要知识点是:对象数组的使用编写软件:Myeclipse 10.5JDK版本:1.7完成时间:25分钟 实现思路: 在会员类中(HuiYuan),我们别的事不用干,只需要声明…

应用软件系统程序员的三个立面

这几年工作的重心其实一直没有在代码上,做了很多产品的工作,一直觉得打造一个全面发展的团队一定是我价值所在,所以一直说自己最擅长谈梦想,也确实跟很多人谈了梦想怎么落地、谈了职业规划、孜孜不倦的去聊如何才能踏踏实实的走好…

10 种保护 Spring Boot 应用的绝佳方法

转载自 10 种保护 Spring Boot 应用的绝佳方法 Spring Boot大大简化了Spring应用程序的开发。它的自动配置和启动依赖大大减少了开始一个应用所需的代码和配置量,如果你已经习惯了Spring和大量XML配置,Spring Boot无疑是一股清新的空气。 Spring Boot…

第一个网页

<html><head><meta charset"utf-8" /><title>第一个网页</title><meta name "keywords" content "尚学堂" /><meta name "author " content "王洋洋" /><meta namedescr…

记一次分布式B站爬虫任务系统的完整设计和实施

今天带来一个有意思的东西-分布式B站爬虫任务系统 这个小玩意源于上周在研究Azure的时候&#xff0c;发现云服务厂商都在推荐轻量级的存储队列服务&#xff0c;用来取代原有的比较重的消息队列服务&#xff0c;具体来说&#xff0c;比如阿里云就推荐使用消息服务替代消息队列&a…

《四世同堂》金句摘抄(十七)

System.out.println("明天结束掉它"); System.out.println("下一本书你啥呢&#xff1f;"); System.out.println("《房思琪的初恋乐园》吧");地是光光的&#xff0c;冰硬的&#xff0c;灰黄的&#xff0c;城墙是灰黑的&#xff0c;坚硬的&#x…