Centos7运行NETCore完整教程(四):Supervisor
目录
1.介绍Supervisor
Supervisor 是用 Python 开发的 Linux/Unix 系统下的一个进程管理工具。它可以使进程脱离终端,变为后台守护进程(daemon)。实时监控进程状态,异常退出时能自动重启。
NETCore目前存在三个问题
问题1:NETCore目前在终端dotnet运行,如果关闭终端则NETCore应用被关闭,从而导致应用无法访问。
问题2:如果NETCore进程意外终止那么需要人为进行再次启动,往往这种操作都不够及时。
问题3:如果服务器宕机或需要重启我们则还是需要进入终端dotnet运行。
以上问题就需要用Supervisor来解决。
2.安装Supervisor
打开终端,切换到root用户,执行以下指令,安装
yum install python-setuptools
easy_install supervisor
3.配置Supervisor
1.先创建Supervisor配置文件的目录
mkdir /etc/supervisor
2.通过 echo_supervisord_conf 指令(用来生成初始配置文件,文件名可以自定义)来初始化一个配置文件:
echo_supervisord_conf > /etc/supervisor/supervisord.conf
3.通过vim命令修改创建好的supervisord.conf配置信息,或有视图界面的直接打开编辑
vi /etc/supervisor/supervisord.conf
文件内容末尾找到以下内容进行修改
;[include]
;files = relative/directory/*.ini
改成以下内容,注意要把“;”去掉
[include]
files = /etc/supervisor/conf.d/*.conf
即,把注释去除、设置/etc/supervisor/conf.d
为 Supervisor 进程配置文件加载目录。
这样,Supervisor 会自动加载该目录下.conf
后缀的文件作为共同服务配置。Supervisor 管理的每个进程单独写一个配置文件放在该目录下,supervisord.conf
配置文件中保留公共配置。
4.通过以下指令,创建目录,添加配置文件
mkdir /etc/supervisor/conf.d
cd /etc/supervisor/conf.d
touch netcore.conf
ll
通过vi指令或视图界面编辑netcore.conf,添加以下配置内容(分号后面的是注释,注意看注释,免得配置错了):
[program:NETCore] ;自定义进程名称, 根据自己喜好命名
command=dotnet GDSMPlateForm.dll ;程序启动命令 使用dotnet 命令(dll是你的项目文件)
directory=/root/Documents/NETCore ;命令执行的目录 你.NET Core 程序存放目录
autostart=true ;在Supervisord启动时,程序是否启动
autorestart=true ;程序退出后自动重启
startretries=5 ;启动失败自动重试次数,默认是3
startsecs=1 ;自动重启间隔
user=root ;设置启动进程的用户,默认是root
priority=999 ;进程启动优先级,默认999,值小的优先启动
stderr_logfile=/etc/supervisor/log/GDSMPlateForm.err.log ;标准错误日志 路径可以自定义,文件夹要建好
stdout_logfile=/etc/supervisor/log/GDSMPlateForm.out.log ;标准输出日志 路径可以自定义,文件夹要建好
environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
stopsignal=INT ;请求停止时用来杀死程序的信号
5.启动supervisor服务
supervisord -c /etc/supervisor/supervisord.conf
如果出现以下情况:
表示监听的端口被占用了,将占用端口的程序关了或者重启系统再尝试启动supervisor服务。
成功启动后,我们就不需要用dotnet命令运行程序, 同样可以访问我们部署的.NET Core程序了。
4.开机启动Supervisor服务
1.进入/usr/lib/systemd/system/目录
cd /usr/lib/systemd/system/
2.创建自定义配置文件supervisord.service
touch supervisord.service
3.编辑supervisord.service文件,有视图界面就直接打开编辑
vi supervisord.service
4.添加以下内容,保存退出
[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
5.设置开机启动
systemctl enable supervisord.service
6.检测是否配置成功
systemctl is-enabled supervisord
出现enabled表示设置成功,也可重启服务器验证。
重启Supervisor服务,更新站点的时候需要重启下该服务
supervisorctl reload