supervisor 介绍,启动uwsgi失败,端口被占用
# 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失败,端口被占用相关推荐
- zookeeper启动时报8080 端口被占用
目录 (1)删除jetty. (2)修改端口. (3)停用这个服务, zookeeper在启动的时候报错8080 端口被占用 zookeeper启动时报8080 端口被占用,导致启动失败.特别是服务器 ...
- SpringBoot项目启动,80端口被占用解决方法
SpringBoot项目搭建完成后,首次启动报出Apache80端口被占用,我上网查询了别人的解决方法对我的情况都不起作用,所以我总结了一下我的解决方法. 注:我使用的编译工具为SpringToolS ...
- Tomcat 启动时报443端口被占用
Tomcat 启动时报443端口被占用,解决办法: win + r 输入cmd 在黑窗口输入: netstat -ano 找到443端口被使用的PID 再输入:(要输入半角双引号) tasklist| ...
- Linux调整随机端口范围(服务器启动失败 端口被占用)
问题描述 博主最近在工作中遇到了问题,服务器启动不起来,bug显示端口被占用. 端口是被connect端给占用了,非listen端. 原因分析: 经过调查发现,由于同一台主机上开启的服务器太多,导致生 ...
- linux下apache端口被占用,【linux】下Apache无法启动(8080端口被占用)
Linux下8080端口被占用,apache无法启动. 打开终端输入netstat -lnp|grep 8080 发现竟然是tcp6 占用里,因此ipv6启用占用了端口. 1.打开/etc/sysct ...
- 启动ActiveMQ时报端口被占用异常
配置好ActiveMQ后,前几次都启动成功.有一天启动时发现启动不成功,查看报错日志发现出现如下提示: Failed to start Apache ActiveMQ (localhost, ID:* ...
- Zookeeper 3.5启动时 8080端口被占用
今天闲来无事,学习Zookeeper,下载了Zookeeper的最新版本3.5.启动以后显示: ZooKeeper JMX enabled by default Using config: /opt/ ...
- 解决nginx无法启动的问题——端口被占用
一段时间没使用nginx后,发现无法启动 问题: 输入nginx -tc /etc/nginx/nginx.conf 显示正常 但是输入 systemctl reload nginx 提示 Job f ...
- 我的世界服务器名称被占用,【求助】【紧急】【大神】水桶服务器启动后显示端口被占用...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我的世界水桶服务器设置服务ip后显示端口被占用,但是不设置服务ip会影响使用. 具体如下,改端口没用: 229 recipes 27 achievemen ...
最新文章
- 怎么去大蒜味(一定要看拉) - 生活至上,美容至尚!
- 企业内网中的WSUS更新服务 服务器连接到Microsoft Update来获取更新程序
- Istio 网关中的 Gateway 和 VirtualService 配置深度解析
- Spring Boot-使用JDBC连接并检索数据库(Mysql在Docker中)
- Redis数据结构之集合
- Ubuntu中ssh远程报错:packet_write_wait: Connection to 192.168.163.190 port 22: Broken pipe lost connection
- IEWebBrowser
- 程序员揭秘 一些鲜为人知的编程真相
- python的作用域分别有几种_Python作用域和命名空间
- SVN 版本回退 命令行
- 增粉的各种方法【微信 / 微博 增加粉丝的108种方法】
- 322. Coin Change
- Hadoop报错Permissions incorrectly set for dir /tmp/hadoop-LeiHanhan/nm-local-dir/filecache, should be
- 【Xmy的第一次Python】
- 西门子1200PLC模拟量测温案例
- 【射频知识】吸波材料
- I2C总线时序以及ACK和NACK(NAK),SCL被从机拉低?
- Azure Messaging
- Ra1nusb越狱的原理解释与实现方式
- springboot(十)SpringBoot消息中间件RabbitMQ