web-dev-qa-db-ja.com

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

pdate:動作しました。 Jim Zajkowskiの回答は、私の/ etc/init.d/couchdb再起動呼び出しが実際にインスタンスを再起動していないことを検出するのに役立ちました。 CouchDBプロセスを手動で強制終了し、新しいインスタンスを開始した後、必要なBindAddressの変更を取得しました。

経由でCouchDBをインストールしました

aptitudeインストールcouchdb

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

telnet localhost 5984

rESTfulコマンドを実行します。ネットワーク上の別のマシンまたはネットワーク外部のマシンからサーバーにアクセスしようとすると、The connection was resetエラーが発生します。ルーターにポート転送を設定しましたが、サーバーは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上の別のマシンからでも接続できません。

27
rcampbell

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

33
Jim Zajkowski

/etc/couchdb/default.iniのbind_addressを変更する必要があります。次に、サービスを再起動して再試行してください。

15
filtenborg

構成ドキュメント

bind_address

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

enter image description here

デフォルトの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など)にアクセスできません。

4
Pete

自宅のPC/Macで次のコマンドを実行します。

ssh -L 5984:localhost:5984 YOUR-SERVER-IP-HERE

次にブラウザーで開くlocalhost:5984/_utils ...それは私にとってはうまくいく

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

秘訣は、/ etc/couchdbの設定がcouch 0.10について言及していることですが、私は1.0.1をインストールしたばかりです。

2
Matt

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

1
Bill Weiss