Mengapa saya tidak bisa mengakses instance CouchDB saya secara eksternal di server Ubuntu 9.04?

27

Pembaruan: Saya membuatnya berfungsi sekarang. Jawaban Jim Zajkowski membantu saya mendeteksi bahwa panggilan reboot /etc/init.d/couchdb saya sebenarnya tidak me-reboot instance. Setelah saya secara manual membunuh proses CouchDB dan memulai contoh baru, ia mengambil perubahan BindAddress yang diperlukan.

Saya telah menginstal CouchDB via

aptitude memasang couchdb

Dari server saya, saya dapat terhubung melalui

telnet localhost 5984

dan jalankan perintah RESTful. Ketika saya mencoba mengakses server dari komputer lain di jaringan kami atau dari mesin di luar jaringan kami, saya mendapatkan koneksi itu kesalahan reset . Saya telah mengatur port forwarding pada router, dan server dapat diakses melalui Apache, Tomcat, SSH, dll.

Saya baru mengenal Linux / Ubuntu, jadi saya tidak yakin apakah ada firewall standar yang memblokir koneksi, jadi saya berlari:

iptables -A INPUT -p tcp --port 5984 -j MENERIMA

tapi itu tidak membantu.

Ini adalah dump dari menjalankan 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

Saya menganggap byte yang ditampilkan sebagai ditransfer untuk 5984 adalah karena koneksi localhost saya.

Ini adalah dump dari menjalankan netstat -an | grep 5984

tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

Saya mengkonfigurasi couch.ini untuk memiliki "BindAddress = 0.0.0.0" dan reboot, jadi itu harus mendengarkan pada semua antarmuka. Ketika saya menjalankan "sudo /etc/init.d/couchdb berhenti" kemudian jalankan netstat, namun, saya masih melihat entri di atas. Sepertinya CouchDB sebenarnya tidak berhenti sama sekali. Ini mungkin menjelaskan masalah saya, karena itu berarti itu berarti CouchDB tidak pernah benar-benar reboot dan tidak pernah mengambil perubahan BindAddress.

Saya secara manual membunuh proses CouchDB dan mulai lagi. Sekarang netstat menunjukkan:

 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

Saya masih tidak bisa terhubung, bahkan dari komputer lain di LAN.

rcampbell
sumber
Masalah ini masih ada di Ubuntu 12. Anda pikir pengelola paket akan memperbaikinya sekarang?
Mark E. Haase

Jawaban:

33

Apa yang netstat -an | grep 5984dikatakan? Apakah itu mengatakan 127.0.0.1:5984atau *:5984? Jika itu 127.0.0.1, maka couchdb perlu diatur untuk mendengarkan semua antarmuka.

Jim Zajkowski
sumber
3
"tcp 0 0 127.0.0.1-5984 0.0.0.0:* LISTEN" adalah hasilnya. Saya mengkonfigurasi couch.ini untuk memiliki "BindAddress = 0.0.0.0" dan reboot, jadi itu harus mendengarkan pada semua antarmuka. Inilah bagian yang aneh: ketika saya menjalankan "sudo /etc/init.d/couchdb stop" lalu jalankan netstat, saya masih melihat entri di atas. Sepertinya CouchDB sebenarnya tidak berhenti sama sekali. Hal ini mungkin menjelaskan masalah saya, karena itu berarti mungkin tidak pernah reboot, dan mungkin tidak pernah mengambil BindAddress perubahan
rcampbell
3
ya, saya sedang menjalankan sebagai proses latar belakang. Itu bekerja untuk saya setelah saya membunuh couchdb menggunakan couchdb -d dan memulainya lagi
Kristian
2
Jawaban ini membantu saya! Saya ingin berbagi bahwa seseorang dapat dengan mudah mengubah pengaturan ini menggunakan antarmuka web Futon, tanpa harus menemukan dan mengedit file konfigurasi aktual pada disk . Cukup navigasikan ke 127.0.0.1:5984/_utils/config.html(atau URL yang setara untuk pengaturan Anda) dan klik dua kali nilai opsi, edit, lalu klik tanda centang hijau.
Steve Benner
@SteveBenner Sayangnya 127.0.0.1-5984/_utils/config.html tidak membawa apa-apa!
Dr.jacky
@ Arcampbell Di mana couch.ini?!
Dr.jacky
15

