您的位置:

使用Ubuntu和Supervisor轻松部署和管理应用程序

一、什么是Supervisor

Supervisor是一种进程管理工具,可用于将多个后台进程捆绑到同一主机上,并在运行时自动管理它们。 它可以增强我们的应用程序:
1、自动启动应用程序并监控其运行状态;
2、在应用程序意外挂掉时自动重启;
3、记录应用程序的输出日志等。
Supervisor可说是一个大杀器,让我们的应用程序管理变得轻松、高效,减少故障和失误。

二、安装Supervisor

首先我们要安装Supervisor,打开Ubuntu的终端,输入以下命令:
sudo apt-get install supervisor
安装Supervisor后,默认会在 /etc/supervisor/conf.d/ 目录下生成一个示例配置文件,以示例程序“hello program”为例,可以参考以下示例:
[program:hello] 
command=/bin/bash -c 'cd /app/hello && php hello.php'
autostart=true
autorestart=unexpected
user=www
redirect_stderr=true
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log
hello为我们的应用程序名,即一个进程,command中填写运行程序的命令,如docker启动命令、任务调度命令等,可以执行任意命令;user为运行应用程序的用户;autostart和autorestart决定了当Supervisor服务启动、执行或者意外终止(如程序崩溃)时是否自动重启该进程。

三、Supervisor的常用命令

下面是一些Supervisor的常用命令:
sudo service supervisor start #启动Supervisor服务
sudo service supervisor stop #停止Supervisor服务
sudo service supervisor restart #重启Supervisor服务
sudo supervisorctl reload #重新加载配置文件
sudo supervisorctl status #查看所有管理的应用程序状态
sudo supervisorctl start hello #启动进程hello
sudo supervisorctl stop hello #停止进程hello
sudo supervisorctl restart hello #重启进程hello
sudo supervisorctl update #应用新的配置文件,启动新的应用程序,重启原来的应用程序。

四、多进程管理

当我们需要管理多个进程时,我们可以通过指定一个包含多个程序配置的 conf.d 文件夹和程序的其他文件来完成。为此,将以下内容添加到 /etc/supervisor/supervisord.conf 文件的 [include] 部分中:
[include]
files = /etc/supervisor/conf.d/*.conf
这样,我们就可以在 /etc/supervisor/conf.d/ 目录下放置任意数量的进程配置文件,由Supervisor来统一管理,而无需修改主配置文件或重启它。 例如,在 /etc/supervisor/conf.d/ 目录下创建了 进程1.conf 和 进程2.conf 文件后,可以使用以下命令重启所有进程:
sudo supervisorctl update
sudo supervisorctl restart all

总结

无论是开发还是运维,Supervisor都是一个非常好用的工具。它可以帮助我们管理容易崩溃的进程,同时监视输出和日志。 而且,手动启动和关闭多个进程非常费时,而使用Supervisor可以轻松自动化这些操作,有效提高生产力和可靠性。