我尝试在我的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配置行,服务就会运行。导致错误的原因是什么?感谢
答案 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
请随时提问!!!!!
希望这能解决您的问题。