# 1. supervisor 介绍
supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

# 2. 安装
系统环境为: ubuntu 16.04
直接通过apt 安装即可
```shell
root@U-996-web:~# apt install supervisor
```

[↑返回顶部↑](#supervisor)

# 3. 配置文件说明
配置文件,都在 /etc/supervisor/conf.d/下,如果想增加一个新的任务,在此目录下,新建xx.conf 文件,并填写内容即可

```shell
[program:agency_pay_main_api]
directory = /opt/agency/enabled/app/
command = /home/ubuntu/.pyenv/versions/agency/bin/uwsgi -i main_uwsgi.ini
user =root
autorestart = true
redirect_stderr = true
stdout_logfile = /var/log/agency_pay/main_uwsgi.log
stopsignal = QUIT
```

配置项说明:
> program: 任务的名字
> directory:任务执行时,所在目录
> command:任务的启动命令,supervisor 将执行这条命令,来启动任务
> user:以哪个用户来启动任务
> autorestart: 自动重启,当进程挂了之后
> stdout_logfile: 日志文件
> stopsignal: 关闭服务时,向进程发送的信号

[↑返回顶部↑](#supervisor)

# 4. supervisor 进程说明
supervisor  是c/s方式的进程管理工具,
> 后台进程为 supervisord
> 默认启动方式为 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
> 直接执行  supervisord 也可以启动

> 前台程序为 supervisorctl
> 通过访问var/run/supervisor.sock,来跟 supervisord 交互(在supervisord.conf 配置文件中有写)

[↑返回顶部↑](#supervisor)

# 5. supervisorctl 指令说明
控制重启停止加载等,都是通过supervisorctl 来输入的
先执行supervisorctl 会进入控制台,之后输入命令即可

```shell
root@U-996-web:~# supervisorctl
常用指令
> status 查看状态
> reload 重新加载配置
> start xxx 启动某个任务
> stop xxx 停止某个任务
> restart xxx 重启某个任务
> start all 启动所有任务
> stop all 停止所有任务
> restart all 重启所有任务
```

[↑返回顶部↑](#supervisor)

# 6. 实战问题:
## 6.1 supervisor 启动 uwsgi 进程失败
现象:实战中使用supervisor 启动uwsgi 网站进程的时候,uwsgi启动多次,导致异常,端口重复绑定的问题(直接uwsgi uwsgi.ini 启动没问题)

问题根源:
uwsgi.ini 中制定了日志输出
> daemonize = /var/log/uwsgi/uwsgi_wechat.log

supervisor 的 .conf 配置文件中,也指定了输出log文件
> stdout_logfile = /var/log/wechat/uwsgi.log

这两个是冲突的
解决办法:
1. 把uwsgi.ini 中的daemonize 日志文件注释掉,如果uwsgi.ini 中有 pidfile = run_uwsgi.pid,也要一并注释掉
2. 有冲突的log文件也要先删除掉
3. 重新加载superver
```shell
root@U-996-web:~# supervisorctl  reload
```

[↑返回顶部↑](#supervisor)

supervisor 介绍,启动uwsgi失败,端口被占用相关推荐

  1. zookeeper启动时报8080 端口被占用

    目录 (1)删除jetty. (2)修改端口. (3)停用这个服务, zookeeper在启动的时候报错8080 端口被占用 zookeeper启动时报8080 端口被占用,导致启动失败.特别是服务器 ...

  2. SpringBoot项目启动,80端口被占用解决方法

    SpringBoot项目搭建完成后,首次启动报出Apache80端口被占用,我上网查询了别人的解决方法对我的情况都不起作用,所以我总结了一下我的解决方法. 注:我使用的编译工具为SpringToolS ...

  3. Tomcat 启动时报443端口被占用

    Tomcat 启动时报443端口被占用,解决办法: win + r 输入cmd 在黑窗口输入: netstat -ano 找到443端口被使用的PID 再输入:(要输入半角双引号) tasklist| ...

  4. Linux调整随机端口范围(服务器启动失败 端口被占用)

    问题描述 博主最近在工作中遇到了问题,服务器启动不起来,bug显示端口被占用. 端口是被connect端给占用了,非listen端. 原因分析: 经过调查发现,由于同一台主机上开启的服务器太多,导致生 ...

  5. linux下apache端口被占用,【linux】下Apache无法启动(8080端口被占用)

    Linux下8080端口被占用,apache无法启动. 打开终端输入netstat -lnp|grep 8080 发现竟然是tcp6 占用里,因此ipv6启用占用了端口. 1.打开/etc/sysct ...

  6. 启动ActiveMQ时报端口被占用异常

    配置好ActiveMQ后,前几次都启动成功.有一天启动时发现启动不成功,查看报错日志发现出现如下提示: Failed to start Apache ActiveMQ (localhost, ID:* ...

  7. Zookeeper 3.5启动时 8080端口被占用

    今天闲来无事,学习Zookeeper,下载了Zookeeper的最新版本3.5.启动以后显示: ZooKeeper JMX enabled by default Using config: /opt/ ...

  8. 解决nginx无法启动的问题——端口被占用

    一段时间没使用nginx后,发现无法启动 问题: 输入nginx -tc /etc/nginx/nginx.conf 显示正常 但是输入 systemctl reload nginx 提示 Job f ...

  9. 我的世界服务器名称被占用,【求助】【紧急】【大神】水桶服务器启动后显示端口被占用...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我的世界水桶服务器设置服务ip后显示端口被占用,但是不设置服务ip会影响使用. 具体如下,改端口没用: 229 recipes 27 achievemen ...

最新文章

  1. 怎么去大蒜味(一定要看拉) - 生活至上,美容至尚!
  2. 企业内网中的WSUS更新服务 服务器连接到Microsoft Update来获取更新程序
  3. Istio 网关中的 Gateway 和 VirtualService 配置深度解析
  4. Spring Boot-使用JDBC连接并检索数据库(Mysql在Docker中)
  5. Redis数据结构之集合
  6. Ubuntu中ssh远程报错:packet_write_wait: Connection to 192.168.163.190 port 22: Broken pipe lost connection
  7. IEWebBrowser
  8. 程序员揭秘 一些鲜为人知的编程真相
  9. python的作用域分别有几种_Python作用域和命名空间
  10. SVN 版本回退 命令行
  11. 增粉的各种方法【微信 / 微博 增加粉丝的108种方法】
  12. 322. Coin Change
  13. Hadoop报错Permissions incorrectly set for dir /tmp/hadoop-LeiHanhan/nm-local-dir/filecache, should be
  14. 【Xmy的第一次Python】
  15. 西门子1200PLC模拟量测温案例
  16. 【射频知识】吸波材料
  17. I2C总线时序以及ACK和NACK(NAK),SCL被从机拉低?
  18. Azure Messaging
  19. Ra1nusb越狱的原理解释与实现方式
  20. springboot(十)SpringBoot消息中间件RabbitMQ

热门文章

  1. 华为设备Voice VLAN配置命令
  2. Vue基础语法必知必会
  3. caffe学习之——CMakeList.txt内容详解
  4. WechatPay-API-v3接口规则
  5. 殊荣双至,天翼云边缘计算再获两项大奖!
  6. 微信小程序实现store功能
  7. 《NFL橄榄球》:洛杉矶公羊·橄榄1号位
  8. Mysql Workbench connection ssl not enable问题解决
  9. 常见实用网站集合(行业研究/政策研究/学习/办公/设计/编程)
  10. 一只喵的西行记-10 哲学家H+计划