ejabberd on openshift - 与节点的 RPC 连接失败



我正在尝试在 openshift 的 DIY 墨盒上配置 ejabberd,请按照此处的指南进行操作:

Erlang 和 Ejabberd 在 OpenShift 上

我成功地遵循了一切,直到这里:

Next you can start ejabberd running the following 2 commands, which you’ll want to put in your .openshift/action_hooks/start script

没有错误,ejabberd 似乎已启动,但下一个命令:

$OPENSHIFT_DATA_DIR/erl_home/sbin/ejabberdctl register admin localhost password1234

失败,出现此错误:

Failed RPC connection to the node ‘ejabberd@127.7.131.1′: {‘EXIT’, {badarg, [{ets,lookup, [local_config, ejabberdctl_access_commands], []}, {ejabberd_config, get_local_option, 1, [{file, "ejabberd_config.erl"}, {line,590}]}, {ejabberd_ctl, get_accesscommands, 0, [{file, "ejabberd_ctl.erl"}, {line,236}]}, {ejabberd_ctl, process,1, [{file, "ejabberd_ctl.erl"}, {line,199}]}, {rpc, ‘-handle_call_call/6-fun-0-’, 5, [{file, "rpc.erl"}, {line,205}]}]}}
Commands to start an ejabberd node: start Start an ejabberd node in server mode debug Attach an interactive Erlang shell to a running ejabberd node live Start an ejabberd node in live (interactive) mode
Optional parameters when starting an ejabberd node: –config-dir dir Config ejabberd: /var/lib/openshift/52c9674d5973ca7734000180/app-root/data//erl_home/etc/ejabberd –config file Config ejabberd: /var/lib/openshift/52c9674d5973ca7734000180/app-root/data//erl_home/etc/ejabberd/ejabberd.cfg –ctl-config file Config ejabberdctl: /var/lib/openshift/52c9674d5973ca7734000180/app-root/data//erl_home/etc/ejabberd/ejabberdctl.cfg –logs dir Directory for logs: /var/lib/openshift/52c9674d5973ca7734000180/app-root/data//erl_home/var/log/ejabberd –spool dir Database spool dir: /var/lib/openshift/52c9674d5973ca7734000180/app-root/data//erl_home/var/lib/ejabberd –node nodename ejabberd node name: ejabberd@127.7.131.1

我不确定是什么原因导致错误...似乎它正在尝试连接到本地主机(由于节点名称:ejabberd@127.7.131.1)。但是,我已经从博客上的先前命令中sed了每个本地主机的气味。

以前有人遇到过这种情况吗?关于如何调试的任何线索也受到高度赞赏,因为我对 openshift 或 ejabberd 以及 linux 不是很熟悉......提前非常感谢!

我写了博客文章,并在我创建的新DIY应用程序上看到了此错误。 这是由于 erlang 和 openshift 框中的 openssl 包的错误。 我在 erlang 源代码中放入了一个补丁,以便新的编译可以工作。

导致问题的错误在这里:https://bugzilla.redhat.com/show_bug.cgi?id=1023017

您需要使用主机而不是本地主机运行。

$OPENSHIFT_DATA_DIR/erl_home/sbin/ejabberdctl register admin <replacewithyourhost> password1234  

为此

OPENSHIFT_DATA_DIR/erl_home/sbin/ejabberdctl register admin $OPENSHIFT_DIY_IP password1234

但是它也返回错误:

 {error_logger,{{2014,1,13},{21,11,24}},"Protocol: ~tp: register/listen error: ~tp~n",["inet_tcp",econnrefused]} {error

以上

你需要杀死所有的ejabberd进程,包括epmd。

有一次遇到这个问题,我的解决方案是编辑/etc/hosts(对于 windows- C:\Windows\System32\drivers\etc\hosts)文件,并确保我的公共 IP 地址和我希望 ejabber 响应的域有一个主机名条目。

0.0.0.0

hostname.domain.com 主机名

1.1.1.1

(您的 IP) 您的主机名.您的域您的主机名

最新更新