Supervisor使用一个命令启动更多进程

时间:2016-04-29 07:35:12

标签: node.js mongodb ubuntu process supervisor

我一直在调查Supervisor用于我的项目。

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

如果我在下面的示例中将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

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

例如,我想在主管中使用一个命令启动mongo和nodejs。

1 个答案:

答案 0 :(得分:0)

您需要两个配置文件,一个用于MongoDB,另一个用于Node。 将它们放入/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