Frage Warum kann ich nicht extern auf meinem Ubuntu 9.04 Server auf meine CouchDB Instanz zugreifen?


Aktualisieren: Ich habe es jetzt funktioniert. Jim Zajkowskis Antwort hat mir geholfen, das zu erkennen /etc/init.d/couchdb Reboot-Aufrufe haben die Instanz nicht wirklich neu gestartet. Nachdem ich die CouchDB-Prozesse manuell beendet und eine neue Instanz gestartet habe, wurde die erforderliche BindAddress-Änderung übernommen.

Ich habe CouchDB via installiert

Eignung installiere Couchdb

Von meinem Server aus kann ich über verbinden

telnet localhost 5984

und führen RESTful-Befehle aus. Wenn ich versuche, von einem anderen Computer in unserem Netzwerk oder von einer Maschine außerhalb unseres Netzwerks auf den Server zuzugreifen, erhalte ich eine Die Verbindung wurde zurückgesetzt Error. Ich habe die Portweiterleitung auf dem Router eingerichtet und der Server ist ansonsten über Apache, Tomcat, SSH usw. erreichbar.

Ich bin neu bei Linux / Ubuntu, also war ich mir nicht sicher, ob es eine Standard-Firewall gab, die die Verbindung blockierte, also lief ich:

iptables -A EINGABE -p tcp --dport 5984 -j AKZEPTIEREN

aber es hat nicht geholfen.

Hier ist der Dump vom Laufen 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

Ich nehme an, dass die Bytes als übertragen angezeigt werden 5984 sind wegen meiner localhost Verbindung.

Hier ist der Dump vom Laufen netstat -an | grep 5984

tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

Ich habe es konfiguriert couch.ini "BindAddress = 0.0.0.0" zu haben und neu zu starten, so dass es sollte an allen Schnittstellen zuhören. Wenn ich "sudo /etc/init.d/couchdb stop" starte, dann führe netstat aus, aber ich sehe immer noch den obigen Eintrag. Es sieht so aus, als würde CouchDB überhaupt nicht aufhören. Dies kann mein Problem erklären, weil es bedeutet, dass CouchDB nie wirklich neu gestartet wurde und die BindAddress-Änderung nicht übernommen hat.

Ich habe den CouchDB-Prozess manuell beendet und neu gestartet. Jetzt zeigt 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

Ich kann jedoch immer noch keine Verbindung herstellen, auch nicht von einem anderen Gerät im LAN.


27
2017-10-29 11:05


Ursprung


Dieses Problem existiert immer noch in Ubuntu 12. Du denkst, dass der Paketbetreuer das jetzt behoben hat? - Mark E. Haase


Antworten:


Was macht netstat -an | grep 5984 sagen? Sagt es 127.0.0.1:5984 oder *:5984? Wenn es 127.0.0.1, dann muss couchdb so eingestellt werden, dass entweder alle Schnittstellen zu hören sind.


33
2017-10-29 18:17



"tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN" ist das Ergebnis. Ich habe couch.ini so konfiguriert, dass "BindAddress = 0.0.0.0" lautet und neu gestartet wurde, also sollte es auf allen Schnittstellen zuhören. Hier ist der komische Teil: Wenn ich "sudo /etc/init.d/couchdb stop" ausführe und dann netstat laufe, sehe ich immer noch den obigen Eintrag. Es sieht so aus, als würde CouchDB überhaupt nicht aufhören. Dies könnte mein Problem erklären, weil es wahrscheinlich nie neu gestartet wurde und wahrscheinlich nie die BindAddress-Änderung übernommen hat - rcampbell
Ja, ich lief als Hintergrundprozess. es funktionierte für mich, nachdem ich couchdb mit couchdb -d getötet und neu gestartet hatte - Kristian
Diese Antwort hat mir geholfen! Ich wollte das teilen Man kann diese Einstellung leicht über das Futon-Web-Interface ändern, ohne die eigentliche Konfigurationsdatei auf der Festplatte suchen und bearbeiten zu müssen. Navigieren Sie einfach zu 127.0.0.1:5984/_utils/config.html (oder die entsprechende URL für Ihre Einrichtung) und doppelklicken Sie auf den Optionswert, bearbeiten Sie und klicken Sie dann auf das grüne Häkchen. - Steve Benner
@SteveBenner Leider bringt 127.0.0.1:5984/_utils/config.html nichts! - Mr.Hyde
@rcampbell Wo ist couch.ini? - Mr.Hyde


