我一直在调查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。
答案 0 :(得分:0)
您需要两个配置文件,一个用于MongoDB,另一个用于Node。
将它们放入/etc/supervisor/conf.d
,并使用以下内容将其称为mongo.conf
和node.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