Supervisor 类似于windows service一样的服务,能够实时监视程序的运行状态。Supervisor是Python开发的Linux/Unix系统下的一个进程管理工具。所以必须要有python环境,我在安装supervisor前已经安装了python3.**
1.安装supervisor
yum install python-setuptools
easy_install supervisor
yum install supervisor
2.配置supervisor
- 在运行supervisord服务的时候,需要指定Supervisor配置文件,所以需要创建一个文件目录以便让supervisor成功加载默认配置
mkdir /etc/supervisor
- 目录创建成功后通过echo_supervisor_conf程序(用来生成初始配置文件,文件名可以自定义)来初始化一个配置文件:
echo_supervisord_conf > /etc/supervisor/supervisord.conf
- 通过vim命令修改创建好的supervisor.conf配置信息
vi /etc/supervisor/supervisord.conf
在superv.conf中将如下的片段:
修改为:
以上操作的目的是为了创建一个supervisor进程配置文件加载目录,让supervisor自动加载该目录下.ini后缀的文件作为服务配置
3.创建项目,自定义进程的名称
- 创建配置文件AbpMPACore.ini(文件名自定义)
[program:AbpMPACore] ;自定义进程名称, 根据自己喜好命名
command=dotnet AbpMPA.Web.Mvc.dll ;程序启动命令 使用dotnet 命令
directory=/publish ;命令执行的目录 你.NET Core 程序存放目录
autostart=true ;在Supervisord启动时,程序是否启动
autorestart=true ;程序退出后自动重启
startretries=5 ;启动失败自动重试次数,默认是3
startsecs=1 ;自动重启间隔
user=root ;设置启动进程的用户,默认是root
priority=999 ;进程启动优先级,默认999,值小的优先启动
stderr_logfile=/var/log/AbpMPA.err.log ;标准错误日志 路径可以自定义
stdout_logfile=/var/log/AbpMPA.out.log ;标准输出日志 路径可以自定义
environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
stopsignal=INT ;请求停止时用来杀死程序的信号
- 在/etc/supervisor/目录下创建一个文件夹conf.d:
mkdir /etc/supervisor/conf.d
- 将创建好的ini文件放在conf.d目录下
4.启动supervisor服务
supervisord -c /etc/supervisor/supervisord.conf
5.配置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
检查是否自动重启,若出现enabled返回值则证明可以开机自启
systemctl is-enabled supervisord
重启,测试是否可以开机自启
supervisord启动时出现的常见报错:
//unix。。。。。。。
1.检查是否在/etc/supervisor的文件夹下启动
2.是否执行过supervisord -c /etc/supervisor/supervisord.conf命令启动supervisor服务
3.etc/supervisor里面的配置文件是否正确
注:建议在.ini的配置文件路径里尽量不要用中文提示
卸载supervisor
yum -y remove supervisor