使用守护服务(Supervisor)保持dotnet进程的运行

 

在享受.Net Core给我们带来的跨平台之后,我们都会发现一个问题,就是dotnet的进程是会话级别的。

当我们与服务器的会话结束之后或者使用Ctrl+C结束dotnet都会结束掉dotnet进程。

在这里记录一下如何使用Supervisor,主要是怎么配置Supervisor

安装Supervisor的运行环境,Python

yum install python-setuptools

安装Supervisor

easy_install supervisor

提示

Finished processing dependencies for supervisor

安装完成!

下一步需要把Supervisor的配置文件导出到/etc/supervisor/supervisord.conf

echo_supervisord_conf

命令可以打印出Supervisor默认的配置文件

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

创建目录并创建配置文件

修改supervisord.conf底部的配置信息

vi /etc/supervisor/supervisord.conf

 

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

修改为

[include]
files = conf.d/*.conf

把前面的;去掉 修改要加载的进程配置信息的路径

创建conf.d目录

mkdir /etc/supervisor/conf.d

创建一个要守护的进程配置文件,在这里叫 TestCore.conf

vi /etc/supervisor/conf.d/TestCore.conf

把配置代码复制到TestCore.conf文件中

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

 

 

 

 

 运行Supvisor

supervisord -c /etc/supervisor/supervisord.conf

查看是不是生效

supervisorctl status

当看到我们刚刚创建的TestCore守护进程 RUNNING说明他在运行中,可以用浏览器去访问一下试试

现在已经通过 Supervisor启动了dotnet TestCore.dll

Supervisor的CTL命令

supervisorctl 是 supervisord的命令行客户端工具

 

查看所有进程的状态:

supervisorctl status

停止TestCore(all为所有):

supervisorctl stop TestCore

supervisorctl stop all

 

启动TestCore(all为所有):

supervisorctl start TestCore

supervisorctl start  all

重启TestCore(all为所有):

supervisorctl restart TestCore

supervisorctl restart  all

重新加载配置文件(supervisord.conf):

supervisorctl update

重启配置中的进程:

supervisorctl reload

 

学习笔记,也希望能帮到需要的朋友!

 配置Supervisor开机启动

新建一个“supervisord.service”文件

vi /usr/lib/systemd/system/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

执行命令:systemctl enable supervisord

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

 

posted @ 2018-10-28 16:45  Tenk的园子  阅读(1521)  评论(0编辑  收藏  举报