我已经在我的 ubuntu 机器上编译了 Gearman,它在本地主机模式下运行良好,但是当我从另一台机器连接以将新作业添加到队列时出现连接错误。
我努力了...
- 编辑位于的配置文件以
/etc/default/gearman-job-server
进行添加--listen={ip-here}
,但没有任何反应。 - 直接编辑 upstart 脚本来添加
--listen
标志,但也没有起到什么作用。 - 编辑
/etc/init.d/gearman-job-server
文件以将--listen
和--port
参数添加到启动脚本。 - 手动编辑 upstart 文件
/etc/init/gearman-job-server.conf
并注释掉现有的 exec 行并在respawn
命令后添加以下几行...
script
exec gearmand --listen={ip} --port=4703
end script
目前,我让 Gearman 工作的唯一方法是手动运行命令,gearmand -d -listen={ip} --port=4703
该命令使它工作。现在我明白了,该-d
标志以守护进程模式启动它,这使我能够关闭 SSH 会话,同时仍保持它运行,但任何机器重启都会让我回到开始的地方。
我希望 Gearman 在启动时自动启动,或者通过sudo service
监听正确的 IP 和端口的命令重新启动,并且我不想每次出现问题时都必须登录服务器来手动再次启动守护进程。
我经历过 serverFault,它引导我找到前两个选项,但仍然需要帮助,因为它们都不起作用。
答案1
通过深入研究 Debian 错误报告,我们设法解决了这个问题......
尽管 Gearman 的配置文件位于,/etc/default/gearman-job-server
并且它在/etc/init/
和目录中有条目,但这些显然在许多安装中被忽略了(可能从服务控制命令被命令取代/etc/init.d/
这一点来看,但基本上你需要做的是......init.d
service
- 导航到目录并在您选择的文本编辑器中
/lib/systemd/system
打开。gearman-job-server.service
- 更新
ExecStart
命令。此时,您可以手动编写所需的参数,也可以通过在行$PARAMS
尾添加来包含默认的 params 环境变量。您关心的参数是--listen
和--port
参数。listen 参数应该是您的服务器的可公开访问的 IP。 - 跑步
sudo systemctl daemon-reload
- 跑步
sudo service gearman-job-server restart
- 测试一下,现在就可以正常工作了
答案2
在 CentOS 7 中也存在同样的问题。您可以编辑 /etc/sysconfig/gearmand 并添加以下内容:
OPTIONS="--listen=127.0.0.1 --port=4730"
注意,默认端口是 4730,而不是 4703。然后,运行“sudo service gearmand restart”——并使“gearadmin --status”正常工作!