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后,微软的股票真的是一路飙升,可以看下面这张图:
为什么说到了这里,因为真的是切身感受到微软确实发生了不少变化,今天我们将我们的.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程序的运行的更多相关文章
- [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果
[C#]使用 C# 代码实现拓扑排序 目录 0.参考资料 1.介绍 2.原理 3.实现 4.深度优先搜索实现 回到顶部 0.参考资料 尊重他人的劳动成果,贴上参考的资料地址,本文仅作学习记录之用. ...
- CentOS中配置NFS服务
1.服务器端安装rpcbind.nfs-utils.nfs-server包 yum install nfs-utils -y 2.修改服务器端配置文件,添加需要共享的文件夹. vim /etc/exp ...
- OSGi 系列(七)之服务的监听、跟踪、声明等
OSGi 系列(七)之服务的监听.跟踪.声明等 1. OSGi 服务的事件监听 和 bundle 的事件监听类似,服务的事件监听是在服务注册.注销,属性被修改的时候,OSGi 框架会发出各种不同的事件 ...
- CentOS&.NET Core初试-4-安装守护服务(Supervisor)
系列目录 CentOS的安装和网卡的配置 安装.NET Core SDK和发布网站 Nginx的安装和配置 安装守护服务(Supervisor) Supervisor是什么? Supervisor 是 ...
- CentOS中配置Kafka集群
环境:三台虚拟机Host0,Host1,Host2 Host0:192.168.10.2 Host1: 192.168.10.3 Host2: 192.168.10.4 在三台虚拟机上配置zook ...
- 守护服务Supervisor的安装和使用
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...
- 2017-03-05 CentOS中结合Nginx部署dotnet core Web应用程序
Visual Studio Live 倒计时2天,当然这是美国倒计时两天,中国应该是在3月8日的凌晨,正值"3.8妇女节".提前祝广大的女性同志节日快乐,当然还有奋斗在一线的程序媛 ...
- Httpd服务入门知识-Httpd服务常见配置案例之修改监听的IP和Port
Httpd服务入门知识-Httpd服务常见配置案例之修改监听的IP和Port 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看默认配置 [root@node101.yinzh ...
- [03]使用 VS2019 创建 ASP.NET Core Web 程序
使用 VS2019 创建 ASP.NET Core Web 程序 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自<从零开 ...
随机推荐
- 修改 /var/lib/locales/supported.d/local 文件(使用 locale -a 命令查看系统中所有已配置的 locale)
转自:http://zyxhome.org/wp/cc-prog-lang/c-stdlib-setlocale-usage-note/ http://www.west263.com/info/htm ...
- Android系统移植与调试之------->如何修改Android的默认语言、默认时区
修改device/other/TBDG1073/ system.prop文件 1.设置默认语言 找到device/other/TBDG1073/ system.prop文件,修改属性ro.produc ...
- PAT 1074 宇宙无敌加法器 (20 分)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个 PAT 星人都必须熟记各位数字的进制 ...
- 001-unity3d简介以及界面说明
一.简介 学习路线1.C#.网络[http,socket]io2.GUI.NGUI.2DToolKit3.3D控制.物理引擎.角色控制4.粒子系统.音频等5.android.IOS开发基础6.sock ...
- Python数据分析与挖掘所需的Pandas常用知识
Python数据分析与挖掘所需的Pandas常用知识 前言Pandas基于两种数据类型:series与dataframe.一个series是一个一维的数据类型,其中每一个元素都有一个标签.series ...
- Nginx和php-fpm部署到不同的服务器
Nginx安装滤过,基本上nginx上的配置很少,只要添加个server就可以了,主要安装php-fpm服务 php7.1.3安装 1.安装依赖的软件包yum -y install gcc gcc-c ...
- 1.8 使用电脑测试MC20的GPRS功能
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- Socke---转
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP ...
- 线程同步synchronized和ReentrantLock
一.线程同步问题的产生及解决方案 问题的产生: Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),将会导致数据不准确,相互之间产生冲突. 如下例:假设有一个卖票 ...
- 阿拉伯数字转中文大写数字的JS
function intToChinese ( str ) { str = str+''; var len = str.length-1; var idxs = ['','十','百','千','万' ...