Ubuntu上安装和配置Supervisor

一、前言

在许多服务器环境中,通常情况下,您将拥有许多要持久运行的小程序,无论这些程序是小型shell脚本,Node.js应用程序还是任何大型软件包。

通常,外部包随单元文件一起提供,允许它们由 init 系统(如 systemd)管理,或者打包为可由容器引擎管理的 docker 映像。但是,对于未很好地打包的软件,或者对于不希望与服务器上的低级 init 系统交互的用户,拥有轻量级替代方案是有帮助的。

Supervisor是一个进程管理器,它提供了一个单一的界面来管理和监视许多长时间运行的程序。在本教程中,您将在 Linux 服务器上安装 Supervisor,并学习如何管理多个应用程序的 Supervisor 配置。

以下是 Supervisor 的主要优势:

方便:为所有单流程实例编写 rc.d 很不方便。同样,Rc.d 脚本不会自动重新启动崩溃的进程。但是,可以将 Supervisor 配置为在进程崩溃时自动重启进程。

准确性: 在 UNIX 中,通常很难获得进程的准确启动/停止状态。Supervisor 将进程作为子进程启动,因此它知道其子进程的 up/down 状态。这很容易为最终用户查询。

二、Supervisor安装与配置

1.安装

sudo apt update && sudo apt install supervisor

Supervisor服务在安装后自动运行(这点从安装后创建的symlink到systemd的自启动服务可以看出)。检查其状态:

sudo systemctl status supervisor

2. 添加程序

使用 Supervisor 的最佳实践是为它将处理的每个程序编写一个配置文件。

在 Supervisor 下运行的所有程序都必须在非守护模式下运行(有时也称为“前台模式”)。如果默认情况下你的程序在运行后会自动返回到 shell,那么你可能需要查阅程序的手册来找到启用此模式的选项,否则 Supervisor 将无法正确确定程序的状态。

2.1 创建一个脚本

sudo touch /home/mulan/analysis_service.sh

里面添加需要执行的内容。

2.2 创建配置文件

Supervisor程序的每个程序配置文件位于 /etc/supervisor/conf.d 目录中,通常每个文件运行一个程序,并以.conf 结尾。我们将为此脚本创建一个配置文件,as'/etc/supervisor/conf.d/idle.conf:

sudo touch /etc/supervisor/conf.d/algo-analysis.conf

添加以下内容:

[program:algo-analysis-service]

command=/bin/bash -c /home/mulan/analysis_service.sh

autostart=true

autorestart=true

startretries=3

stderr_logfile=/var/log/analysis_service.err.log

stdout_logfile=/var/log/analysis_service.out.log

注意:上面当我使用下述command的时候,会出现“can't find command”的错误而导致服务起不来,那是因为Supervisor does not start a shell at all, either bash or sh -- so it's no surprise that it can't find shell-builtin commands. If you need one, you're obliged to start one yourself. 详情可参考:bash - Why can't supervisor find command source - Stack Overflow

command=/home/mulan/analysis_service.sh  

加上/bin/bash -c之后,服务就正常起来了:

创建并保存配置文件后,我们可以通过 supervisorctl 命令通知 Supervisor 我们的新程序。首先,我们告诉 Supervisor 在/etc/supervisor/conf.d 目录中查找任何新的或已更改的程序配置:

sudo supervisorctl reread 

然后告诉它通过以下方式进行任何更改:

sudo supervisorctl update

每当您对任何程序配置文件进行更改时,运行前面的两个命令都会使更改生效。

此时我们的程序应该正在运行。我们可以通过查看输出日志文件来检查它的输出:

sudo tail /var/log/analysis_service.out.log 

3. 管理程序

除了正在运行的程序之外,您还需要停止、重新启动或查看它们的状态。我们在上面使用的 supervisorctl 程序也有一个交互模式,我们可以使用它来控制我们的程序。

要进入交互模式,请运行不带参数的 supervisorctl:

sudo supervisorctl

supervisorctl最初将打印所有已配置程序的状态和正常运行时间,然后是其命令提示符。输入help将显示其所有可用命令:

您可以使用关联的命令后跟程序名称来start or stop程序:

使用tail命令,您可以查看程序的 stdout 和 stderr 日志中的最新条目。

使用status您可以在进行任何更改后再次查看每个程序的当前执行状态:

最后,您可以使用 Ctrl+C 或输入quit提示符退出 supervisorctl。

4.启用 Supervisor Web 界面

Supervisor 提供了一个基于 Web 的界面来管理所有进程,但默认情况下它是禁用的。您可以通过编辑文件 /etc/supervisor/supervisord.conf 来启用它:

sudo vim /etc/supervisor/supervisord.conf

添加以下行:

[inet_http_server]

port=*:9001

username=admin

password=admin

保存并关闭文件,然后重新启动 Supervisor 服务以应用更改:

systemctl restart supervisor

5.访问Supervisor Web 界面

您现在可以使用 URL http://your-server-ip:9001访问 Supervisor Web 界面。提供您在配置文件中定义的管理员用户名和密码,然后单击登录按钮。您应该在以下页面中看到 Supervisor Web 界面:

参考:

Introduction — Supervisor 4.2.4 documentation(官方文档)

————————————————

版权声明:本文为CSDN博主「小金乌会发光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/zhumin19910702/article/details/127756095

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以按照以下步骤在 Ubuntu 20.04 上安装配置 Supervisor: 1. 更新软件包列表和已安装软件包 ``` sudo apt update sudo apt upgrade ``` 2. 安装 Supervisor 软件包 ``` sudo apt install supervisor ``` 3. 配置 Supervisor 打开 /etc/supervisor/supervisord.conf 文件进行编辑: ``` sudo nano /etc/supervisor/supervisord.conf ``` 找到并取消注释以下行,以便允许 Supervisor web 界面的访问: ``` [inet_http_server] port = 127.0.0.1:9001 ``` 可以修改 `port` 为适合您的端口号。 4. 配置 Supervisor 的程序 创建一个新的 Supervisor 配置文件,例如 `myprogram.conf`: ``` sudo nano /etc/supervisor/conf.d/myprogram.conf ``` 在文件中添加以下配置,以启动一个 Python 程序作为示例: ``` [program:myprogram] command=/usr/bin/python3 /path/to/myprogram.py directory=/path/to/ autostart=true autorestart=true stderr_logfile=/var/log/myprogram.err.log stdout_logfile=/var/log/myprogram.out.log user=myuser ``` 您需要将 `/path/to/myprogram.py` 替换为您的程序路径,将 `/path/to/` 替换为您的程序目录,将 `/var/log/myprogram.err.log` 和 `/var/log/myprogram.out.log` 替换为您的日志文件路径,将 `myuser` 替换为您的用户名。 5. 重新加载 Supervisor 配置 ``` sudo supervisorctl reread sudo supervisorctl update ``` 6. 启动 Supervisor ``` sudo systemctl start supervisor ``` 7. 检查 Supervisor 状态 ``` sudo systemctl status supervisor ``` 如果一切正常,您应该看到 Supervisor 正在运行并已启动您的程序。 8. 访问 Supervisor web 界面 在浏览器中访问 `http://your-server-ip:9001/`,您应该可以看到 Supervisor web 界面,并可以管理您的程序。如果您在第 3 步中更改了端口号,请将 `9001` 替换为您的端口号。 希望这些步骤可以帮助您在 Ubuntu 20.04 上安装配置 Supervisor

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值