引言:

在 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. 【转载】闲话操作系统(二)
  2. Java集合篇:fail-fast机制 与 fail-safe
  3. Java学习教程整理
  4. mysql中数据库覆盖导入的几种方式
  5. 供应商寄售库存管理_【论文解读】物流联合外包下库存管理模式对供应链运作的影响...
  6. GIS-013-Cesium Terrain 数据生成
  7. 转载自《读者》--您也吻我一下好吗
  8. 【熊猫多模式站群开发日志】权限控制拦截器
  9. ElasticSearch 2 (20) - 语言处理系列之如何开始
  10. vs2012生成的项目,如何在只装有VS2010的电脑上打开
  11. JAVA中的按值传递
  12. cpu核心 线程 进程_科个普:进程、线程、并发、并行
  13. openssl 升级到OpenSSL 1.0.1g 修复HEARTBEATS漏洞
  14. yuki翻译器钩子_最新YUKI GALGAME翻译器下载地址电脑版-CC软件
  15. 北京航空航天大学计算机学院保研,北京航空航天大学计算机学院(专业学位)计算机技术保研...
  16. java毕业生设计租车系统计算机源码+系统+mysql+调试部署+lw
  17. 无法完成操作,因为文件包含病毒或潜在的垃圾软件解决方案
  18. 三维层次聚类分析matlab,聚类分析(三) 层次聚类及matlab程序
  19. Don Box博客中文版入驻CSDN,志愿者翻译招募中....
  20. 前端多页面的代码压缩和混淆

热门文章

  1. 十份图表改变您对大数据增长的观点
  2. Brocade NOS学习笔记(第一章——第三章)
  3. css3 上线圆角效果
  4. FastReport人民币大写转换
  5. java调度:(四) spring中使用quartz的配置文件.
  6. 14门教程带你全面入门Linux
  7. 中继误码率 matlab,关于误码率的问题 急!!!!!
  8. python json转换字典_Python json转字典字符方法实例解析
  9. 6个座位办公室最佳位置_一天中6个最佳的护肤时间,你知道几个?
  10. python文件处理seek_python文件操作 seek(),tell()