.Net Core Linux部署之进程守护 Supervisor 安装配置
1.Supervisor 安装
//安装easy_install yum install python-setuptools //安装Supervisor easy_install supervisor
2.配置 Supervisor
//创建配置文件 mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf //指定配置文件 supervisord -c /etc/supervisor/supervisord.conf //打开配置文件 vim /etc/supervisor/supervisord.conf //在最后增加配置 [include] files=conf.d/*.conf
3.程序进程配置
//创建配置文件目录 mkdir /etc/supervisor/conf.d/ //新建配置文件 vim /etc/supervisor/conf.d/testdotnetcore.conf
testdotnetcore.conf文件中写入以下内容:
[program:testdotnetcore] command=dotnet TestDotNetCore.dll directory=/www/test/ environment=ASPNETCORE__ENVIRONMENT=Production user=root stopsignal=INT autostart=true autorestart=true startsecs=1 stderr_logfile=/var/log/testdotnetcore.err.log stdout_logfile=/var/log/testdotnetcore.out.log
说明:
[program:testdotnetcore] //要执行的命令 command=dotnet TestDotNetCore.dll //命令执行的目录 directory=/www/test/ //环境变量 environment=ASPNETCORE__ENVIRONMENT=Production //进程执行的用户身份 user=root stopsignal=INT //是否自动启动 autostart=true //是否自动重启 autorestart=true //自动重启间隔 startsecs=1 //标准错误日志 stderr_logfile=/var/log/testdotnetcore.err.log //标准输出日志 stdout_logfile=/var/log/testdotnetcore.out.log
保存退出,并执行:
//重新加载配置 supervisorctl reload
到此程序应该已经启动。
4.设置开机启动
//打开文件 vim /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 shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
说明:
[Unit] //服务描述 Description=Supervisor daemon //描述服务类别 After=rc-local.service [Service] //设置进程的启动类型, 必须设为 simple, forking, oneshot, dbus, notify, idle 之一 //如果设为 forking , 那么表示 ExecStart= 进程将会在启动过程中使用 fork() 系统调用 Type=forking //ExecStart 启动命令 ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf //ExecStop 停止命令 ExecStop=/usr/bin/supervisorctl shutdown //ExecReload 重启命令 ExecReload=/usr/bin/supervisorctl reload //设置在单元停止时,杀死进程的方法。 取值范围如下: control-group, process, mixed, none //process 表示仅杀死主进程 KillMode=process //当服务进程正常退出、异常退出、被杀死、超时的时候, 是否重新启动该服务 //对于需要长期持续运行的守护进程, 推荐设为 on-failure 以增强可用性 Restart=on-failure //重启服务前暂停多长时间 //默认值是100毫秒(100ms)。 如果未指定时间单位,那么将视为以秒为单位 RestartSec=30s [Install] WantedBy=multi-user.target
更多说明参考:http://www.jinbuguo.com/systemd/systemd.service.html
http://www.jinbuguo.com/systemd/systemd.kill.html
保存退出并执行:
//设置开机启动 systemctl enable supervisord.service //查看设置是否生效 systemctl is-enabled supervisord.service
5.其它辅助
//关闭所有任务 supervisorctl shutdown //启动所有进程 supervisorctl start all //停止所有进程 supervisorctl stop all //启动某一个特定进程,program-name为[program:xx]中的xx supervisorctl start program-name //停止某一个特定进程,program-name为[program:xx]中的xx supervisorctl stop program-name //重启所有 supervisorctl restart all //重启某一进程,program-name为[program:xx]中的xx supervisorctl reatart program-name //查看所有任务状态 supervisorctl status //查看报错日志 more /var/log/testdotnetcore.err.log //查看运行日志 more /var/log/testdotnetcore.out.log
文章出处:http://www.cnblogs.com/anech/p/6836231.html