Supervisor 一条命令启动多个进程

Supervisor starts more processes with one command

我一直在研究 Supervisor 在我的项目中的使用。

documentation中指出可以用一个命令启动多个进程。如果 numprocess 设置为多于一个,则配置为 program:process_name 表示“同类进程组”。

如果我在下面的示例中将 numprocess 设置为 2,主管将尝试启动相同的进程两次。对吗?

[program:cat]
command=/bin/cat
process_name=%(program_name)s
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=unexpected
startsecs=10
startretries=3
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
stopasgroup=false
killasgroup=false
user=chrism
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
environment=A="1",B="2"
serverurl=AUTO

如何配置它从不同的目录启动不同的进程?

例如,我想在 supervisor 中用一个命令同时启动 mongo 和 nodejs。

您需要两个配置文件,一个用于 MongoDB,一个用于 Node.js。 将它们放入 /etc/supervisor/conf.d,将它们命名为 mongo.confnode.conf,类似这样:

node.conf

[program:node-app]
numprocs=1
directory=/your/app/directory
command=/usr/bin/node server/server.js
autostart=true
autorestart=true
environment=NODE_ENV=production
stderr_logfile=/var/log/supervisor/somelog.err.log
stdout_logfile=/var/log/supervisor/somelog.out.log
user=<youruser>

mongo.conf

[program:mongod]
command=/usr/bin/mongod --port 27017 --quiet --logpath /var/log/mongodb/mongod.log --logappend
autostart=true
user=root
startsecs=3
redirect_stderr=true
stdout_logfile=/var/log/mongod.log

当然,您需要根据您的环境调整这些值。

然后您将能够通过 supervisorctl 命令控制它们或使用 service supervisor restart

重新启动一切

示例:supervisorctl restart node-app