我们继续解决上篇博客的问题,我这个人有个毛病,不喜欢遗留什么问题,也不喜欢问题说不明白,具体要怎么解决一定要详尽,因为经常自己遇到问题的时候,去翻别人的博客,就会遇到这样的问题,很苦恼,又说废话了。

  我们一直踩在巨人的肩膀上前行!!!

  这篇博客中介绍一个新的名词“Supervisor”,翻译过来应该是超级用户的意思,在电脑里面这个超级用户可是非常NB的,它什么都管,那么就说一下我们要用到的这个“超级用户”,Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台的守护进程,并实时监控进程的状态,一旦发现进程死掉了,立马就去重启它。这不正是我们想要的吗。写到这儿了突然发现了个问题,那就再扯会儿蛋。以下为扯淡内容,与本篇博客的内容无关。。。

  微软真的发生了太大的变化,做.net的这几年真的可谓饱受争议,在我们这个国家的大环境下,就编程语言来说,Java无一例外是占了上风的,我们不说C/C++,就拿Java来说,身边不少的人,有好多都是从C#转了Java,导致现在.net行业不景气,记得之前跟同学吃饭,碰到一个他的同学,说了几句话,问了下做什么的,同学说也是搞编程的,我真的是问都不用问,毋庸置疑肯定是Java的,真的是太多了,从各大培训机构陆续的停止.Net培训,比如传智播客(不过听说杨中科老师从传智播客出去后,自己成立了公司,自己搞了,这真的是大情怀啊!)。我们可以去看各大网站的编程语言排名,C#一直都是4,5,6名,Java好像一直处于顶峰,虽说同样都是面向对象的编程语言,哈哈问个问题‘什么是面向对象?“,答”世间万物皆为对象“!很大程度上C#并不像是一门语言,而是一个工具,所以普遍认为C#的入门要比Java简单的多,当初为什么选择了.net方向,其实一开始选专业的时候,真的对计算机编程是一窍不通,更不懂选什么方向了,但因为专业搭配的问题,不得不选择了这个方向。。。又扯远了!当然.net目前发展到今天,跟微软的高层是有紧密的联系的,微软的上一代CEO是仇视Linux的,也经常听同事说,自从纳德拉担任CEO后,微软的股票真的是一路飙升,可以看下面这张图:

为什么说到了这里,因为真的是切身感受到微软确实发生了不少变化,今天我们将我们的.net程序放到了Linux上,Mac上,今天我们使用C#做移动跨平台开发,而在以前鲍尔默称”Linux是癌症“,纳德拉却说”微软爱Linux“,所以说微软的高层决定了今天的微软,CoreOS的首席执行官说:”我从未想到自己会出现在微软的发布会上,而且还能听到微软的CEO说他们爱Linux。“dotnet core的推出让我们这些热爱.net的人又看到了新的希望,在2016年的腾讯代码报告中,C#和Asp.Net 的排名也有所提升

当然还有网易,将自己的手游的后端使用.net core替代了Java,这些都推动了.net的发展,微软也渐渐的走向了开源化,在ipad版的office,收购Xamarin,拥抱Linux,Visual Studio Code的发布,不久的Sql  Server For Linux,dotnet core 2.0的正式发布,我们相信微软会越来越好,.net也会越来越好,再配一张"川普"的推文(虽然是P的)

Make .NET Great Again. 扯淡结束。。。

回到我们的正题,首先安装Supervisor,命令为:

yum install python-setuptools

easy_install supervisor

可以看到第一条命令执行时,提示已经安装了python工具并且是最新版本,下一条命令应该也是成功执行了,下面继续配置Supervisor,命令为:

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改配置文件supervisord.conf,真的是很讨厌在命令行中去修改内容,我还是直接找到源文件,使用WinSCP有好处是可以直接找到源文件然后修改,不过建议大家先下载到本地备份,万一改乱套了比较麻烦,尽量不要在服务器直接改,修改如下:将最后一行修改为:注意一定要去掉前面的分号,保存完成。注意这个*.conf也可以改成*.ini。下面配置对ASP.Net Core应用的守护

创建一个DotNetCoreWebDemo01.conf文件,配置如下:

[program:DotNetCoreWebDemo01]
command=dotnet DotNetCoreWebDemo01.dll ; 运行程序的命令
directory=/root/DotNetCoreWebDemo01/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/DotNetCoreWebDemo01.err.log ; 错误日志文;件
stdout_logfile=/var/log/DotNetCoreWebDemo01.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT

每一句后面都加了注释,根据自己的实际情况配置即可,本地创建完成后,我们将他拷贝到/etc/supervisor/conf.d文件夹下,就是我们刚刚在上面配置的files 的值的文件夹下,如果不存在conf.d文件夹,自己手动创建即可,还有如果你配置的是*.ini,那么就将配置文件扩展名改为.ini,对应即可,下面运行命令

supervisord -c /etc/supervisor/supervisord.conf

ps -ef | grep DotNetCoreWebDemo01

存在dotnet DotNetCoreWebDemo01.dll进程就代表已经启动了,如果出现下面的情况:

则需要将刚才的配置进行reload,重新生效,命令为 supervisorctl reload,然后再运行  ps -ef | grep DotNetCoreWebDemo01,我们现在再运行下Web,没问题成功了,下面我们把这个守护神设为开机启动,以后就不需要担心Web关掉了。真的是要被这些命令折磨吐了!!!坚持!!!!

