Tại sao tôi không thể truy cập phiên bản CouchDB của mình bên ngoài trên máy chủ Ubuntu 9.04?


27

Cập nhật: Tôi đã làm cho nó làm việc bây giờ. Câu trả lời của Jim Zajkowski đã giúp tôi phát hiện ra rằng /etc/init.d/couchdb các cuộc gọi khởi động lại không thực sự khởi động lại thể hiện. Sau khi tôi giết thủ công các quy trình CouchDB và bắt đầu một phiên bản mới, nó đã chọn thay đổi BindAddress cần thiết.

Tôi đã cài đặt CouchDB qua

năng lực cài đặt couchdb

Từ máy chủ của tôi, tôi có thể kết nối qua

telnet localhost 5984

và thực hiện các lệnh RESTful. Khi tôi cố gắng truy cập máy chủ từ một máy khác trong mạng của chúng tôi hoặc từ một máy bên ngoài mạng của chúng tôi, tôi nhận được lỗi Kết nối được đặt lại . Tôi đã thiết lập chuyển tiếp cổng trên bộ định tuyến và máy chủ có thể truy cập được thông qua Apache, Tomcat, SSH, v.v.

Tôi mới sử dụng Linux / Ubuntu, vì vậy tôi không chắc có tường lửa mặc định chặn kết nối hay không, vì vậy tôi đã chạy:

iptables -A INPUT -p tcp --dport 5984 -j CHẤP NHẬN

nhưng nó không giúp được gì.

Đây là kết xuất từ ​​việc chạy 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

Tôi giả sử các byte hiển thị khi được chuyển cho 5984 là do kết nối localhost của tôi.

Đây là bãi chứa từ việc chạy netstat -an | grep 5984

tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

Tôi đã cấu hình couch.ini để có "BindAddress = 0.0.0.0" và được khởi động lại, vì vậy nó nên lắng nghe trên tất cả các giao diện. Tuy nhiên, khi tôi chạy "sudo /etc/init.d/couchdb stop" thì chạy netstat, tuy nhiên, tôi vẫn thấy mục trên. Có vẻ như CouchDB thực sự không dừng lại ở tất cả. Điều này có thể giải thích vấn đề của tôi, bởi vì điều đó có nghĩa là CouchDB chưa bao giờ thực sự khởi động lại và không bao giờ chọn thay đổi BindAddress.

Tôi đã giết thủ công quy trình CouchDB và khởi động lại. Bây giờ netstat cho thấy:

 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

Tôi vẫn không thể kết nối, ngay cả từ một máy khác trong mạng LAN.


Vấn đề này vẫn còn tồn tại trong Ubuntu 12. Bạn có nghĩ rằng bộ bảo trì gói đã sửa lỗi này chưa?
Đánh dấu E. Haase

Câu trả lời:


33

netstat -an | grep 5984nói gì Nó nói 127.0.0.1:5984hay *:5984? Nếu đó là 127.0.0.1, thì couchdb cần phải được thiết lập để lắng nghe tất cả các giao diện.


3
"tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN" là kết quả. Tôi đã cấu hình couch.ini để có "BindAddress = 0.0.0.0" và được khởi động lại, vì vậy nó nên lắng nghe trên tất cả các giao diện. Đây là phần lạ: khi tôi chạy "sudo /etc/init.d/couchdb stop" rồi chạy netstat, tôi vẫn thấy mục trên. Có vẻ như CouchDB thực sự không dừng lại ở tất cả. Điều này có thể giải thích vấn đề của tôi, bởi vì điều đó có nghĩa là nó có thể không bao giờ được khởi động lại và có lẽ không bao giờ chọn thay đổi
BindAddress

3
vâng, tôi đã chạy như một quá trình nền. nó hoạt động với tôi khi tôi giết couchdb bằng couchdb -d và khởi động lại nó
Kristian

2
Câu trả lời này đã giúp tôi! Tôi muốn chia sẻ rằng người ta có thể dễ dàng thay đổi cài đặt này bằng giao diện web Futon mà không phải tìm và chỉnh sửa tệp cấu hình thực tế trên đĩa . Chỉ cần điều hướng đến 127.0.0.1:5984/_utils/config.html(hoặc URL tương đương cho thiết lập của bạn) và nhấp đúp vào giá trị tùy chọn, chỉnh sửa, sau đó nhấp vào dấu kiểm màu xanh lục.
Steve Benner

