【问题标题】:Error while starting ejabberd with xml_rpc使用 xml_rpc 启动 ejabberd 时出错
【发布时间】:2014-04-08 14:58:56
【问题描述】:

我尝试在我的 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 配置行,服务当然会运行。是什么导致了错误?谢谢

【问题讨论】:

  • 我也面临同样的问题..!!!!!

标签: xml-rpc ejabberd


【解决方案1】:

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

当我查看 erlang 错误消息“noproc”表示“尝试链接到未退出的进程”时,上面的错误表示您的 odbc 配置存在问题{如果您已配置为使用 mysql 和未正确配置},但在使用本机数据库时,发生的错误与真正的问题一样!!!!!!

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

我会一步一步来,这样ejabberd的新蜜蜂想配置ejabberd_xmlrpc就不会迷惑了。

在继续之前,我应该提到我的机器配置 我在我的戴尔 64 位机器上使用 ubuntu 14.04,在该机器上安装了 ejabberd 2.1.11erlang 版本 R16B03

在这个link官方文档上给出了如何配置和使用ejabberd_xmlrpc

以上链接给出的详细信息如下

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 cohttps://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 状态

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

netstat -ntlp | grep 听

如果列表显示

 tcp    0    0 0.0.0.0:4560   0.0.0.0:*       LISTEN

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

欢迎提问!!!!!!

希望这能解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 2014-08-23
    • 2015-09-14
    • 2019-02-07
    • 2016-11-07
    • 2021-11-08
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多