开发者社区> 追逐时光者> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器和Supervisor守护服务 (下)

简介: Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器和Supervisor守护服务
+关注继续查看

五、配置Supervisor守护服务:

为什么要配置Supervisor:

  使用Linux部署过ASP.NET Core应用程序的小伙伴都清楚,我们在部署项目都是通过Shell进行项目启动运行的。有时候我们会发现当我们关闭了Shell后,应用程序会立马宕机无法访问,需要我们重新进入服务器连接Shell输入dot命令重启应用程序。在生成环境中对于这种没有对应用程序进行任何的守护和监听的部署是非常的糟糕的,因此我们需要守护服务或者容器(推荐使用Docker)来对应用程序进行监听保护作用,当监听到应用进程停止,Supervisor会自动重启该应用程序。

Supervisor简单概述:

  首先简单了解下Supervisor, Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

安装Supervisor:

yum install python-setuptools
 
easy_install supervisor

配置Supervisor

//新建指定目录,为了避免默认配置会在某些更新覆盖掉
mkdir /etc/supervisor
 
//这里是在新建好的目录新建conf文件,这里关键。默认文件会建立在/etc目录下
echo_supervisord_conf > /etc/supervisor/supervisord.conf

新建成功如下图所示:

1336199-20191209000733877-16094021.png

打开supervisord.conf,要将文件的结尾部分替换掉以便后面能读取到我们的配置文件

打开supervisord.conf配置文件:

vim supervisord.conf

在文件的结尾找到以下配置代码:

;[include]<br>;files = relative/directory/*.ini

1336199-20191209013633921-218242682.png将代码替换为如下,注意前后不能带 ;和空格符号

 [include]

 files = conf.d/*.conf

1336199-20191209015547118-1625134417.png

配置对ASP.NET Core应用的守护:

进入目录 /etc/supervisor/ 新建 conf.d文件夹:

mkdir conf.d

在【/etc/supervisor/conf.d/】目录下新建一个AspNetCoreWebApi.conf配置文件:

vim AspNetCoreWebApi.conf

直接复制以下内容:

[program:AspNetCoreWebApi]

command=dotnet FirstCore.dll;

directory=/root/MyDotNetApplication/;

autorestart=true;

stderr_logfile=/var/log/AspNetCoreWebApi.err.log;

stdout_logfile=/var/log/AspNetCoreWebApi.out.log;

environment=ASPNETCORE_ENVIRONMENT=Production;

user=root;

stopsignal=INT;


配置说明:

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

注意:如果服务已启动,修改配置文件可用“supervisorctl reload”命令来使其生效。

运行supervisord,查看是否生效,命令如下:

supervisord -c /etc/supervisor/supervisord.conf
 
ps -ef | grep AspNetCoreWebApi   //AspNetCoreWebApi是上面配置的program名称:[program:AspNetCoreWebApi]

配置Supervisor开机启动

新建一个“supervisord.service”文件

[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

将supervisord.service文件拷贝至:

/usr/lib/systemd/system/   #系统目录下

执行命令:systemctl enable supervisord #激活开机启动命令

执行命令:systemctl is-enabled supervisord #来验证是否为开机启动

下面是一些常用的 Supervisor 的命令 (参考https://segmentfault.com/a/1190000003955182):

               命令                                               说明
supervisord初始启动Supervisord,启动、管理配置中设置的进程
supervisorctl stop myproject停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon
supervisorctl start myproject启动某个进程
supervisorctl restart myproject重启某个进程
supervisorctl stop groupworker重启所有属于名为groupworker这个分组的进程(start,restart同理)
supervisorctl stop all停止全部进程,注:start、restart、stop都不会载入最新的配置文件
supervisorctl reload载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。注意:显示用stop停止掉的进程,用reload或者update都不会自动重启


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux搭建时间同步服务器
<span style="font-family:Tahoma,Arial">一、搭建时间同步服务器</span><br style="font-family:Tahoma,Arial"><span style="font-family:Tahoma,Arial">1、编译安装ntp server</span><br style="font-family:Tahoma,Arial"><di
1841 0
查看linux服务器CPU详细情况
<p style="line-height:23.8px; color:rgb(85,85,85); font-family:宋体,'Arial Narrow',arial,serif; font-size:14px; padding-top:0px; padding-bottom:0px; margin-top:0px; margin-bottom:0px; clear:both; he
1570 0
linux搭建git服务器
git是非常方便的版本控制工具,目前网上有很多免费的git仓库可以给我们使用,但是有些时候我们并不放心将我们的项目寄放在别人的服务器上,这个时候就需要自己搭建一个git服务器。 在linux上面搭建git服务器是一件非常轻松的事情,只需要按照以下几步就能完成。为了确保整个过程的顺利,最好新创建一个名为git的账号,再使用该账号进行配置 1.安装git 在linux系统中,git安装只
5011 0
【inode】Linux服务器inode索引节点用满原因以及解决方法
系统出现异常 我们团队的阿里云服务器在前几天运行过程中,服务器CPU负载长时间达到100%,并且不能通过ssh连接服务器。 经过重启服务器后对服务器进行连接,发现 服务器上的crontab不能正常运行 php-fpm服务不能正常开启 crontab的报错提示为 ...
2106 0
通用linux接口服务器参数调优
1. 如果需要支撑百万级同时在线数,需要对linux默认内核参数进行调整,我们的典型配置是在 /etc/sysctl.
650 0
linux btp 服务器 端及客户端配置
Server端/etc/ntp.conf Client端/etc/ntp.conf windows ntp安装配置
670 0
不能ssh连接ubuntu linux 服务器 secureCRT不能ssh连接服务器 不能远程ssh连接虚拟机的ubuntu linux
我是用的是secureCRT,远程连接我的虚拟机里面的ubuntu 直接报错,连接不上 1,先分别在windows上ipconfig和ubuntu上ifconfig下 互ping一下,是可以ping通的   2,ubuntu上ssh localhost 发现时没有ssh服务 3.
985 0
jsch ssh服务器调用Linux命令或脚本的小问题
代码如下: public static boolean execshell(String command, String user, String passwd, String host) throws JSchException, IOException { c...
702 0
Linux服务器CPU的一些主要指标说明
LoadRunner 监控到的Linux服务器CPU的一些主要指标说明 CPU的主要指标:CPU UtilizationCPU 使用率,CPU的使用时间百分比,75%以上就比较高了。
1016 0
+关注
追逐时光者
一个热爱捣鼓的全栈软件工程师,擅长于C#,.NET ,.NET Core,Golang,TypeScript,Vue,Uni-app,Angular开发,喜欢搞搞事情,擅长技术总结和管理。有分布式、微服务应用,云原生应用,微信Web应用、小程序,H5移动端应用,企业Web应用。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Nginx 代理系统常用手册》
立即下载
ECS系统指南之Linux系统诊断
立即下载
ECS运维指南 之 Linux系统诊断
立即下载