@SteveBenner Thật không may 127.0.0.1:5984/_utils/config.html không mang lại điều gì!
Dr.jacky

@rcampbell couch.ini ở đâu?!
Dr.jacky 7/07/2015


7

Tôi nhận thấy rằng để làm việc này, bạn phải tự hủy quá trình erlang đang chạy vì một số lý do. ps ax | grep beamPhải tiết lộ quá trình erlang, bạn sẽ nhận được một cái gì đó dọc theo một dòng 0:00 /usr/lib/erlang/ertsở đâu đó trong đầu ra. Nếu bạn giết quá trình này và sau đó chạy /etc/init.d/couchdb restarttệp cấu hình mới sẽ được tải.


tương tự đối với tôi - chỉ sau khi giết quá trình truyền tia, sau đó thực hiện couchdb -d và sau đó dừng / bắt đầu dịch vụ .. thì cài đặt mới có hiệu lực.
Bobby

4

Trên PC / Mac tại nhà chạy lệnh này:

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

mở tiếp theo trong trình duyệt của bạn localhost: 5984 / _utils ... Nó hoạt động với tôi


4

Tài liệu cấu hình :

bind_address

Nếu bạn thay đổi nó từ bảng cấu hình Futon, bạn không phải làm gì khác (khởi động lại db, v.v.):

nhập mô tả hình ảnh ở đây

Trước khi thay đổi bind_address mặc định:

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

Sau khi thay đổi thành 0.0.0.0:

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

Lưu ý không phải là chuyên gia: các máy tính không thể truy cập vào máy của bạn (thông thường, mọi thứ bên ngoài mạng cục bộ của bạn) sẽ vẫn không thể truy cập vào máy tính của bạn (CouchDB hoặc bất cứ thứ gì khác).


Trong khi câu trả lời này khá cũ, nó dường như dẫn đến đúng nơi. Futon đã được thay thế bằng Fauxton, nhưng tôi nghĩ mọi người sẽ nhận được ý chính trong việc thay đổi bind_address trong Cấu hình.
Scott Biggie

2

Tôi đã gặp phải điều này và vấn đề của tôi là cuối cùng, rõ ràng, couchdb đã được cài đặt trong bản cài đặt Ubuntu của tôi. Tôi đã chỉnh sửa các tập tin cấu hình trong / etc / couchdb, nhưng tập tin đang chạy thực tế là kéo cấu hình từ / usr / local / etc / couchdb.

Điểm nổi bật là các cấu hình trong / etc / couchdb đã đề cập đến couch 0.10, nhưng tôi mới cài đặt 1.0.1.


1

iptables -L -n -vsẽ cho bạn thấy các quy tắc tường lửa hiện tại của bạn. Xem nếu có một trong số đó làm rơi các gói đó trước khi nó đi đến quy tắc của bạn.


Không có quy tắc DENY được liệt kê trong bảng. Mặt khác, có ba ACCEPT, một cho 5984 và hai bản sao cho 8080. Tôi không chắc tại sao có hai bản sao chính xác cho 8080 và khi tôi cố gắng đánh Tomcat (chạy trên 8080) bên ngoài mạng của chúng tôi, nó thậm chí không thành công mặc dù máy trên mạng của chúng tôi có thể đạt Tomcat tốt.
RCampbell

Tâm hiển thị đầu ra? Lấy IP của bạn ra nếu cần.
Bill Weiss

Làm thế nào về việc chạy lsof -i -n -P | grep LISTENvà đăng bài đó? Bạn đang tìm kiếm quy trình CouchDB và những gì nó bị ràng buộc. Nếu có 127.0.0.1:5984, bạn cần định cấu hình CouchDB để lắng nghe các kết nối bên ngoài. Nếu đúng *:5984, ít nhất, CouchDB được cấu hình đúng :)
Bill Weiss

Xin chào Bill, xin lỗi vì đã không trả lời sớm hơn. Tôi đã đăng các bãi chứa thô mà bạn yêu cầu cho câu hỏi.
RCampbell

Làm thế nào về lsofđầu ra đó ?
Bill Weiss
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.