Pourquoi Ejabberd Start échoue-t-il?

9

J'essaie d'installer ejabberd 2.1.10-2sur mon Ubuntu 12.04.1serveur. Il s'agit d'une nouvelle installation et ejabberd n'est jamais installé avec succès.

L'installation

A chaque fois, apt-get se bloque sur ceci:

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.

Les points vont juste pour toujours jusqu'à ce moment ou je « killall » beam, beam.smp, epmdet les ejabberdprocessus. J'ai désactivé toutes les restrictions de pare-feu.

Voici la sortie de epmd -nameslorsque l'installation est suspendue:

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

Et après l'échec:

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

En même temps (pendant et après), la sortie des deux netstat -atnp | grep 5222et netstat -atnp | grep 5280est vide.


Le fichier de plantage

Un fichier de vidage sur incident est créé à /var/log/ejabber/erl_crash.dump. Le slogan (c'est-à-dire la raison de l'accident) est:

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

C'est vivant?

Chaque fois que j'essaie de relancer ejabberd avec service ejabberd start, la même chose se produit - même si j'ai tué tous les processus avant de le faire.

Cependant, lorsque je tue à nouveau tous les processus énumérés ci-dessus et que j'exécute su - ejabberd -c /usr/sbin/ejabberd, voici la sortie que j'obtiens:

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

Ensuite, le serveur semble être en cours d'exécution. Je reçois une invite de connexion lorsque j'y accède http://mydomain.com:5280/admin/. Bien sûr, je ne peux pas me connecter à moins de créer un compte.

À ce stade, la sortie de netstat -atnp | grep 5222et netstat -atnp | grep 5280est la suivante:

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

Même lorsqu'il semble que ejabberd est en cours d'exécution, toute tentative avec ejabberdctl échoue. Par exemple: essayer d'enregistrer un utilisateur:

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

Je n'ai aucune idée de ce que je fais mal. Cela se produit sur deux serveurs différents sur lesquels j'ai installé un logiciel identique (vraiment pas grand-chose). Veuillez aider. Merci.

Andrew Ensley
la source
Juste une supposition, avez-vous essayé d'acquérir un binaire / package à partir du site Web du développeur ou de créer à partir des sources? De plus, avez-vous testé son installation dans une machine virtuelle (ou une installation réelle) de 12.10?
fouric

Réponses:

7

J'ai eu ce problème une fois où le démon n'a pas pu déterminer l'adresse IP du nom d'hôte que j'ai donné dans le fichier de configuration ejabber. Ma solution était d'éditer le fichier / etc / hosts et de m'assurer qu'il y avait une entrée de nom d'hôte pour mon adresse IP publique et le domaine auquel je voulais qu'ejabber réponde.

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

Eh bien, vous obtenez l'image. J'espère que cela pourra aider.

Frank Barcenas
la source
J'ai vérifié et j'ai déjà une entrée dans mon fichier / etc / hosts avec mon nom de domaine et mon IP publique. Cependant, je pense que vous êtes sur la bonne voie avec cela. Je viens de remarquer que le message d'erreur indique "Échec de la connexion RPC au nœud ejabberd @ ns1". ns1 est le nom de la machine mais ce n'est pas le nom de domaine. Cela devrait-il montrer le nom de domaine là-bas?
Andrew Ensley
1
ouais pour sûr .. Vous devriez également ajouter au moins ns1 au fichier hosts. comme 0.0.0.0 <FQDN> <hostname>
Frank Barcenas
Saint ... Je n'ai même pas ... L'ajout de ns1 à mon fichier / etc / hosts a fonctionné. Bon chagrin.
Andrew Ensley
1
Heureux d'entendre que vous l'avez pris en charge. Bonne chance et que la force soit avec toi. :-)
Frank Barcenas