CentOS 7下.net core安装进程守护Supervisor
Supervisor主要用于解决后台运行及服务器重启的问题
安装Supervisor
yum install python-setuptools easy_install supervisor #安装Supervisor
若安装失败,可采用:
yum install epel-release yum install -y supervisor
配置Supervisor
mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf #配置 Supervisor vi /etc/supervisor/supervisord.conf
文件的最后
;[include] ;files = relative/directory/*.ini
改成(【注意】去掉;且不能有空格)
[include] files = conf.d/*.conf
配置应用(netcore为应用名称)
mkdir /etc/supervisor/conf.d --创建conf.d文件夹 vi /etc/supervisor/conf.d/netcore.conf
输入如下
[program:netcore] command=dotnet mhqtalks.dll ; #(注意)运行程序的命令 directory= /home/netcore/mhqtalks/ ; #(注意 注意)对应的你的项目的存放目录,这个地方好多初学者搞错!!! autorestart=true ; #程序意外退出是否自动重启 stderr_logfile=/var/log/netcore.err.log ; #错误日志文件 stdout_logfile=/var/log/netcore.out.log ; #输出日志文件 #environment=ASPNETCORE_ENVIRONMENT=Production ; #进程环境变量 user=root ; #进程执行的用户身份 stopsignal=INT
运行Supervisor
supervisord -c /etc/supervisor/supervisord.conf
配置Supervisor开机启动
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 #来验证是否为开机启动
Supervisor其他命令
命令 说明 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都不会自动重启常见问题
应用更新后怎么重启Supervisor
ps -ef | grep supervisord
kill -9 pid #结束进程
supervisord -c /etc/supervisor/supervisord.conf