近日在学习通过linux部署.netCore,通过Supervisor的守护进程进行服务自动运行,重启。通过网上搜索相关资料,初始配置时,搞的一头雾水,把个人遇到的一些问题整理如下:
第一步:通过命令进行安装Supervisor守护进程,我用的是centos系统
yum install supervisor
安装完成后,在/etc 下生成两个文件,一个是supervisord.conf 配置文件,一个是supervisord.d文件夹,查看配置文件supervisord.conf ,最后一行添加files=/etc/supervisor/conf.d/TestNetCore.conf ,注意:
[include]
files=/etc/supervisor/conf.d/TestNetCore.conf
要启用此代码
这个可以自定义,主要就是包含用户项目配置文件
TestNetCore.conf 文件内容
[program:HelloWebApp] #应用程序名称自己定义
command=dotnet HelloWebApp.dll #要执行的命令
directory=/home/yxd/Workspace/publish #命令执行的目录
environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
user=root #进程执行的用户身份
stopsignal=INT
autostart=true #是否自动启动
autorestart=true #是否自动重启
startsecs=1 #自动重启间隔
stderr_logfile=/var/log/HelloWebApp.err.log#标准错误日志
stdout_logfile=/var/log/HelloWebApp.out.log #标准输出日志
注意:每句话后面不能带有分号“;”,我复制时忽略了这一点,自动带上分号后,服务进程运行时,提示dotnet 失败
保存退出:wq
重新运行supervisord 命令:systemctl restart supervisord ,查看其状态命令:systemctl status supervisord
以上初步配置成功,监守服务进程配置结束,接下来配置开机自启动,服务器宕机重启后,服务进程自动运行,无需人为干预
1.在指定目录下创建文件supervisord.service
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 shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
保存退出
执行以下命令:
systemctl enable supervisord
提示:
Created symlink from /etc/systemd/system/multi-user.target.wants/supervisord.service to /usr/lib/systemd/system/supervisord.service.
验证是否为开机启动:
systemctl is-enabled supervisord
提示:
enabled
表示设置成功!
至此,创建supervisor守护进程完毕。
参考:https://www.cnblogs.com/Hai--D/p/5820718.html
https://www.cnblogs.com/jayjiang/p/12610637.html