阿里云ECS配置之supervisor


supervisor是管理进程的一大杀器,就算应用出现异常停止掉了,也会帮忙自动重启,下面我们就介绍一下安装以及简单使用。

安装

yum install python-setuptools
easy_install supervisor

配置


  • 创建文件夹及配置文件
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
  • 修改supervisord.conf的内容
    在文件结尾[include]节点处把;files = relative/directory/*.ini改为
files = /etc/supervisor/conf.d/*.conf
  • 在/etc/supervisor/下创建conf.d文件夹,及ProjectName.conf(以项目名称命名的)

  • 编辑项目配置文件

[program: ProjectName]
command=dotnet ProjectName.dll ; 运行程序的命令
directory=/root/Publishing/PublishOutput/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
autostart=true ; 是否自动启动
stderr_logfile=/var/log/ProjectName.err.log ; 错误日志文件
stdout_logfile=/var/log/ProjectName.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=1 ; 自动重启间隔

启动supervisor,并检查进程

supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep supervisor

常用命令

sudo service supervisor stop 停止supervisor服务
 
sudo service supervisor start 启动supervisor服务
 
supervisorctl shutdown #关闭所有任务
 
supervisorctl stop|start program_name #启动或停止服务
 
supervisorctl status #查看所有任务状态

supervisorctl reload #修改配置文件后,重新加载生效

配置开机自启动

  • 在/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
  • 检查
systemctl is-enabled supervisord

常见问题

  • 解决unix:///tmp/supervisor.sock no such file的问题
    1、打开配置文件
vim  /etc/supervisor/supervisord.conf

这里把所有的/tmp路径改掉,/tmp/supervisor.sock 改成 /var/run/supervisor.sock,/tmp/supervisord.log 改成 /var/log/supervisor.log,/tmp/supervisord.pid 改成 /var/run/supervisor.pid 要不容易被linux自动清掉

2、修改权限

sudo chmod 777 /run
sudo chmod 777 /var/log

如果没改,启动报错 IOError: [Errno 13] Permission denied: /var/log/supervisord.log'

3、创建supervisor.sock

sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock

4、启动supervisord,注意stop之前的实例或杀死进程

supervisord

5、启动报错

Unlinking stale socket /var/run/supervisor.sock

解决

unlink /var/run/supervisor.sock

6、非ROOT账号运行
···
把supervisord.conf中改成chmod=0766
然后重启supervisord
···

yum 安装

  • yum install -y supervisor
  • systemctl enable supervisord.service
  • systemctl start supervisord.service
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容