我正在尝试在openshift上配置DIY墨盒上的ejabberd,遵循指南:
Erlang and Ejabberd on 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
我不确定导致错误的原因......似乎它正在尝试连接到localhost(由于节点名:ejabberd@127.7.131.1)。但是,我在博客上的先前命令中发现了sed
每个本地主机的气味。
以前有人见过这个吗?关于如何调试的任何线索也受到高度赞赏,因为我对openshift或ejabberd以及linux不是很熟悉...非常感谢你提前!
答案 0 :(得分:1)
您需要使用主机而不是localhost运行。
$OPENSHIFT_DATA_DIR/erl_home/sbin/ejabberdctl register admin <replacewithyourhost> password1234
答案 1 :(得分:1)
我写了这篇博文,并在我创建的新DIY应用程序中看到了这个错误。这是由于erlang和openhl包中的openssl包的错误。我在erlang源代码中添加了一个补丁,以便新的编译工作。
导致此问题的错误在于:https://bugzilla.redhat.com/show_bug.cgi?id=1023017
答案 2 :(得分:0)
为此
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
以上
你需要杀死包括epmd在内的所有ejabberd进程。
答案 3 :(得分:0)
我有一次这个问题,我的解决方案是编辑/ etc / hosts(对于windows-C:\ Windows \ System32 \ drivers \ etc \ hosts)文件,并确保我的公共ip有一个主机名条目地址和我希望ejabber回应的域名。
0.0.0.0 hostname.domain.com主机名
1.1.1.1(您的IP)your-hostname.your-domain your-hostname