Sie müssen die bind_address in /etc/couchdb/default.ini ändern. Starten Sie den Dienst anschließend neu und versuchen Sie es erneut.


15
2017-10-18 13:20



d.h. Wechseln Sie zu 0.0.0.0 - Tim Rae


Mir ist aufgefallen, dass Sie den laufenden Erlang-Prozess aus irgendeinem Grund manuell beenden müssen, damit dies funktioniert.ps ax | grep beam sollte den erlang Prozess offenbaren, sollten Sie etwas entlang der Linie bekommen 0:00 /usr/lib/erlang/erts irgendwo in der Ausgabe. Wenn Sie diesen Prozess beenden und dann ausführen /etc/init.d/couchdb restart Die neue Konfigurationsdatei wird geladen.


7
2017-09-14 23:21



Das selbe für mich - erst nachdem ich den Beam-Prozess beendet habe, dann mache ich die couchdb -d und dann den Service Stop / Start ... hat die neue Einstellung Wirkung gezeigt. - Bobby


Auf dem Heim-PC / Mac diesen Befehl ausführen:

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

Als nächstes öffnen Sie in Ihrem Browser localhost: 5984 / _utils ... Für mich geht das


4
2018-02-26 08:40





Konfigurationsdokumente:

bind_address

Wenn Sie es aus dem Futon-Konfigurationsfenster ändern, müssen Sie nichts anderes tun (Neustart der Datenbank usw.):

enter image description here

Vor dem Ändern der Standard-Bind_Adresse:

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

Nach dem Wechsel zu 0.0.0.0:

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

Hinweis Nicht-Gurus: Computer, die nicht auf Ihre zugreifen können (normalerweise ist alles außerhalb Ihres lokalen Netzwerks) können immer noch nicht auf Ihren Computer zugreifen (CouchDB oder irgendetwas anderes).


4
2018-01-14 16:12



Obwohl diese Antwort ziemlich alt ist, scheint sie zum richtigen Ort zu führen. Futon wurde durch Fauxton ersetzt, aber ich denke, die Leute werden den Grund haben, die Bind_Adresse in der Konfiguration zu ändern. - Scott Biggs


Ich bin diesem Problem begegnet, und mein Problem war, dass Couchdb in meiner Installation von Ubuntu bereits installiert war. Ich hatte die Konfigurationsdateien unter / etc / couchdb bearbeitet, aber die, die gerade ausgeführt wurde, zog tatsächlich die Konfiguration aus / usr / local / etc / couchdb.

Der Tipp war, dass die Konfiguration in / etc / couchdb Couch 0.10 erwähnt, aber ich hatte gerade 1.0.1 installiert.


2
2017-11-15 23:37





iptables -L -n -v zeigt Ihnen Ihre aktuellen Firewall-Regeln. Sehen Sie, ob es einen gibt, der diese Pakete fallen lässt, bevor er Ihre Regel erreicht.


1
2017-10-29 18:27



In der Tabelle sind keine DENY-Regeln aufgeführt. Ansonsten gibt es drei ACCEPT, einen für 5984 und zwei Duplikate für 8080. Ich bin nicht sicher, warum es genau zwei Duplikate für 8080 gibt, und wenn ich versuche, Tomcat (läuft auf 8080) außerhalb unseres Netzwerks zu treffen, scheitert es sogar obwohl Maschinen in unserem Netzwerk Tomcat in Ordnung bringen können. - rcampbell
Darf ich den Output sehen? Nehmen Sie Ihr IP bei Bedarf heraus. - Bill Weiss
Wie wäre es mit Laufen? lsof -i -n -P | grep LISTEN und posten das? Sie suchen nach dem CouchDB-Prozess und wozu er verpflichtet ist. Wenn es 127.0.0.1:5984, müssen Sie CouchDB konfigurieren, um externe Verbindungen zu hören. Wenn es *:5984naja, zumindest ist CouchDB richtig konfiguriert :) - Bill Weiss
Hallo Bill, tut mir leid, dass ich nicht früher reagiert habe. Ich habe den von Ihnen angeforderten Rohspeicher auf die Frage gepostet. - rcampbell
Wie ist es damit lsof Ausgabe? - Bill Weiss