Обновить: Теперь он работает. Ответ Джима Зайковски помог мне обнаружить, что мой /etc/init.d/couchdb вызовы reboot фактически не перезагружали экземпляр. После того, как я вручную завершил процессы CouchDB и запустил новый экземпляр, он получил необходимое изменение BindAddress.
Я установил CouchDB через
aptitude установить couchdb
Со своего сервера я могу подключиться через
локальный telnet 5984
и выполнить команды RESTful. Когда я пытаюсь получить доступ к серверу с другой машины в нашей сети или с машины вне нашей сети, я получаю Соединение было сброшено ошибка. Я настроил переадресацию портов на маршрутизаторе, и в противном случае сервер доступен через 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
Я все еще не могу подключиться, даже с другого компьютера в локальной сети.
Что значит netstat -an | grep 5984
сказать? Это говорит 127.0.0.1:5984
или *:5984
? Если это 127.0.0.1
, то нужно настроить couchdb для прослушивания любого из интерфейсов.
Вам необходимо изменить bind_address в /etc/couchdb/default.ini. Затем перезапустите службу и попробуйте еще раз.
Я заметил, что для того, чтобы это сработало, вы должны по какой-то причине вручную убить запущенный процесс erlang.ps ax | grep beam
должен раскрыть процесс erlang, вы должны получить что-то вроде 0:00 /usr/lib/erlang/erts
где-то на выходе. Если вы убьете этот процесс, а затем запустите /etc/init.d/couchdb restart
будет загружен новый файл конфигурации.
На домашнем ПК / Mac выполните эту команду:
ssh -L 5984:localhost:5984 YOUR-SERVER-IP-HERE
затем откройте в браузере localhost: 5984 / _utils ... У меня работает
Если вы измените его из панели конфигурации Futon, вам больше не придется ничего делать (перезагружать db и т. Д.):
Перед изменением 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 или что-то еще).
Я столкнулся с этим, и моя проблема в том, что, по-видимому, couchdb уже был установлен в моей установке Ubuntu. Я редактировал файлы конфигурации в / etc / couchdb, но тот, который был запущен, фактически извлекал конфигурацию из / usr / local / etc / couchdb.
Подсказкой было то, что в конфигурациях в / etc / couchdb упоминается couch 0.10, но я только что установил 1.0.1.
iptables -L -n -v
покажет вам текущие правила брандмауэра. Посмотрите, есть ли тот, который отбрасывает эти пакеты, прежде чем он попадет в ваше правило.