哪家的美国云服务器好
介绍
在许多 VPS 环境中,通常情况下您会拥有许多想要持久运行的小程序,无论这些是小型 shell 脚本、Node.js 应用程序还是任何大型包。
通常,外部包提供有一个单元文件,允许它们由一个 init 系统管理systemd,或者打包为可以由容器引擎管理的docker镜像。但是,对于没有很好打包的软件,或者对于不想与服务器上的低级初始化系统交互的用户,有一个轻量级的替代方案会很有帮助。
Supervisor是一个进程管理器,它为管理和监视许多长时间运行的程序提供了一个单一的界面。在本教程中,您将在 Linux 服务器上安装 Supervisor,并学习如何管理多个应用程序的 Supervisor 配置。
先决条件
要完成本指南,您需要:
Linux 服务器和具有 sudo 权限的非 root 用户。第 1 步 - 安装
首先更新你的包源并安装Supervisor:
美国服务器租用月付
sudo aptupdate&& sudo aptinstallsupervisor主管服务在安装后自动运行。您可以检查其状态:
sudo systemctlstatussupervisor您应该收到以下输出:
Output●supervisor.service-SupervisorprocesscontrolsystemforUNIXLoaded:loaded(/lib/systemd/system/supervisor.service;enabled;vendor preset:enabled)Active:active(running)sinceWed2021-11-1722:56:48UTC;5minago现在我们已经安装了 Supervisor,我们可以看看添加我们的第一个程序。
第 2 步 - 添加程序
使用 Supervisor 的最佳实践是为它将处理的每个程序编写一个配置文件。
在 Supervisor 下运行的所有程序都必须在非守护模式下运行(有时也称为前台模式)。如果默认情况下你的程序在运行后会自动返回到 shell,那么你可能需要查阅程序的手册来找到启用此模式的选项,否则 Supervisor 将无法正确确定程序的状态。
为了演示 Supervisor 的功能,我们将创建一个 shell 脚本,它除了每秒产生一些可预测的输出之外什么都不做,但会在后台连续运行,直到手动停止。使用或您最喜欢的文本编辑器,打开在您的主目录中nano调用的文件:idle.sh
nano~/idle.sh添加以下内容:
~/idle.sh
!/bin/bashwhiletruedoEcho current date to stdoutecho`date`Echo error! to stderrechoerror!>&2 sleep 1done保存并关闭文件。如果您正在使用nano,请按Ctrl+X,然后在出现提示时按YEnter。
接下来,使您的脚本可执行:
chmod+x ~/idle.shSupervisor 程序的每个程序配置文件位于该/etc/supervisor/conf.d目录中,通常每个文件运行一个程序,并以.conf.我们为这个脚本创建一个配置文件结尾,如`/etc/supervisor/conf.d/idle.conf:
sudonano /etc/supervisor/conf.d/idle.conf添加这些内容:
/etc/supervisor/conf.d/idle.conf
[program:idle]command=/home/ubuntu/idle.shautostart=trueautorestart=truestderr_logfile=/var/log/idle.err.logstdout_logfile=/var/log/idle.out.log我们将逐行回顾这一点:
美国BR机房服务器
command=/home/ubuntu/idle.sh配置首先定义一个具有程序名称idle和完整路径的程序:
autostart=trueautorestart=true接下来的两行定义了脚本在特定条件下的自动行为。
该autostart选项告诉 Supervisor 该程序应该在系统引导时启动。将此设置为 false 将需要在任何系统关闭后手动启动。
autorestart定义在程序退出时 Supervisor 应如何管理程序:
false告诉 Supervisor 退出后不要重新启动程序。true告诉Supervisor总是在程序退出后重新启动程序。unexpected告诉 Supervisor 仅在程序以意外错误代码退出时才重新启动程序(默认情况下,代码 0 或 2 除外)。要了解有关错误代码的更多信息,请查看errno命令。stderr_logfile=/var/log/idle.err.logstdout_logfile=/var/log/idle.out.log最后两行定义程序的两个主要日志文件的位置。正如选项名称所建议的那样,stdout 和 stderr 将分别被定向到stdout_logfile和stderr_logfile位置。指定的目录必须已经存在,因为 Supervisor 不会尝试创建任何缺失的目录。
我们在此处创建的配置是 Supervisor 程序的最小模板。Supervisor 文档列出了更多可选配置选项,可用于调整程序的运行方式。
创建并保存配置文件后,我们可以通过supervisorctl命令通知 Supervisor 我们的新程序。首先,我们告诉 Supervisor 在目录中查找任何新的或更改的程序配置/etc/supervisor/conf.d:
sudosupervisorctl rereadOutputidle: available然后告诉它通过以下方式进行任何更改:
sudosupervisorctl updateOutput idle: added processgroup每当您对任何程序配置文件进行更改时,运行前面的两个命令都会使更改生效。
此时我们的程序应该正在运行。我们可以通过查看输出日志文件来检查它的输出:
sudo tail /var/log/idle.out.logOutputSatNov2022:21:22UTC2021SatNov2022:21:23UTC2021SatNov2022:21:24UTC2021SatNov2022:21:25UTC2021SatNov2022:21:26UTC2021SatNov2022:21:27UTC2021SatNov2022:21:28UTC2021SatNov2022:21:29UTC2021SatNov2022:21:30UTC2021SatNov2022:21:31UTC2021接下来,我们将介绍 Supervisor 的其他一些用法。
第 3 步 - 管理程序
除了正在运行的程序之外,您还需要停止、重新启动或查看它们的状态。我们在第 2 步中使用的 supervisorctl 程序也有一个交互模式,我们可以使用它来控制我们的程序。
要进入交互模式,请运行不带参数的 supervisorctl:
sudosupervisorctlOutputidleRUNNINGpid12614,uptime1:49:37supervisor>supervisorctl最初将打印所有已配置程序的状态和正常运行时间,然后是其命令提示符。输入help将显示其所有可用命令:
supervisor>helpOutput default commands (typehelp): =====================================addclearfgopenquit remove restartstartstopupdateavailexitmaintail pid reload rereadshutdownstatustailversion您可以start或stop一个程序与相关命令后跟程序名称:
supervisor>stop idleOutputidle: stoppedsupervisor>start idleOutputidle: started使用该tail命令,您可以查看程序的 stdout 和 stderr 日志中的最新条目:
supervisor>tail idleOutputSunNov2100:36:10UTC2021SunNov2100:36:11UTC2021SunNov2100:36:12UTC2021SunNov2100:36:13UTC2021SunNov2100:36:14UTC2021SunNov2100:36:15UTC2021SunNov2100:36:17UTC2021supervisor> tail idlestderrOutputerror!error!error!error!error!error!error!使用status您可以在进行任何更改后再次查看每个程序的当前执行状态:
supervisor>statusOutputidleSTOPPEDNov2101:07AM最后,您可以使用 Ctrl+C 或输入quit提示符退出 supervisorctl:
supervisor>quit结论
在本教程中,您学习了如何安装和管理 Supervisor。如前所述,按照现代标准,Supervisor 是非常轻量级的,但它仍然得到很好的维护,它可以成为小型部署的有用工具。作为大型部署的组成部分,它也是一种低维护且独立的方式来生成日志。
美国多ip云服务器
