DotNET Core 多项目部署 运行 方法之一

配置守护进程Supervisor, 让我们的程序能365天24小时不间断运行

通过上面的操作, 我们已经能正常将.NET Core程序发布到CentOS下来, 但是发布过程中我们也发现了问题, 就是.NET Core不能自动的运行, 一旦我们的命令行工具关掉, 发布的程序就不能访问了;

是不是能安装一个类似于Windows Service一样的服务, 能实时监控程序状态,异常退出时能自动重启。经过各种百度我找到了Supervisor。

Supervisor 是用Python开发的Linux/Unix系统下的一个进程管理工具。它可以使进程(类似Windows Service)脱离终端,变为后台守护进程(daemon)。能实时监控进程状态,异常退出时能自动重启。详细文档请查看官网。

安装Supervisor

yum install python-setuptools

easy_install supervisor

配置Supervisor

①运行supervisord 服务的时候,需要指定 Supervisor 配置文件,所以,先通过如下命令创建目录,以便让 supervisor 成功加载默认配置:

mkdir /etc/supervisor

②目录创建成功后, 通过 echo_supervisord_conf 程序(用来生成初始配置文件,文件名可以自定义)来初始化一个配置文件:

echo_supervisord_conf > /etc/supervisor/supervisord.conf

③通过vim命令修改创建好的supervisord.conf配置信息:

vi /etc/supervisor/supervisord.conf

④最下边找到如下文本片段:

修改为:

该操作的目的是我们创建一个supervisor 进程配置文件加载目录。让supervisor自动加载该目录下 .ini 后缀的文件作为服务配置

为我们部署的.NET Core添加进程配置文件

①创建配置文件SNWebCore.ini 和 SNAPICore.ini(文件名自定义)

 

[program:SNWebCore]                          ;自定义进程名称, 根据自己喜好命名
command=dotnet SN.Web.dll                     ;程序启动命令 使用dotnet 命令
directory=/WebServer                            ;命令执行的目录 你.NET Core 程序存放目录
autostart=true                                ;在Supervisord启动时,程序是否启动
autorestart=true                              ;程序退出后自动重启
startretries=5                                ;启动失败自动重试次数,默认是3
startsecs=1                                   ;自动重启间隔
user=admin                                    ;设置启动进程的用户,默认是root
priority=999                                  ;进程启动优先级,默认999,值小的优先启动
stderr_logfile=/var/log/SNWeb.err.log        ;标准错误日志 路径可以自定义
stdout_logfile=/var/log/SNWeb.out.log        ;标准输出日志  路径可以自定义
environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
stopsignal=INT                                ;请求停止时用来杀死程序的信号

 

[program:SNAPICore]                          ;自定义进程名称, 根据自己喜好命名
command=dotnet SN.API.dll                     ;程序启动命令 使用dotnet 命令
directory=/ApiServer                            ;命令执行的目录 你.NET Core 程序存放目录
autostart=true                                ;在Supervisord启动时,程序是否启动
autorestart=true                              ;程序退出后自动重启
startretries=5                                ;启动失败自动重试次数,默认是3
startsecs=1                                   ;自动重启间隔
user=admin                                    ;设置启动进程的用户,默认是root
priority=999                                  ;进程启动优先级,默认999,值小的优先启动
stderr_logfile=/var/log/SNAPI.err.log        ;标准错误日志 路径可以自定义
stdout_logfile=/var/log/SNAPI.out.log        ;标准输出日志  路径可以自定义
environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
stopsignal=INT                                ;请求停止时用来杀死程序的信号

 

②在/etc/supervisor/目录下创建一个文件夹conf.d: mkdir /etc/supervisor/conf.d

将刚创建的配置文件SNWebCore.ini和SNAPICore.ini移到conf.d文件夹下

 

启动 Supervisor 服务

supervisord -c /etc/supervisor/supervisord.conf

这个时候, 我们已经不需要使用dotnet命令运行程序, 同样可以访问我们部署的.NET Core程序了

配置Supervisor开机启动

①进入/usr/lib/systemd/system/目录,并创建supervisord.service文件(或者在本地写好了再通过ftp工具传输到指定目录下)

vi /usr/lib/systemd/system/supervisord.service

[Unit]
Description=Supervisor daemon
 
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/ supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
 
[Install]
WantedBy=multi-user.target

 

②设置开机启动

systemctl enable supervisord.service

systemctl daemon-reload

③重启,测试是否可以开机自启

posted on 2019-05-07 14:15  ayn  阅读(336)  评论(0)    收藏  举报

导航