使用xml_rpc启动ejabberd时出错

时间:2014-04-08 14:58:57

标签: xml-rpc ejabberd

我尝试在我的ejabberd服务器中配置xmlrpc,但服务器似乎在配置xmlrpc后似乎没有启动。我的ejabberd配置是:

{listen,[
{{4560, "127.0.0.1"}, ejabberd_xmlrpc, [
    {access_commands, [
      %% This bot can only execute the command 'register',
      %% and if argument 'host' is provided, it must be "example.org":
      {xmlrpcaccess, [register], [{host, "myhost.com"}]}
    ]}
  ]},
//many modules added here
]}.
{acl, xmlrpcbot, {user, "USER", "myhost.com"}}.
{access, xmlrpcaccess, [{allow, xmlrpcbot}]}.

当我开始服务时,我得到以下日志:

=INFO REPORT==== 2014-04-08 17:26:45 ===
application: ejabberd
exited: {bad_return,
         {{ejabberd_app,start,[normal,[]]},
          {'EXIT',
           {noproc,
            {gen_server,call,
             [ejabberd_sup,
              {start_child,
               {ejabberd_odbc_sup_localhost,
                {ejabberd_odbc_sup,start_link,["localhost"]},
                transient,infinity,supervisor,
                [ejabberd_odbc_sup]}},
              infinity]}}}}}
type: temporary

当然,如果我评论所有xml_rpc配置行,服务就会运行。导致错误的原因是什么?感谢

1 个答案:

答案 0 :(得分:3)

当我尝试在配置文件中配置Ejabberd_xmlrpc并遇到与您在问题中提到的相同的错误时,我也遇到了同样的问题,

当我查看erlang错误消息" noproc"表示"尝试链接到未退出的进程",上面的错误表示你的odbc配置存在一些问题{如果你配置了使用mysql并且未正确配置,则此消息似乎合格}但是在使用本机数据库时发生同样的错误比真正的问题!!!!!!

我花了将近2天的时间通过Google搜索和尝试错误来解决此错误,并通过 Badlop 找到了这个link的帖子,感谢他我终于解决了这个错误。

我将逐步进行,以便任何新的ejabberd蜜蜂想要配置ejabberd_xmlrpc都不会混淆。

在进一步说明之前,我应该提一下我的机器配置 我在我的戴尔64位计算机上使用 ubuntu 14.04 ,其中 ejabberd 2.1.11 erlang版本R16B03 一起安装。

关于如何配置和使用ejabberd_xmlrpc的link官方文档已经给出了

以上链接的详细信息如下

  

1.您需要获取并安装XMLRPC-Erlang。

 You can download XMLRPC-Erlang binary files from

 http://www.ejabberd.im/ejabberd_xmlrpc           

 or compile it yourself:

 wget http://www.ejabberd.im/files/contributions/xmlrpc-1.13-ipr2.tgz

 tar -xzvf xmlrpc-1.13-ipr2.tgz

 cd xmlrpc-1.13/src

 make

 cd ../../

 Then you can copy the *.beam files to ejabberd ebin directory,
 or add an option like this to the ejabberd start script:

 $ erl -pa '/home/jabber/xmlrpc-1.13/ebin' ...        
     

2.配置ejabberd在启动时启动此侦听器:

 edit ejabberd.cfg and add on the 'listen' section:
    {listen, [
      {4560, ejabberd_xmlrpc, []},
        ...
   ]}.   

3.Start ejabberd.

4. Verify that ejabberd is listening in that port.

每件事情都很好,直到第3步。

但执行第3步后

$/etc/init.d/ejabberd start

发生错误,说服务器无法启动并查看ejabberd.log文件以获取更多信息,日志文件显示错误@ user3511518在帖子中提到。

如何解决此错误!!!!

在阅读 Badlop 回答时,我意识到我错过了在jabberd / ebin中包含一个文件,我必须编译ejabberd_xmlrpc.erl文件。

Badlop的回答

You're confused there.
     

您已安装xmlrpc库。

     

现在您还需要编译ejabberd_xmlrpc.erl      从http://www.ejabberd.im/ejabberd-modules

下载

在转到http://www.ejabberd.im/ejabberd-modules链接之前,请确保已在您的计算机上安装svn,现在请按照以下步骤进行操作[在上面的链接中给出了相同的步骤]。

  

svn co https://svn.process-one.net/ejabberd-modules

     

cd ejabberd-modules / ejabberd_xmlrpc / trunk

     

./ build.sh

这将构建ejabberd_xmlrpc.beam(ejabberd_xmlrpc.erl的编译版本)

  

$ cd /(您目前的行为)/ ejabberd-modules / ejabberd / xmlrpc / trunk / ebin

     

$ sudo mv ejabberd_xmlrpc.beam / home / jabberd / ebin [这是一个你需要移动的例子>这个文件到驱动器上安装了ejabberd的目录的ebin文件夹]

最后重新启动你的机器。

通过键入

重新启动检查ejabberd的状态后
  

$ sudo ejabberdctl status

如果它显示正在运行而不是在终端执行以下命令

  

netstat -ntlp | grep LISTEN

如果列表显示

 tcp    0    0 0.0.0.0:4560   0.0.0.0:*       LISTEN

表示您的 xmlrpc 正在运行并正在收听http://hostname:4560

请随时提问!!!!!

希望这能解决您的问题。