Ubuntu 9.04サーバーで外部からCouchDBインスタンスにアクセスできないのはなぜですか?


27

更新:動作するようになりました。ジムZajkowskiの答えは私が私のことを検出助け/etc/init.d/couchdbリブートコールが実際にインスタンスを再起動されませんでした。CouchDBプロセスを手動で強制終了して新しいインスタンスを開始した後、必要なBindAddressの変更を取得しました。

CouchDBをインストールしました

aptitudeインストールcouchdb

サーバーから、経由で接続できます

telnet localhost 5984

RESTfulコマンドを実行します。ネットワーク上の別のマシンまたはネットワーク外部のマシンからサーバーにアクセスしようとすると、「接続がリセットされました」というエラーが表示されます。ルーターでポートフォワーディングを設定しましたが、サーバーはApache、Tomcat、SSHなどを介してアクセスできます。

私はLinux / Ubuntuを初めて使用するので、接続をブロックするデフォルトのファイアウォールがあるかどうか確信が持てなかったので、実行しました。

iptables -A INPUT -p tcp --dport 5984 -j ACCEPT

しかし、それは助けにはなりませんでした。

実行中のiptables -L -n -vのダンプを次に示します

Chain INPUT (policy ACCEPT 2121K packets, 1319M bytes)
 pkts bytes target     prot opt in     out     source               destination
   70  3864 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:5984
    9  1647 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8080
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8080

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1708K packets, 1136M bytes)
 pkts bytes target     prot opt in     out     source               destination

5984で転送されたと表示されているバイトは、ローカルホスト接続によるものと思われます。

netstat -anの実行からのダンプは次のとおりです。grep 5984

tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

couch.iniに「BindAddress = 0.0.0.0」を設定して再起動したため、すべてのインターフェイスでリッスンするはずです。「sudo /etc/init.d/couchdb stop」を実行してからnetstatを実行すると、上記のエントリが表示されます。CouchDBは実際にはまったく停止していないようです。これは、CouchDBが実際に再起動せず、BindAddressの変更を受け取らなかったことを意味するため、私の問題を説明するかもしれません。

CouchDBプロセスを手動で強制終了し、再度起動しました。現在、netstatは次のことを示しています。

 tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN
 tcp        0      0 127.0.0.1:5984          127.0.0.1:35366         TIME_WAIT

ただし、LAN上の別のマシンからでも接続できません。


この問題はまだUbuntu 12に存在します。パッケージメンテナが今までにこれを修正したと思いますか?
マークE.ハーセ

回答:


33

何てnetstat -an | grep 5984言うの?127.0.0.1:5984それとも言うか*:5984?の場合127.0.0.1、couchdbはすべてのインターフェイスのいずれかをリッスンするように設定する必要があります。


3
「tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN」が結果です。couch.iniに「BindAddress = 0.0.0.0」を設定して再起動したため、すべてのインターフェイスでリッスンするはずです。ただし、奇妙な部分があります。「sudo /etc/init.d/couchdb stop」を実行してからnetstatを実行しても、上記のエントリが表示されます。CouchDBは実際にはまったく停止していないようです。それはそれはおそらく再起動しないことを意味し、そしておそらくは、bindaddress変更を拾ったことがないので、これは、私の問題を説明するかもしれない
rcampbell

3
うん、私はバックグラウンドプロセスとして実行されていました。couchdb -dを使用してcouchdbを削除して再起動すると、私にとってはうまくいきました。
クリスチャン

2
この答えは私を助けてくれました!ディスク上の実際の設定ファイルを見つけて編集することなく、Futon Webインターフェイスを使用してこの設定を簡単に変更できることを共有したかったのです。ただ、ナビゲートする127.0.0.1:5984/_utils/config.html(または同等のURLセットアップ用)、ダブルオプション値、[編集]をクリックし、その後、緑色のチェックマークをクリックしてください。
スティーブベナー

@SteveBenner残念ながら127.0.0.1:5984/_utils/config.htmlは何ももたらしません!
Dr.jacky

@rcampbell couch.iniはどこにありますか?!
Dr.jacky


7

これが機能するためには、何らかの理由で実行中のアーランプロセスを手動で強制終了する必要があることに気付きました。ps ax | grep beamアーランプロセスを明らかにする必要があります0:00 /usr/lib/erlang/erts、出力のどこかの行に沿って何かを取得する必要があります。このプロセスを強制終了してから実行すると/etc/init.d/couchdb restart、新しい構成ファイルがロードされます。


私にとっても同じ-ビームプロセスを強制終了してからcouchdb -dを実行してから、サービスの停止/開始を行います。新しい設定が有効になりました。
ボビー


4

構成ドキュメント

bind_address

Futon設定パネルから変更する場合、他に何もする必要はありません(dbの再起動など):

ここに画像の説明を入力してください

デフォルトのbind_addressを変更する前に:

peter@earth:~/$ netstat -an | grep 5984
tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

0.0.0.0に変更した後:

peter@earth:~/$ netstat -an | grep 5984
tcp        0      0 0.0.0.1:5984          0.0.0.0:*               LISTEN

達人ではないことに注意してください:自分のコンピューター(通常、ローカルネットワークの外部にあるもの)にアクセスできないコンピューターは、コンピューター(CouchDBなど)にアクセスすることはできません。


この答えはかなり古いですが、適切な場所につながるようです。FutonはFauxtonに置き換えられましたが、Configurationのbind_addressを変更するという要点は得られると思います。
スコットビッグス

2

私はこれに遭遇し、私の問題は結局、私のUbuntuのインストール中にcouchdbがすでにインストールされているということでした。私は/ etc / couchdbの下の設定ファイルを編集していましたが、実際に実行されていたのは/ usr / local / etc / couchdbから設定をプルしていました。

落とし穴は、/ etc / couchdbの構成にcouch 0.10が記載されていることですが、1.0.1をインストールしたばかりです。


1

iptables -L -n -v現在のファイアウォールルールが表示されます。ルールに到達する前に、これらのパケットをドロップしているパケットがあるかどうかを確認してください。


表にリストされている拒否ルールはありません。それ以外の場合、3つのACCEPTがあり、5984に1つ、8080に2つの複製があります。8080に2つの正確な複製が存在する理由はわかりません。ただし、ネットワーク上のマシンはTomcatを正常に動作させることができます。
rcampbell

出力を表示する心?必要に応じてIPを取り出します。
ビルヴァイス

lsof -i -n -P | grep LISTENそれを実行して投稿するのはどうですか?CouchDBプロセスと、それが何にバインドされているかを探しています。の場合127.0.0.1:5984、外部接続をリッスンするようにCouchDBを構成する必要があります。それはだ場合は*:5984、まあ、少なくとも、CouchDBのが設定され、右:)
ビル・ワイス

ビル、こんにちは。早めにご返信いただき、申し訳ありません。質問に対してあなたがリクエストした生ダンプを投稿しました。
rcampbell 2009年

そのlsof出力はどうですか?
ビルヴァイス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.