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.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
我一直在研究 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.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