8

チャットを提供するために内部 Ejabberd Web サーバーを使用して、Ubuntu 12 (Linode 最新バージョン) で Ejabberd を使用して Strophe をセットアップしようとしています。

テスト URL ( http-bindadmin ) は両方とも機能します。
JWチャットは動作します。
ストロフィはエラーをスローします:

In Strophe:
RECV: <body xmlns='http://jabber.org/protocol/httpbind' type='terminate' condition='internal-server-error'>BOSH module not started</body>

In ejabberd.log:  
E(<0.468.0>:ejabberd_http_bind:1236) : 
You are trying to use BOSH (HTTP Bind) in host "admin", but the module mod_http_bind is not started in that host. 
Configure your BOSH client to connect to the correct host, or add your desired host`

セットアップは簡単です (ただし、これを解決するにはかなりの時間がかかりました)。

  1. sudo apt-get を使用してインストール
  2. sudo の下で実行
  3. 内部サーバーを使用して、プロキシを台無しにしたり、PunJab を設定したりしないようにします。
  4. ejabberd.cfg に変更を加えました。

ejabberd.cfg への変更:

%% In listening ports, amended the following lines:  
{ request_handlers,  [   
   {["pub"], mod_http_fileserver},   
   {["http-bind"], mod_http_bind}  
]},  

%% In modules, added the following:  
{ mod_http_fileserver, [   
   {docroot, "/var/lib/ejabberd/www"},   
   {accesslog, "/var/log/ejabberd/access.log"}   
]},  
{mod_http_bind,  []},

どんな助けでも大歓迎です。

4

1 に答える 1

6

答えはかなり明白です。

Strophe では、次の形式のユーザー名が必要です。

ユーザー名@ホスト
例: admin@example.com

それ以外の場合、ユーザー名が実際にホストであると想定し、そのようなホストは存在しないため、次のエラーをスローします。mod_http_bind is not started in that host

このエラーはせいぜい誤解を招くだけですが、技術的には問題を説明しています。
ユーザー名だけでログインしようとしていた[JWChatで正常に機能した]ため、問題が発生しました。

これが機能しない場合に備えて、確認すべきその他の事項のチェックリスト:

  1. ドメインが /etc/hosts に追加されていることを確認してください

    127.0.0.1    localhost.localdomain   localhost
    12.34.56.78  squire.example.com  squire
    
  2. ドメインが /etc/ejabberd/ejabberd.cfg に追加されていることを確認してください

    %% Hostname
    Hostname {hosts, ["example.com","98.765.43.21","localhost"]}.
    
  3. ユーザー名が存在し、登録されていることを確認します。

    ejabberdctl register username example.com password
    

    また、ユーザーが管理者の場合は、ejabberd.cfg に含まれます [注: これ登録する必要があります!]

    %% Admin user
    {acl, admin, {user, "", "localhost"}}.
    {acl, admin, {user, "admin", "example.com"}}.
    
  4. サーバーが稼働していることを確認します。

    a. sudo ejabberdctl status  
    b. http://example.com:5280/admin  
    c. http://example.com:5280/http-bind
    
  5. 問題がある場合は、両方を使用して再起動します (理論的には両方が必要ないことはわかっています。実際には、どちらか一方を使用しても正しく機能しない場合があります。)

    sudo /etc/init.d/ejabberd restart
    sudo ejabberdctl restart
    
  6. ログを確認してください - /var/log/ejabberd/ejabberd.log (こちらを参照)。

  7. JWChat をインストールして試してください (または、JWChat がある場合は Strophe をインストールしてください)。
    次の短いチュートリアルは非常に貴重です。正確に従ってください: http://www.ejabberd.im/jwchat-localserver

于 2013-02-27T08:56:59.493 に答える