引言:

在 web 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常、报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务。所以,就需要一个工具,时刻监控 web 应用的运行情况,管理该进程。Supervisor 就是解决这种需求的工具,可以保证程序崩溃后,重新把程序启动起来等功能。

Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动、重启(自动重启程序)、关闭进程(不仅仅是 Python 进程)。同样,它也不仅仅是监控web,还能对python的一切脚本起着重启的作用

安装Supervisor

 sudo apt install supervisor

配置文件

另外可以查看是否安装成功,查看进程号:

pgrep supervisord

若出现随机进程号则表示已经启动并安装成功。我们先补充生成的默认文件:

echo_supervisord_conf > /etc/supervisor/supervisord.conf

安装好之后,不出问题的话supervisor服务已经启动完成。
配置文件在/etc/supervisor/conf.d/路径下,
举例再conf.d下创建对应的项目的配置文件
我这里配置了app.conf和djangotest.conf

app.conf文件,其中app.py文件就放在目录/home/szr/temp/下面

[program:pmapp]
command=python3 /home/szr/temp/app.py
autorestart=true ;默认自动启动
stdout_logfile=/home/szr/temp/supervisord_stdout.log ;指定日志文件路径
stderr_logfile=/home/szr/temp/supervisord_stderr.log ;指定日志文件路径
[supervisord]

djangotest.conf文件,其中manage.py文件就放在目录/home/szr/lzztes/下面

[program:djangotest]
command=/usr/bin/python3.8 /home/szr/lzztes/manage.py runserver 0.0.0.0:8000
autostart=true
stderr_logfile=/home/szr/lzztes/logs/err.log
stdout_logfile=/home/szr/lzztes/logs/out.log
startretries=2
stopasgroup=true
killasgroup=true
environment=PYTHONPATH="/home/szr/.local/lib/python3.8/site-packages:/usr/lib/python3/dist-packages";配置同一个环境变量下有多个值
#项目路径 directory to cwd to before exec supervisor在执行前会切换到当前目录下 根据自己的情况配置
# directory=/[supervisord]

其中可能需要先在指定目录下/home/szr/lzztes/logs/创建一个out.log 否则可能会报错找不到。

使用

第一次启用

sudo supervisord -c /etc/supervisor/conf.d/app.conf

或者使用

sudo supervisord -n -c /etc/supervisor/conf.d/app.conf

可以看见在前台看见运行信息,seccess

或者必须进入到目录:/etc/supervisor/

 sudo supervisorctl
status    查看状态
update    只更新变化添加的配置
reload    更新所有项目的配置 并重启所有项目
start+项目名称    启动项目
restart+项目名称    重新启动项目
stop+项目名称   停止项目
stop all    停止所有项目名称

以下是例子



当kill进程的时候 supervisor会守护这些进程,并且重启

以app.py为例子,sudo kill -15 16221

之后supervisor进程守护,又重启了app.py在端口号 16237

ubuntu中supervisor的安装和学习相关推荐

  1. lede更改软件源_Linux的上传和下载——Ubuntu中软件的安装和ftp服务器的搭建

    [Linux操作系统]Linux的上传和下载--Ubuntu中软件的安装和ftp服务器的搭建 学习完Linux终端命令以后,我们现在要考虑的是怎么实现Linux中文件的上传和下载,这就是我们本篇博客要 ...

  2. VM之Linux:Linux的Ubuntu中,解决安装后屏幕太小的问题

    VM之Linux:Linux的Ubuntu中,解决安装后屏幕太小的问题 导读 最讨厌网上回答的啰嗦和不清晰!本人最讨厌啰嗦,直接上来,图文表达,简单明了,快速解决问题!最讨厌网上答案一大片的废话和没有 ...

  3. 【转】Ubuntu中SVN客户端安装+使用

    转自:Ubuntu中SVN客户端安装+使用_三少GG-CSDN博客 1. 安装 svn客户端: apt-get install subversion,然后根据提示一步一步,就完成了 svn的安装.当然 ...

  4. Ubuntu中anaconda的安装及使用

    Ubuntu中anaconda的安装及使用 (1) 在anaconda官方网站中下载相应的包. 网址>>https://www.anaconda.com/download/#linux ( ...

  5. ssh重装ubuntu_ubuntu光盘安装ssh Ubuntu中ssh的安装与用法 - Linux - 服务器之家

    ubuntu光盘安装ssh Ubuntu中ssh的安装与用法 发布时间:2017-04-05 来源:服务器之家 SSH分客户端openssh-client和openssh-server 如果你只是想登 ...

  6. Linux kodi添加中文,如何在Ubuntu中通过PPA安装Kodi 18.2并设置中文界面

    如何在Ubuntu中通过PPA安装Kodi 18.2并设置中文界面 Kodi "Leia" 18.2已经发布,其中包含许多错误修复和性能改进. 以下是如何在Ubuntu 16.04 ...

  7. Ubuntu中下载和安装Eclipse

    [背景] 需要在Ubuntu下弄一个Eclipse项目的编译. 其是C语言的,嵌入式项目. 所以,先要在Ubuntu中,下载和安装Eclipse. [折腾过程] 1.Ubuntu下,用Firefox打 ...

  8. ubuntu chrome java插件_在Ubuntu中为Chrome安装Java插件

    问题描述 我有JDK,在Ubuntu中一切正常,我是说IDE,一些应用程序,我能够开发和运行项目,但是我在Chrome中收到一条消息:Java(TM) is required to display t ...

  9. Ubuntu 中sendmail 的安装、配置与发送邮件的具体实现

    一.安装 ubuntu中sendmail函数可以很方便的发送邮件,ubuntu sendmail先要安装两个包. 必需安装的两个包: 代码  sudo apt-get install sendmail ...

最新文章

  1. oracle10个,OracleDBA新手经常碰到的10个Oracle错误
  2. 【 Verilog HDL 】case, casez, casex 之干货总结
  3. python cgitb_python CGI 编程实践
  4. 在Sharepoint 2007 整合Discuz Nt论坛
  5. mpeg b帧 编码 matlab,一种基于压缩域的镜头检测算法
  6. Hibernate持久化类与主键生成策略
  7. win10安装misql8_Windows10下安装MySQL8.0
  8. C++ 刷算法题笔记
  9. l455在线清零服务器,爱普生epson l455清零软件官方版
  10. Windows扫雷游戏python
  11. 基于Java医院网上预约挂号系统设计与实现(含源代码)
  12. web网页设计实例作业 我的家乡- 达州(4页) HTML+CSS+JavaScript dreamweaver作业静态HTML网页设计模板
  13. python 把京东订单,推送到测试环境,提供便利
  14. 语音增强算法研究系列笔记 - 语音噪声分类及特点
  15. 百度云盘照片导入华为相册里_百度网盘传送列表怎样导入手机相册_手机百度网盘下载到相册...
  16. PC与西门子PLC通讯免费软件Libnodave
  17. mong命令学习记录
  18. 初夏小谈:叩响C++世界的大门
  19. 基于 SSR 的预渲染首屏直出方案
  20. echarts-----修改折线图背景横线

热门文章

  1. Go Timer使用方法
  2. MySQL下使用Inplace和Online方式创建索引的教程
  3. 【Quartz】问题记录注意事项【四】
  4. SQL Server灾难恢复方法
  5. Android电池电量更新 - BatteryService(转)
  6. JAVA中的Hashset类
  7. position:relative 与 position:absolute
  8. MS SQL SERVER中备份所有数据库
  9. javascript 之----eval的用法
  10. 做个高颜值的优秀按钮,用 CSS3 实现社交按钮动画