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

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

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

  这篇博客中介绍一个新的名词“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后,微软的股票真的是一路飙升,可以看下面这张图:

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

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

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

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

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

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

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

yum install python-setuptools

easy_install supervisor

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

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

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改配置文件supervisord.conf,真的是很讨厌在命令行中去修改内容,我还是直接找到源文件,使用WinSCP有好处是可以直接找到源文件然后修改,不过建议大家先下载到本地备份,万一改乱套了比较麻烦,尽量不要在服务器直接改,修改如下:2017-03-05 CentOS中配置守护服务(Supervisor)监听dotnet core web程序的运行将最后一行修改为:2017-03-05 CentOS中配置守护服务(Supervisor)监听dotnet core web程序的运行注意一定要去掉前面的分号,保存完成。注意这个*.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

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

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

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

则需要将刚才的配置进行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  查看是否已经为开机启动
2017-03-05 CentOS中配置守护服务(Supervisor)监听dotnet core web程序的运行
以上全部配置完成了,自己可以重启下服务器然后验证下。

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

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

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

上一篇:国产中标麒麟Linux部署dotnet core 环境并运行项目 (二) 部署运行控制台项目


下一篇:部署Dotnet Core应用到Kubernetes(一)