创建supervisord.service文件,文件配置如下:

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon [Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s [Install]
WantedBy=multi-user.target

然后保存,放到文件目录

/usr/lib/systemd/system下

执行命令 :

systemctl enable supervisord 

设为开机启动,执行命令 :

systemctl is-enabled supervisord  查看是否已经为开机启动

以上全部配置完成了,自己可以重启下服务器然后验证下。

  至此如何将dotnet core Web部署到Linux上就梳理完了,真是一点点的写,一点点的测试,一点点的查,还是有点吃力的,以后遇到什么问题可以直接来这里找了。美好的周末又结束了,周一又要开始了。。。

扫描二维码关注我的公众号,共同学习,共同进步!

2017-03-05 CentOS中配置守护服务(Supervisor)监听dotnet core web程序的运行的更多相关文章

  1. [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果

    [C#]使用 C# 代码实现拓扑排序   目录 0.参考资料 1.介绍 2.原理 3.实现 4.深度优先搜索实现 回到顶部 0.参考资料 尊重他人的劳动成果,贴上参考的资料地址,本文仅作学习记录之用. ...

  2. CentOS中配置NFS服务

    1.服务器端安装rpcbind.nfs-utils.nfs-server包 yum install nfs-utils -y 2.修改服务器端配置文件,添加需要共享的文件夹. vim /etc/exp ...

  3. OSGi 系列(七)之服务的监听、跟踪、声明等

    OSGi 系列(七)之服务的监听.跟踪.声明等 1. OSGi 服务的事件监听 和 bundle 的事件监听类似,服务的事件监听是在服务注册.注销,属性被修改的时候,OSGi 框架会发出各种不同的事件 ...

  4. CentOS&.NET Core初试-4-安装守护服务(Supervisor)

    系列目录 CentOS的安装和网卡的配置 安装.NET Core SDK和发布网站 Nginx的安装和配置 安装守护服务(Supervisor) Supervisor是什么? Supervisor 是 ...

  5. CentOS中配置Kafka集群

    环境:三台虚拟机Host0,Host1,Host2 Host0:192.168.10.2 Host1:  192.168.10.3 Host2:  192.168.10.4 在三台虚拟机上配置zook ...

  6. 守护服务Supervisor的安装和使用

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...

  7. 2017-03-05 CentOS中结合Nginx部署dotnet core Web应用程序

    Visual Studio Live 倒计时2天,当然这是美国倒计时两天,中国应该是在3月8日的凌晨,正值"3.8妇女节".提前祝广大的女性同志节日快乐,当然还有奋斗在一线的程序媛 ...

  8. Httpd服务入门知识-Httpd服务常见配置案例之修改监听的IP和Port

    Httpd服务入门知识-Httpd服务常见配置案例之修改监听的IP和Port 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看默认配置 [root@node101.yinzh ...

  9. [03]使用 VS2019 创建 ASP.NET Core Web 程序

    使用 VS2019 创建 ASP.NET Core Web 程序 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自<从零开 ...

随机推荐

  1. Java基础 - 流程控制语句

    package com.demo4; /* * 流程控制语句 * 流程控制语句分类: * 顺序结构 * 代码从上往下按照顺序执行 * * 选择结构 * if * if (关系表达式1) { * 语句体 ...

  2. QCache 缓存(模板类,类似于map,逻辑意义上的缓存,方便管理,和CPU缓存无关。自动获得被插入对象的所有权,超过一定数量就会抛弃某些值)

    在软件开发中,我们经常需要在内存中存储一些临时数据用于后续相关计算.我们一般把这些数据存储到某个数组里,或者STL中的某个合适的容器中.其实,在Qt中直接为我们提供了一个QCache类专用于这种需求. ...

  3. Unity字体文件放Resources和打成ab对比

    情况一:公共字体打成ab的时候,加载A界面的时候加载了font的ab,卸载A和font的ab后,接着加载B界面,加载了font的ab,卸载B和font的ab,这时候字体对应的asset会在内存里有两份 ...

  4. django startapp报 maximum recursion depth exceeded

    报错截图如下: 解决办法:修改指定路径下的functools.py文件的def total_ordering(cls):方法: 原来的样子: convert = { '__lt__': [('__gt ...

  5. Python3.6全栈开发实例[009]

    9.字典dic,dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}a.请循 ...

  6. Python多进程multiprocessing

    import multiprocessing import time # 具体的处理函数,负责处理单个任务 def func(msg): # for i in range(3): print (msg ...

  7. dataTables.bootstrap 如何显示中文

    $('#table_cust').DataTable({ "oLanguage": { "sUrl": "/assets/vendors/page_z ...

  8. numpy的通用函数:快速的元素级数组函数

    通用函数(ufunc)是对ndarray中的数据执行元素级运算的函数.可看作简单函数的矢量化包装. 一元ufunc sqrt对数组中的所有元素开平方 exp对数组中的所有元素求指数 In [93]: ...

  9. 剑指offer 面试28题

    面试28题: 题目:对称的二叉树题: 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的 解题思路: 可以定义一种遍历算法,先遍历右子节点再遍 ...

  10. 前端基础之JavaScript_(2)_BOM对象

    BOM对象 window对象 所有浏览器都支持 window 对象.概念上讲.一个html文档对应一个window对象.功能上讲: 控制浏览器窗口的.使用上讲: window对象不需要创建对象,直接使 ...