Ejabberdの起動が失敗するのはなぜですか?


9

サーバーにインストールしようとしejabberd 2.1.10-2ていUbuntu 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 5222及びnetstat -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 5222and の出力はnetstat -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

何が悪いのか分かりません。これは、同じソフトウェアがインストールされている2つの異なるサーバーで発生します(実際にはほとんど何もありません)。助けてください。ありがとう。


推測で、バイナリ/パッケージを開発者のWebサイトから取得したり、ソースからビルドしたりしましたか?また、12.10のVMへのインストール(または実際のインストール)をテストしましたか?
4

回答:


7

デーモンがejabber構成ファイルで指定したホスト名のIPアドレスを判別できなかったときに、この問題が一度発生しました。私の解決策は、/ etc / hostsファイルを編集し、ejabberに応答させたいパブリックIPアドレスとドメインのホスト名エントリがあることを確認することでした。

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

さて、あなたは写真を取得します。お役に立てば幸いです。


チェックしたところ、/ etc / hostsファイルにドメイン名とパブリックIPのエントリが既にあります。しかし、あなたはこれで正しい方向に進んでいると思います。「ノードejabberd @ ns1へのRPC接続に失敗しました」というエラーメッセージが表示されることに気づきました。ns1はマシンの名前ですが、ドメイン名ではありません。そこにドメイン名が表示されますか?
Andrew Ensley、2012年

1
確かに..少なくともns1をhostsファイルにも追加する必要があります。0.0.0.0のように<FQDN> <hostname>
Frank Barcenas 2012年

聖...私もしません... ns1を/ etc / hostsファイルに追加することはうまくいきました。やれやれだぜ。
Andrew Ensley、2012年

1
お世話になりました。幸運と力があなたと一緒にいるかもしれません。:-)
フランク・バルセナス2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.