在Ubuntu 16.04上安装和配置Supervisor

Supervisor是一个客户机/服务器系统,用于控制许多UNIX进程,更具体地说是与项目或客户相关的进程。例如,您可以使用管理程序来生成和监视Web应用程序中任意数量的工作队列。

该系统的组件为:

  • 有监督的:系统的服务器部分。
  • Supervisorctl:用于与服务器交互的命令行界面。
  • Web服务器:supervisorctl相比,具有基本功能的简单Web服务器和Web用户界面。
  • XML-RPC接口: Web客户端使用的同一HTTP服务器提供XML-RPC接口,该接口可用于控制主管程序。

在本教程中,我们将安装最新版本的Supervisor,演示如何通过生成和管理程序supervisorctl,以及配置Web界面来管理程序。

安装和基本配置

我们将通过easy_installpython的setuptools的功能安装超级用户。

首先,更新您的本地软件包列表,然后安装python setuptools

sudo apt-get update && sudo apt-get install python-setuptools

现在我们可以安装主管了。

sudo easy_install supervisor

安装完成后,我们必须生成我们的配置文件。创建一个名为supervisorinside 的文件夹/etc

sudo mkdir /etc/supervisor

然后执行以下操作。

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

如果您未使用该root用户登录,则可能会收到Permission denied错误消息(即使使用也会出现此错误sudo)。这是由于重定向。要解决此问题,请以root用户身份登录。

sudo su

然后,您可以再次运行该命令。

echo_supervisord_conf > /etc/supervisor/supervisord.conf

现在,您可以rootexit命令留给用户。该echo_supervisord_conf命令由我们的主管安装提供。

基本配置

打开/etc/supervisor/supervisord.conf文件并检查其内容。您会注意到,此配置文件遵循INI语法,并且按部分划分(如中的括号所示[section-name])。

要添加要由主管管理的程序,我们只需要创建适当的[program]部分即可。但是,为避免每次需要添加(或更改)程序时都将主配置文件弄乱,我们将使用这一[include]部分。找到本节,取消注释,然后对其进行编辑,使其类似于以下内容。

[include]
files=conf.d/*.conf

现在,对于我们要添加的每个程序,我们将.ini/etc/supervisor/conf.d/目录中创建一个文件。让我们创建这个文件夹。

sudo mkdir /etc/supervisor/conf.d

启动主管服务器

如前所述,主管由服务器和与其连接的客户端组成。为了能够管理和控制程序,我们需要启动服务器。为此,我们将在中注册主管服务器systemd,以便可以在系统启动时启动该服务器。

为此,请supervisord.service/etc/systemd/system目录中创建一个名为的文件。

sudo touch /etc/systemd/system/supervisord.service

将以下内容添加到文件中。

[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
Alias=supervisord.service

激活监督服务。

sudo systemctl start supervisord.service

只要服务文件位于/etc/systemd/system目录中,它将在系统启动时自动启动。

您可以检查服务的状态。

systemctl status supervisord.service

另外,您可以签出日志。

sudo journalctl -u supervisord.service

添加程序

由主管控制的程序[program]在配置的不同部分中给出。对于我们要管理的每个程序,我们将创建一个独立的配置文件,通知命令可执行路径,任何环境变量以及在关机的情况下如何执行。

首先,让我们创建一个记录时间戳的简单脚本。创建一个名为hello_supervisor.sh(您希望在任何地方,我们将引用此脚本的完整路径)的文件。

touch hello_supervisor.sh

现在,将以下内容放入其中

#!/bin/bash
while true
do 
    # Echo current timestamp to stdout
    echo Hello Supervisor: `date`
    # Echo 'error!' to stderr
    echo An error ocurred at `date`! >&2
    sleep 1
done

现在使其可执行

chmod +x hello_supervisor.sh

实际上,该脚本几乎没有用。但是,我们可以使用它来展示主管的力量。通过运行以下命令来创建相应的配置文件。

sudo touch /etc/supervisor/conf.d/hello_supervisor.conf

现在将以下内容放入该文件。

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

注意: 请务必USER使用您的用户名替换。

我们将逐步检查此配置。

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh

首先,配置从定义名称为hello_supervisor的程序开始。它还通知要运行的可执行文件的完整路径。

autostart=true

此行指出,启动超级用户时,该程序应自动启动。

autorestart=true

如果程序由于某种原因退出,该行会通知主管自动重新启动该过程。

stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

这些行定义日志文件位置stderrstdout分别。

管理程序

既然我们已经安装并配置了主管,就可以管理流程。

添加新程序后,我们应该运行以下两个命令,以通知服务器重新读取配置文件并应用所有更改。

sudo supervisorctl reread
sudo supervisorctl update

现在执行supervisorctl客户端。

sudo supervisorctl

您将看到已注册过程的列表。您将看到一个hello_supervisor带有RUNNING状态的过程。

hello_supervisor                 RUNNING   pid 6853, uptime 0:22:30
supervisor>

类型help为avaialable命令的列表。

supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

概括地说,我们可以startstoprestart通过将程序名作为参数传递给相应的命令程序。

supervisor> stop hello_supervisor 
hello_supervisor: stopped
supervisor> start hello_supervisor 
hello_supervisor: started
supervisor> restart hello_supervisor 
hello_supervisor: stopped
hello_supervisor: started
supervisor> 

我们还可以通过tail命令查看程序输出。

supervisor> tail hello_supervisor 
Hello Supervisor: Mon Sep 25 19:27:29 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:30 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:31 UTC 2017

对于stderr输出,您也可以使用tail

supervisor> tail hello_supervisor stderr
An error ocurred at Mon Sep 25 19:31:12 UTC 2017!
An error ocurred at Mon Sep 25 19:31:13 UTC 2017!
An error ocurred at Mon Sep 25 19:31:14 UTC 2017!

通过调用status命令,您可以查看所有已注册程序的状态。

完成后,您可以退出。

supervisor> quit

网络服务器客户端

要允许访问受监管的Web服务器,请打开受监管的配置文件,然后找到该[inet_http_server]部分。

nano /etc/supervisor/supervisord.conf

现在,使用以下内容更新本节的配置。

[inet_http_server]
port=*:9001
username=your_username
password=your_password

替换your_usernameyour_password使用所需的凭据,保存您的修改和重新启动监督服务。

sudo systemctl restart supervisord.service

记住要允许TCP访问9001防火墙上的端口,然后再http://{server-ip}:9001从浏览器访问。询问时,请提供usernamepassword。现在,您可以从Web控制您的流程。

结论

我们已经安装了supervisor的最新版本,了解了如何配置它以使用systemd进行系统自动启动,还介绍了的基本用法supervisorctl。有关更高级的配置和用例,请参阅官方指导性文档



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息