Linux部署.NetCore站点 使用Supervisor进行托管部署

前言

以前终于在Linux上部署好了.NetCore站点,可是这个站点很是“脆弱”。当个人ssh链接关闭或者我想在当前链接执行其余命令时候就必须关闭dotnet站点的执行程序。这显然不是我想要达到的效果,还好知道有所谓的守护进程这个东西,大多数人都是推荐采起Supervisor来进行Linux上的应用进程管理,这里就开始使用它来对咱们的.NetCore应用进程进行托管吧。json

Linux的守护进程vim

我对于Linux的守护进程的理解是在Linux操做系统上经过守护进程的配置对须要进行守护的应用进行有效管理,如开机自启动、进程崩溃后自动重启等等。总之把它当成一个应用管家,在这个管家里咱们要作好配置,以及能够手动对进程进行启动、中止等等操做。浏览器

这里假设已经将.NetCore应用部署到了Linux,存放的目录为 /root/netcore 应用名称为LinuxWebAppSample1
在站点存放的目录输入pwd能够获取到当前目录:mvc

5e7c7a3ce62839b1f23934326f7dfbaf.png

至于安装sdk、运行时什么的就不说了,部署站点那篇博客已经将详细的顺序和命令都写出来。如今就是万事俱备,只差咱们的守护进程管理软件 Supervisorapp

安装Supervisor

输入下面命令安装Supervisorssh

yum install supervisor

输入下面命令查看是否安装成功网站

supervisord --version
  • 这里须要注意的是安装完Supervisor后咱们的命令是Supervisord 由于Linux上安装成功后Supervisor的服务名称就是
    supervisord.service 详情可经过如下命令查看
cat /usr/lib/systemd/system/supervisord.service

设置supervisor开机启动

sudo systemctl enable supervisord
sudo systemctl start supervisord

进入 supervisor 控制台执行命令

sudo supervisorctl

可以进入 supervisor 控制台,表示服务安装成功,并已成功启动。如需退出supervisor控制台可输入下面命令ui

quit

配置supervisor相关文件

经过上面一些列操做咱们Linux上已经安装好了supervisor这个守护进程服务,但若是须要让它对咱们发布的应用程序作守护进程则须要进行下面一些列操做了。这里以咱们以前部署在/root/netcore 下的LinuxWebAppSample1应用为例。操作系统

supervisord.conf.net

supervisord.conf是supervisor服务的配置文件,经过命令 cat /etc/supervisord.conf 能够查看相关信息
其中有个下面的节点表示supervisor 引入需守护的进程配置文件目录。

[include] files = supervisord.d/*.ini

我是这么理解的,supervisor服务会读取 /etc/supervisord.conf 这个配置文件的include节点,经过该节点获取到须要管理的应用进程
supervisord.d的完整目录是在/etc/supervisord.d/

  • 这么说吧,后续若是须要经过supervisor服务来管理指定应用则必须在/etc/supervisord.d/目录下建立相应的ini配置文件~

supervisor的配置文件详细信息可经过官网查阅 http://supervisord.org

建立站点的守护进程配置文件 LinuxWebAppSample1.ini

vim /etc/supervisord.d/LinuxWebAppSample1.ini

输入i键,切换为vim的写入模式,将下面内容复制进去,而后按esc切换为命令模式  键入":wq"保存退出

#冒号后面为应用名称
[program:LinuxWebAppSample1]
#应用启动命令,须要dotnet的完整路径
command=/usr/bin/dotnet  /root/netcore/LinuxWebAppSample1.dll
#启动的目录,不然应用会报找不到appsetting.json错误
directory=/root/netcore
#服务启动时自动启动,崩溃自动重启
autostart=true
autorestart=true
# .net core mvc应用启动参数,代表是生产环境
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
# 日志输出路径
stdout_logfile=/var/log/supervisor/LinuxWebAppSample1.log
stderr_logfile=/var/log/supervisor/LinuxWebAppSample1.err.log

上面的日志路径能够修改成自定义的路径,记得路径必须真实存在。

重启 supervisor 服务,并进入 supervisorctl

sudo systemctl restart supervisord 
sudo supervisorctl

再次进入到supervisor控制台则表示服务正常。
输入 quit命令后退出来,在Linux控制台输入下面命令查看站点是否已启动

ps -ef | grep dotnet

OK~如今守护进程已经启用了,哪怕关闭当前SSH连接咱们的网站也不会受到影响啦~
如今看下咱们的网站
5906106e9700b15aefb31feb9e937933.png

supervisor管理界面

supervisor不得不说很是贴心,它还提供了一个网站可让咱们在客户端浏览器上对咱们的守护进程进行管理。
首先输入下面命令,重启下supervisor

systemctl enable supervisord.service
systemctl start supervisord.service
systemctl status supervisord.service

修改下supervisord.conf配置文件,这一步很是重要。

vim /etc/supervisord.conf

经过vim的查找命令

:/[inet_http_]

找到下图的节点
26fd02ea4addda05b2b2309481f88697.png

输入i键切换成写入模式,将inet_http_server节点的注释去掉,port更改成 port=*:9001

修改为功后输入下面命令从新加载配置文件

supervisorctl reload

而后就能够在客户端经过ip地址加端口号访问supervisor的管理界面了。效果以下图

f4e95ecf90813881942b8889db0bf97d.png

相关文章
相关标签/搜索