Ejabberd为什么启动失败?


9

我正在尝试ejabberd 2.1.10-2Ubuntu 12.04.1服务器上安装。这是全新安装,永远不会成功安装ejabberd。

安装

每次,apt-get都会挂在这里:

Setting up ejabberd (2.1.10-2ubuntu1) ...
Generating SSL certificate /etc/ejabberd/ejabberd.pem...

Creating config file /etc/ejabberd/ejabberd.cfg with new version
Starting jabber server: ejabberd............................................................ failed.

该点只是去永远,直到超时或I“killall” beambeam.smpepmd,和ejabberd过程。我已关闭所有防火墙限制。

这是epmd -names安装挂起时的输出:

epmd: up and running on port 4369 with data:
name ejabberdctl at port 42108
name ejabberd at port 39621

在失败之后:

epmd: up and running on port 4369 with data:
name ejabberd at port 39621

在同一时间(期间和之后),两者的输出netstat -atnp | grep 5222netstat -atnp | grep 5280为空。


崩溃文件

将在创建崩溃转储文件/var/log/ejabber/erl_crash.dump。口号(即崩溃的原因)是:

Slogan: Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}})

它还活着?

每当我尝试使用重新启动ejabberd时service ejabberd start,都会发生同样的事情-即使在执行此操作之前我已经杀死了所有进程。

但是,当我再次杀死上面列出的所有进程并运行时su - ejabberd -c /usr/sbin/ejabberd,这是我得到的输出:

Erlang R14B04 (erts-5.8.5) [source] [64-bit] [rq:1] [async-threads:0] [kernel-poll:false]

Eshell V5.8.5  (abort with ^G)
(ejabberd@ns1)1> 
=INFO REPORT==== 15-Oct-2012::12:26:13 ===
I(<0.478.0>:ejabberd_listener:166) : Reusing listening port for 5222

=INFO REPORT==== 15-Oct-2012::12:26:13 ===
I(<0.479.0>:ejabberd_listener:166) : Reusing listening port for 5269

=INFO REPORT==== 15-Oct-2012::12:26:13 ===
I(<0.480.0>:ejabberd_listener:166) : Reusing listening port for 5280

=INFO REPORT==== 15-Oct-2012::12:26:13 ===
I(<0.40.0>:ejabberd_app:72) : ejabberd 2.1.10 is started in the node ejabberd@ns1

然后,服务器似乎正在运行。访问时,出现登录提示http://mydomain.com:5280/admin/。当然,除非创建帐户,否则无法登录。

这时,输出netstat -atnp | grep 5222netstat -atnp | grep 5280如下:

tcp        0      0 0.0.0.0:5222            0.0.0.0:*               LISTEN      19347/beam      
tcp        0      0 0.0.0.0:5280            0.0.0.0:*               LISTEN      19347/beam      

ejabberdctl

即使ejabberd似乎正在运行,使用ejabberdctl尝试执行任何操作也会失败。例如:尝试注册用户:

root@ns1:~# ejabberdctl register myusername mydomain.com mypassword
Failed RPC connection to the node ejabberd@ns1: nodedown

我不知道我在做什么错。这发生在我安装了相同软件的两台不同服务器上(实际上没有太多东西)。请帮忙。谢谢。


只是一个猜测,您是否尝试过从开发人员网站获取二进制文件/程序包,还是从源代码进行构建?另外,您是否测试过将其安装在12.10的VM中(或实际安装)?
Fouric 2012年

Answers:


7

有一次,当守护程序无法确定我在ejabber配置文件中提供的主机名的IP地址时,我遇到了这个问题。我的解决方案是编辑/ etc / hosts文件,并确保为我的公共IP地址和我希望ejabber响应的域提供一个主机名条目。

0.0.0.0 hostname.domain.com hostname
1.1.1.1 ns1.yahoo.com ns1

好吧,你知道了。希望能有所帮助。


我检查了一下,/ etc / hosts文件中已经有一个条目,其中包含域名和公共IP。但是,我认为您在此方面是正确的。我只是注意到错误消息说“到节点ejabberd @ ns1的RPC连接失败”。ns1是计算机的名称,但不是域名。应该在那显示域名吗?
安德鲁·恩斯利

1
是的,肯定是。您也应该至少将ns1添加到hosts文件中。像0.0.0.0 <FQDN> <主机名>
Frank Barcenas

真是的...我什至没有...将ns1添加到我的/ etc / hosts文件中是可行的。真是的
安德鲁·恩斯利

1
很高兴听到您照顾好了。祝您好运,并祝您一切顺利。:-)
Frank Barcenas 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.