`

supervisor 安装、配置、常用命令

 
阅读更多

前言

在 web 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常、报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务。

所以,就需要一个工具,时刻监控 web 应用的运行情况,管理该进程。

Supervisor 就是解决这种需求的工具,可以保证程序崩溃后,重新把程序启动起来等功能。

简介

Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动、重启(自动重启程序)、关闭进程(不仅仅是 Python 进程)。

安装

  1. Ubuntu系统下:apt-get install supervisor,通过这种方式安装后,自动设置为开机启动
  2. 也可以通过 pip install supervisor 进行安装,但是需要手动启动,然后设置为开机启动(不推荐这种安装方式)

Supervisor 配置

Supervisor 是一个 C/S 模型的程序,supervisord 是 server 端,supervisorctl 是 client 端。

supervisord

下面介绍 supervisord 配置方法。supervisord 的配置文件默认位于 /etc/supervisord.conf,内容如下(;后面为注释):

; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file) UNIX socket 文件,supervisorctl 会使用
chmod=0700                       ; sockef file mode (default 0700) socket 文件的 mode,默认是 0700

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) 日志文件,默认是 $CWD/supervisord.log
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) pid 文件
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket 通过 UNIX socket 连接 supervisord,路径与 unix_http_server 部分的 file 一致

; 在增添需要管理的进程的配置文件时,推荐写到 `/etc/supervisor/conf.d/` 目录下,所以 `include` 项,就需要像如下配置。
; 包含其他的配置文件
[include]
files = /etc/supervisor/conf.d/*.conf ; 引入 `/etc/supervisor/conf.d/` 下的 `.conf` 文件

program 配置

program 的配置文件就写在,supervisord 配置中 include 项的路径下:/etc/supervisor/conf.d/,然后 program 的配置文件命名规则推荐:app_name.conf

[program:app] ; 程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作
autorestart=True      ; 程序异常退出后自动重启
autostart=True        ; 在 supervisord 启动的时候也自动启动
redirect_stderr=True  ; 把 stderr 重定向到 stdout,默认 false
environment=PATH="/home/app_env/bin"  ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是使用指定的 virtualenv 环境
command=python server.py  ; 启动命令,与手动在命令行启动的命令是一样的
user=ubuntu           ; 用哪个用户启动
directory=/home/app/  ; 程序的启动目录
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20     ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log

需要注意:

  • 用 supervisord 管理时,gunicorn 的 daemon 选项需要设置为 False
  • 如果启动命令需要包含workon,修改environment参数:environment=PATH="/home/username/.virtualenvs/myproject/bin"

supervisorctl 操作

supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样,这里就不再说了。下面,主要介绍 supervisorctl 操作的常用命令:

输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面(还是纯命令行

分享到:
评论

相关推荐

    supervisor安装文档

    常用命令 - **启动**: 使用 `supervisord -c /etc/supervisord.conf` 来启动 Supervisord 服务。 - **关闭**: 通过 `supervisorctl shutdown` 关闭所有被管理的进程。 - **刷新**: `supervisorctl reload` 用于...

    supervisor

    在本文中,我们将详细探讨如何安装 `Supervisor` 并配置它来监控 `Redis` 和 `Tomcat` 服务器。这两个服务分别是常用的键值存储系统和 Java 应用服务器,它们对于许多 Web 应用来说是至关重要的组件。 ### 一、安装...

    H3C路由器交换机配置命令大全

    - **配置方法**: 下载新的IOS版本文件,并通过命令行或Web界面进行安装。 ### 4. 接口配置 #### 4.1. 接口基础配置 - **定义**: 对设备的各种物理接口进行基本配置,如设置IP地址、启用/禁用接口等。 - **配置方法...

    Python使用Supervisor来管理进程的方法

    #### 五、Supervisor常用命令 - `supervisorctl start <name>`:启动指定的进程。 - `supervisorctl stop <name>`:停止指定的进程。 - `supervisorctl restart <name>`:重启指定的进程。 - `supervisorctl status...

    Ubuntu系统Daphne + Nginx部署Python Django项目精讲【含代码说明】

    - 学习并掌握Nginx的常用命令,如启动、停止、重启、重载配置文件和查看状态。 2. **克隆Django项目**: - 将开发完成的Django项目从线上仓库克隆至服务器,并在Nginx的项目文件夹中放置。 - 创建虚拟环境,激活...

    python-meld3-0.6.10-1.el7.x86_64.zip

    在Supervisor的运行中,Python-Meld3扮演了关键角色,因为它被用作Supervisor配置文件的解析器。 Supervisor是Python编写的一个轻量级进程管理器,它可以监视和控制后台运行的进程,确保它们按预期工作。它支持启动...

    cisco中文配置

    1. **配置一组端口**:在Cisco Catalyst 4006等交换机上,可以通过`interface range`命令来批量配置端口属性,如设置端口为access或trunk模式,设定VLAN ID,以及启用或禁用端口安全等。 2. **配置二层端口**:在二...

    在Windows Server 2019上配置NAS的方法

    例如在基于RPM的系统中可以使用“yum install -y supervisor”命令安装。 3. 安装Nginx Nginx是一个高性能的HTTP和反向代理服务器。Nginx的安装可以通过下载官方提供的RPM包进行安装。首先需要将Nginx的软件仓库...

    supervisor-monitor:由django提供技术支持

    [Screenshot] ()特性支持 supervisor server 分组管理支持 supervisor server 包含多个配置文件支持常用的进程管理操作,如:重启,停止,查看标准输出日志配置管理:仅支持对 program section 的管理配置同步:采用...

    node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用

    安装完成后,开发者可以指定程序的入口文件(例如app.js)来启动监控,命令如下:“supervisor app.js”。 Node Supervisor不仅仅局限于启动应用,它还提供了丰富的配置选项,使得监控更为灵活和强大。以下是几个...

    【ASP.NET编程知识】ASP.NET Core程序发布到Linux生产环境详解.docx

    9. **supervisor安装与配置**:使用`sudo apt-get install supervisor`安装supervisor。配置文件通常位于`/etc/supervisor/conf.d/`,需要创建一个新的配置文件来指定应用程序的启动命令和相关参数。 10. **日志...

    node.js安装指南for windows

    本文档详细介绍了 Node.js 在 Windows 系统上的安装流程及常用工具配置方法。遵循以上步骤,可以有效减少安装过程中的问题,提高开发效率。无论是初学者还是有一定经验的开发者,在实际操作过程中遇到任何疑问,都...

    Docker使用-系统化的管理你的服务

    一些常用服务及快捷命令列表 在 /home/core/docker 预先封装了大量服务,文件夹名称即是服务名称 所有服务都安装在 /home/core/data 目录,需要修改服务的配置请在这里修改,改完使用 `s service_name` 重启生效 ...

    胡伟煌 Linux学习笔记

    * Git常用命令包括git init、git add、git commit、git log、git branch等。 七、Nginx * Nginx是一个Web服务器软件,用于HTTP、HTTPS和反向代理等服务。 * Nginx安装与配置包括安装Nginx、配置文件的编写和启动...

    局域网交换机维护与配置应用技巧参照.pdf

    在维护和配置方面,以下是一些常用命令: 1. 设置端口名称:`setportname mod_num/port_num [name_string]` 可以为端口分配易于识别的名称。 2. 设置端口优先级:`setportlevel mod_num/port_num normal|high` 可以...

    nodejs开发环境配置与使用

    Node.js开发环境配置与使用涉及到一系列的知识点,包括Node.js的基础概念、开发环境的搭建、常用命令的使用,以及如何利用Node.js平台搭建Web应用。以下将详细介绍这些知识内容。 首先,Node.js不是一个编程语言,...

    python学习.7z

    4. **supervisor配置文件.txt**:Supervisor是一款用Python编写的进程管理工具,用于监控和管理后台服务。了解如何配置Supervisor可以确保Python应用的稳定运行。 5. **nginx配置文件内容.txt**:Nginx是一款高性能...

    uwsgi-2.0.18.tar.gz

    6. **监控和日志**: 安装并配置监控工具(如Supervisor)来管理uwsgi进程,确保其稳定运行。同时,确保正确设置日志记录,以便于问题排查和性能分析。 uwsgi的灵活性和强大功能使其成为Django部署的首选,它能适应...

    zeromq-3.12.5.zip

    1. **解压和编译libzmq**:首先,使用`tar -zxvf libzmq-3.1.2.tar.gz`命令解压libzmq源码,然后进入解压后的目录,运行`./configure`进行配置,接着`make`编译,最后`sudo make install`进行安装。 2. **解压和...

Global site tag (gtag.js) - Google Analytics