Anda harus mengubah bind_address di /etc/couchdb/default.ini. Kemudian restart layanan dan coba lagi.

filtenborg
sumber
3
yaitu mengubah ke 0.0.0.0
Tim Rae
7

Saya perhatikan bahwa agar ini berfungsi, Anda harus mematikan proses erlang yang sedang berjalan karena suatu alasan. ps ax | grep beamSeharusnya mengungkapkan proses erlang, Anda harus mendapatkan sesuatu di sepanjang garis 0:00 /usr/lib/erlang/ertsdi suatu tempat di output. Jika Anda mematikan proses ini dan kemudian jalankan /etc/init.d/couchdb restartfile konfigurasi baru akan dimuat.

pengguna54291
sumber
sama untuk saya - hanya setelah mematikan proses beam, kemudian lakukan couchdb -d, dan kemudian service stop / start .. apakah pengaturan baru mulai berlaku.
Bobby
4

Di PC rumah / Mac jalankan perintah ini:

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

selanjutnya buka di localhost browser Anda: 5984 / _utils ... Ini berfungsi untuk saya

Alexander Ovchinnikov
sumber
4

Dokumen konfigurasi :

bind_address

Jika Anda mengubahnya dari panel konfigurasi Futon, Anda tidak perlu melakukan hal lain (me-reboot db dll.):

masukkan deskripsi gambar di sini

Sebelum mengubah bind_address default:

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

Setelah berubah menjadi 0.0.0.0:

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

Catatan non-guru: komputer yang tidak dapat mengakses komputer Anda (biasanya, apa pun di luar jaringan lokal Anda) masih tidak dapat mengakses komputer Anda (CouchDB atau yang lainnya).

Pete
sumber
Meskipun jawaban ini cukup lama, tampaknya mengarah ke tempat yang tepat. Futon telah diganti dengan Fauxton, tapi saya pikir orang akan mendapatkan inti dari mengubah bind_address di Konfigurasi.
Scott Biggs
2

Saya mengalami ini, dan masalah saya akhirnya adalah ternyata, ternyata, couchdb sudah diinstal pada instalasi Ubuntu saya. Saya telah mengedit file config di bawah / etc / couchdb, tetapi file yang sedang berjalan sebenarnya menarik config dari / usr / local / etc / couchdb.

Kiatnya adalah bahwa konfigurasi di / etc / couchdb menyebutkan sofa 0.10, tapi saya baru saja menginstal 1.0.1.

Mat
sumber
1

iptables -L -n -vakan menunjukkan kepada Anda aturan firewall Anda saat ini. Lihat apakah ada satu yang menjatuhkan paket-paket itu sebelum sampai ke aturan Anda.

Bill Weiss
sumber
Tidak ada aturan DENY yang tercantum dalam tabel. Kalau tidak, ada tiga ACCEPT, satu untuk 5984 dan dua duplikat untuk 8080. Saya tidak yakin mengapa ada dua duplikat yang tepat untuk 8080, dan ketika saya mencoba untuk memukul Tomcat (berjalan pada 8080) di luar jaringan kami gagal, bahkan meskipun mesin di jaringan kami dapat menekan Tomcat dengan baik.
rcampbell
Pikiran menunjukkan output? Keluarkan IP Anda jika perlu.
Bill Weiss
Bagaimana dengan menjalankan lsof -i -n -P | grep LISTENdan memposting itu? Anda sedang mencari proses CouchDB, dan apa itu terikat. Jika itu 127.0.0.1:5984, Anda perlu mengonfigurasi CouchDB untuk mendengarkan koneksi eksternal. Jika itu *:5984, baik, setidaknya CouchDB dikonfigurasi kanan :)
Bill Weiss
Hai Bill, maaf karena tidak merespons lebih cepat. Saya telah mengirim dump mentah yang Anda minta ke pertanyaan.
rcampbell,
Bagaimana dengan lsofhasil itu?
Bill Weiss