我试图让主pipe工作,以确保我的队列系统始终运行。
下面是我采取的步骤,我从各种来源拼凑起来(以超级用户或超级用户的身份)
冉:
# easy_install supervisor # echo_supervisord_conf > /etc/supervisord.conf # vi supervisord.conf
将以下内容粘贴到文件结尾处:
command=/usr/bin/php /path/to/AppName/artisan --env=production --timeout=240 queue:listen
冉:
# supervisord -c /etc/supervisord.conf # supervisorctl supervisor> status supervisor>
它不显示任何东西。
冉:
# service supervisord reload supervisord: unrecognized service
要获得supervisord作为服务运行,您需要一个/etc/init.d/supervisord文件。 我使用了https://raw.githubusercontent.com/Supervisor/initscripts/master/redhat-init-equeffelec和mods来匹配easy_install将二进制文件放在( /usr/local/bin/ )的path,并find了pid和login/var/run/和/var/log/
我只是花了几个小时在这个,试图让主pipe和亚马逊Linux AMI发挥不错。 我正在经历你刚刚提到的症状。
有些怪癖:
supervisord或supervisorctl命令中包含-c /etc/supervisord.conf (或任何您的path),并确保您每次都从同一个用户运行。 在你的/etc/supervisord.conf ,当你追加这个命令的时候,请确保你的名字/etc/supervisord.conf加上了'program:',如下所示:
[program:queue] command=/usr/bin/php /path/to/AppName/artisan --env=production --timeout=240 queue:listen
一旦我做了上面的事情,主pipe最后会认出队列进程/程序。
我还没有得到sudo service supervisor restart认可主pipe作为服务 – 我怀疑这是因为我没有一个暴发户脚本,我已经看到在less数地方提到。 不知道我在这一点上需要一个。
我使用的一些debugging技术:
ps aux | grep super ps aux | grep super ,看看它是否运行 /etc/supervisord.conf和sudo /usr/local/bin/supervisorctl -c /etc/supervisord.conf然后avail , reload , update等来更新(而不是编辑.eexxtensions并推送到弹性beanstalk每次)