【问题标题】:ejabberd on openshift - Failed RPC connection to the nodeopenshift 上的 ejabberd - 与节点的 RPC 连接失败
【发布时间】:2014-09-24 11:45:08
【问题描述】:

我正在尝试在 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

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

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

【问题讨论】:

    标签: sed xmpp ejabberd openshift


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢 4 天的回复,我试过了:$OPENSHIFT_DATA_DIR/erl_home/sbin/ejabberdctl register admin $OPENSHIFT_DIY_IP password1234 但是它也返回错误:{error_logger,{{2014,1,13},{21 ,11,24}},"协议:~tp:注册/监听错误:~tp~n",["inet_tcp",econnrefused]} {error_logger,{{2014,1,13},{21,11,24 }},crash_report,[[{initial_call,{net_kernel,init,['Argument__1']}},{pid,},{registered_name,[]},{error_info,{exit,{error,badarg },[{gen_server,init_it,6,[{file,"gen_server.erl"},{line,320}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line, 239}]}]}}...
      【解决方案3】:

      为此

      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。

      【讨论】:

        【解决方案4】:

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

        0.0.0.0 主机名.domain.com 主机名

        1.1.1.1(你的 ip) your-hostname.your-domain 你的主机名

        【讨论】:

          猜你喜欢
          • 2016-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多