เหตุใดฉันไม่สามารถเข้าถึงอินสแตนซ์ CouchDB ของฉันภายนอกบนเซิร์ฟเวอร์ Ubuntu 9.04


27

อัปเดต:ฉันทำให้มันทำงานตอนนี้ คำตอบของ Jim Zajkowski ช่วยให้ฉันตรวจพบว่า/etc/init.d/couchdbของฉันรีบูตไม่ได้รีบูตอินสแตนซ์ของจริง หลังจากที่ฉันฆ่ากระบวนการ CouchDB ด้วยตนเองและเริ่มต้นอินสแตนซ์ใหม่มันรับการเปลี่ยนแปลง BindAddress ที่จำเป็น

ฉันได้ติดตั้ง CouchDB ผ่านทาง

ความถนัดติดตั้ง couchdb

จากเซิร์ฟเวอร์ของฉันฉันสามารถเชื่อมต่อผ่าน

telnet localhost 5984

และรันคำสั่ง RESTful เมื่อฉันพยายามเข้าถึงเซิร์ฟเวอร์จากเครื่องอื่นบนเครือข่ายของเราหรือจากเครื่องภายนอกเครือข่ายของเราฉันได้รับข้อผิดพลาดการเชื่อมต่อถูกรีเซ็ต ฉันได้ตั้งค่าการส่งต่อพอร์ตบนเราเตอร์และเซิร์ฟเวอร์นั้นสามารถเข้าถึงได้ผ่าน Apache, Tomcat, SSH และอื่น ๆ

ฉันใหม่สำหรับ Linux / Ubuntu ดังนั้นฉันไม่แน่ใจว่ามีไฟร์วอลล์เริ่มต้นที่บล็อกการเชื่อมต่อหรือไม่ดังนั้นฉันจึงวิ่ง:

iptables -A อินพุต -p tcp --dport 5984 -j ยอมรับ

แต่มันก็ไม่ได้ช่วยอะไร

นี่คือดัมพ์จากการรัน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นั้นเป็นเพราะการเชื่อมต่อ localhost ของฉัน

นี่คือดัมพ์จากการรัน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 คุณคิดว่าผู้ดูแลแพคเกจจะแก้ไขปัญหานี้ได้หรือไม่?
Mark E. Haase

คำตอบ:


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 มาก่อนเลย

3
ใช่ฉันทำงานเป็นกระบวนการพื้นหลัง มันใช้งานได้สำหรับฉันเมื่อฉันฆ่า couchdb โดยใช้ couchdb -d และเริ่มต้นใหม่
Kristian

2
คำตอบนี้ช่วยฉันได้! ผมอยากจะแบ่งปันที่หนึ่งได้อย่างง่ายดายอาจเปลี่ยนการตั้งค่านี้โดยใช้อินเตอร์เฟซเว็บ Futon โดยไม่ต้องมีการค้นหาและแก้ไขไฟล์ config ที่เกิดขึ้นจริงบนดิสก์ เพียงไปที่127.0.0.1:5984/_utils/config.html(หรือ URL ที่เทียบเท่าสำหรับการตั้งค่าของคุณ) และดับเบิลคลิกที่ค่าตัวเลือกแก้ไขจากนั้นคลิกเครื่องหมายถูกสีเขียว
Steve Benner

@SteveBenner น่าเสียดายที่ 127.0.0.1,5984/_utils/config.html ไม่ได้นำอะไรมา!
Dr.jacky

@rcampbell couch.ini อยู่ที่ไหน?!
Dr.jacky


7

ฉันสังเกตเห็นว่าเพื่อให้การทำงานนี้คุณต้องฆ่ากระบวนการ erlang ทำงานด้วยตนเองด้วยเหตุผลบางอย่าง ps ax | grep beamควรเปิดเผยกระบวนการ erlang คุณควรได้รับบางสิ่งบางอย่างตามสายของ0:00 /usr/lib/erlang/ertsบางแห่งในผลลัพธ์ หากคุณฆ่ากระบวนการนี้แล้วเรียกใช้/etc/init.d/couchdb restartไฟล์กำหนดค่าใหม่จะถูกโหลด


เหมือนกันสำหรับฉัน - หลังจากฆ่ากระบวนการลำแสงแล้วทำ couchdb -d จากนั้นหยุดบริการ / เริ่ม .. การตั้งค่าใหม่มีผล
Bobby

4

บน PC / Mac ที่บ้านให้เรียกใช้คำสั่งนี้:

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

ถัดไปเปิดในเบราว์เซอร์ในพื้นที่ของคุณ: 5984 / _utils ... มันใช้งานได้สำหรับฉัน


4

เอกสารการกำหนดค่า :

bind_address

หากคุณเปลี่ยนจากแผงการกำหนดค่า Futon คุณไม่จำเป็นต้องทำอะไรอีก (รีบูตฐานข้อมูลเป็นต้น):

ป้อนคำอธิบายรูปภาพที่นี่

ก่อนที่จะเปลี่ยนค่าเริ่มต้น 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 แต่ฉันคิดว่าผู้คนจะได้รับความสำคัญในการเปลี่ยน bind_address ในการกำหนดค่า
Scott Biggs

2

ฉันพบสิ่งนี้และปัญหาของฉันก็คือว่ามี couchdb ติดตั้งอยู่แล้วในการติดตั้ง Ubuntu ฉันแก้ไขไฟล์ config ภายใต้ / etc / couchdb แล้ว แต่ไฟล์ที่ทำงานอยู่นั้นจริง ๆ แล้วก็คือการดึง config จาก / usr / local / etc / couchdb

เคล็ดลับคือการกำหนดค่าใน / etc / couchdb พูดถึง couch 0.10 แต่ฉันเพิ่งติดตั้ง 1.0.1


1

iptables -L -n -vจะแสดงกฎไฟร์วอลล์ปัจจุบันของคุณ ดูว่ามีใครที่ทิ้งแพ็คเก็ตเหล่านั้นก่อนที่มันจะเป็นไปตามกฎของคุณ


ไม่มีกฎ DENY ที่ระบุไว้ในตาราง มิฉะนั้นจะมีสาม ACCEPT หนึ่งอันสำหรับ 5984 และสองซ้ำสำหรับ 8080 ฉันไม่แน่ใจว่าทำไมมีซ้ำสองที่แน่นอนสำหรับ 8080 และเมื่อฉันพยายามตี Tomcat (ทำงานบน 8080) ภายนอกเครือข่ายของเรามันล้มเหลวแม้ แม้ว่าเครื่องในเครือข่ายของเราสามารถใช้ Tomcat ได้
rcampbell

ใจแสดงผลลัพธ์หรือไม่ ถอด IP ของคุณออกถ้าจำเป็น
Bill Weiss

แล้วการวิ่งlsof -i -n -P | grep LISTENและโพสต์นั้นล่ะ คุณกำลังมองหากระบวนการ CouchDB และสิ่งที่ผูกพัน ถ้าเป็น127.0.0.1:5984เช่นนั้นคุณจะต้องกำหนดค่า CouchDB เพื่อฟังการเชื่อมต่อภายนอก ถ้าเป็น*:5984อย่างดีอย่างน้อย CouchDB มีการกำหนดค่าที่เหมาะสม :)
บิลไวส์

สวัสดีบิลขอโทษที่ไม่ตอบสนองเร็ว ฉันโพสต์ข้อมูลดิบที่คุณขอไปแล้ว
rcampbell

วิธีการเกี่ยวกับที่lsofส่งออก?
Bill Weiss
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.