Gearman不听正确的IP为Ubuntu

我已经在我的ubuntu机器上编译了Gearman,并且在localhost模式下工作正常,但是当从另一台机器连接到队列中添加一个新的作业时,出现连接错误。

我努力了…

  1. 编辑位于/etc/default/gearman-job-server的configuration文件来添加--listen={ip-here} ,但是什么也没做。
  2. 直接编辑upstart脚本来添加--listen标志,而且什么都不做。
  3. 编辑/etc/init.d/gearman-job-server文件以将--listen--port参数添加到启动脚本。
  4. 手动编辑/etc/init/gearman-job-server.conf的upstart文件,并注释掉现有的exec行,并在respawn命令之后的以下行中添加…

script

exec gearmand --listen={ip} --port=4703

end script

我现在有Gearman工作的唯一方法是通过手动运行命令gearmand -d -listen={ip} --port=4703命令gearmand -d -listen={ip} --port=4703 ,使其工作。 现在我明白了-d标志以守护进程模式启动它,它允许我closuresSSH会话,同时仍然保持运行,但任何机器重新启动都会让我马上回到开始的地方。

我希望Gearman在启动时自动启动,或者通过sudo service命令重新启动,以侦听正确的IP和端口,而且我不希望每次出现问题时都要login到服务器,以便再次手动启动守护进程。

我已经通过serverFault,这导致我前两个选项,但仍然需要帮助,因为这些都没有工作。

通过深入挖掘Debian的bug报告来pipe理这个问题。

尽pipeGearman的configuration文件位于/etc/default/gearman-job-server ,即使在/etc/init//etc/init.d/目录中有这些条目,这些目录在很多安装中显然被忽略(可能从服务控制的init.d命令被service命令取代,但基本上你需要做的是…

  1. 导航到/lib/systemd/system目录,并在您select的文本编辑器中打开gearman-job-server.service
  2. 更新ExecStart命令。 在这一点上,你可以手动编码你想要的参数,或者你可以通过在行尾添加$PARAMS来包含默认的params环境variables。 你关心的参数是--listen--port参数。 listen参数应该是服务器的公共可访问IP。
  3. 运行sudo systemctl daemon-reload
  4. 运行sudo service gearman-job-server restart
  5. 给它一个testing,它应该现在工作

在CentOS 7中也有同样的问题。 您可以编辑/ etc / sysconfig / gearmand并添加以下内容:

 OPTIONS="--listen=127.0.0.1 --port=4730" 

请注意,默认的端口是4730,而不是4703.然后,运行“sudo service gearmand restart” – 并获得“gearadmin –status”的工作!