Por que o Ejabberd Start falha?

9

Estou tentando instalar ejabberd 2.1.10-2no meu Ubuntu 12.04.1servidor. Esta é uma instalação nova e o ejabberd nunca é instalado com sucesso.

A instalação

Toda vez, o apt-get depende disso:

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.

Os pontos só ir para sempre até que ela expire ou I 'killall' beam, beam.smp, epmde ejabberdprocessos. Eu desliguei todas as restrições de firewall.

Aqui está a saída de epmd -namesenquanto a instalação está travada:

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

E depois que falha:

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

Ao mesmo tempo (durante e depois), a saída de ambos netstat -atnp | grep 5222e netstat -atnp | grep 5280está vazia.


The Crash File

Um arquivo de despejo de memória é criado em /var/log/ejabber/erl_crash.dump. O slogan (ou seja, a razão do acidente) é:

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

Está vivo?

Sempre que tento relançar o ejabberd service ejabberd start, acontece o mesmo - mesmo que eu tenha matado todos os processos antes de fazê-lo.

No entanto, quando eu mato todos os processos listados acima novamente e executo su - ejabberd -c /usr/sbin/ejabberd, esta é a saída que recebo:

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

Em seguida, o servidor parece estar em execução. Recebo um prompt de login quando acesso http://mydomain.com:5280/admin/. Claro que não consigo fazer login, a menos que crie uma conta.

No momento, a saída de netstat -atnp | grep 5222e netstat -atnp | grep 5280é a seguinte:

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

Mesmo quando parece que o ejabberd está em execução, a tentativa de fazer qualquer coisa com o ejabberdctl falha. Por exemplo: tentando registrar um usuário:

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

Não tenho ideia do que estou fazendo de errado. Isso acontece em dois servidores diferentes que eu tenho com um software idêntico instalado (realmente não muito). Por favor ajude. Obrigado.

Andrew Ensley
fonte
Apenas um palpite, você já tentou adquirir um binário / pacote no site do desenvolvedor ou construir a partir da fonte? Além disso, você testou a instalação em uma VM (ou instalação real) da 12.10?
fouric 24/10/12

Respostas:

7

Tive esse problema uma vez quando o daemon não pôde determinar o endereço IP do nome do host que forneci no arquivo de configuração do ejabber. Minha solução foi editar o arquivo / etc / hosts e verificar se havia uma entrada de nome de host para o meu endereço IP público e o domínio ao qual eu queria que o ejabber respondesse.

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

Bem, você entendeu. Espero que ajude.

Frank Barcenas
fonte
Eu verifiquei e já tenho uma entrada no meu arquivo / etc / hosts com meu nome de domínio e IP público. No entanto, acho que você está no caminho certo com isso. Acabei de notar que a mensagem de erro diz "Falha na conexão RPC com o nó ejabberd @ ns1". ns1 é o nome da máquina, mas não é o nome do domínio. Isso deve mostrar o nome do domínio lá?
Andrew Ensley
1
sim, com certeza .. Você deve pelo menos adicionar ns1 ao arquivo hosts também. como 0.0.0.0 <FQDN> <hostname>
Frank Barcenas
Santo ... eu nem ... Adicionar ns1 ao meu arquivo / etc / hosts funcionou. Minha nossa.
Andrew Ensley
1
Fico feliz em saber que você cuidou disso. Boa sorte e que a força esteja com você. :-)
Frank Barcenas