我安装了Gearman,运行和传递完全正常的工作,但只有当我使用此命令手动启动作业队列时:
/usr/sbin/gearmand -p 4730 -vvvv -u gearman
如果我这样做,我有另一个EC2实例作为工人运行,第三个传递作业.完美,但我不想让终端打开(显然)或乱七八糟的屏幕.我希望这能在启动时运行.
所以:
$ps aux | grep gearman gearman 745 0.2 0.2 8096 1388 ? Ss 19:11 0:00 /usr/sbin/gearmand --pid-file=/var/run/gearman/gearmand.pid --user=gearman --daemon --log-file=/var/log/gearman-job-server/gearman.log --listen=127.0.0.1
在我看来很好.但是,当我告诉我的工人连接时:
$PHP workers/resize.PHP Waiting for job... PHP Warning: GearmanWorker::work(): gearman_connection_flush:write:111 in /home/ubuntu/workers/resize.PHP on line 20
失败!
此外,我注意到没有任何内容进入日志文件(它不是自动创建的,而是在安装时在此init.d脚本中引用).我尝试创造它,甚至是对齿轮工人说:齿轮工,但没有快乐,所以很难调试.
问题是守护进程正在侦听127.0.0.1/local环回而不是公共IP.
这在Ubuntu上的/ etc / default / gearman-job-server中指定.
将其更改为机器的公共IP,使用init脚本重新启动守护程序,一切都应该正常.