O que netstat -an | grep 5984
diz? Diz 127.0.0.1:5984
ou *:5984
? Se for 127.0.0.1
, então couchdb precisa ser configurado para ouvir todas as interfaces.
Atualização: Eu consegui trabalhar agora. A resposta de Jim Zajkowski me ajudou a detectar que minhas chamadas de reinicialização /etc/init.d/couchdb não estavam realmente reiniciando a instância. Depois que eu matei manualmente os processos do CouchDB e iniciei uma nova instância, ela pegou a alteração BindAddress necessária.
Eu instalei o CouchDB via
aptitude install couchdb
Do meu servidor, posso me conectar via
telnet localhost 5984
e execute comandos RESTful. Quando tento acessar o servidor de outra máquina em nossa rede ou de uma máquina externa de nossa rede, recebo um erro A conexão foi redefinida . Configurei o encaminhamento de porta no roteador e o servidor pode ser acessado via Apache, Tomcat, SSH, etc.
Sou novo no Linux / Ubuntu, então não tinha certeza se havia um firewall padrão bloqueando a conexão, então eu corri:
iptables -A INPUT -p tcp --dport 5984 -j ACCEPT
mas isso não ajudou.
Aqui está o despejo da execução de 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
Eu assumo que os bytes mostrados como transferidos para 5984 são devidos à minha conexão localhost.
Aqui está o despejo da execução netstat -an | grep 5984
tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN
Eu configurei couch.ini para ter "BindAddress = 0.0.0.0" e reiniciei, então deveria estar escutando em todas as interfaces. Quando eu executo "sudo /etc/init.d/couchdb stop", em seguida, executar netstat, no entanto, ainda vejo a entrada acima. Parece que o CouchDB não está parando de jeito nenhum. Isso pode explicar o meu problema, porque isso significa que o CouchDB nunca foi reinicializado e nunca pegou a alteração BindAddress.
Eu matei manualmente o processo do CouchDB e o iniciei novamente. Agora netstat mostra:
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
Ainda não consigo me conectar, mesmo de outra máquina na LAN.
Você precisa alterar o bind_address em /etc/couchdb/default.ini. Em seguida, reinicie o serviço e tente novamente.
Eu notei que para que isso funcione você deve manualmente matar o processo erlang em execução por algum motivo. ps ax | grep beam
deve revelar o processo erlang, você deve obter algo ao longo de linhas de 0:00 /usr/lib/erlang/erts
em algum lugar na saída. Se você eliminar esse processo e executar /etc/init.d/couchdb restart
, o novo arquivo de configuração será carregado.
No PC / Mac inicial, execute este comando:
ssh -L 5984:localhost:5984 YOUR-SERVER-IP-HERE
em seguida, abra em seu navegador localhost: 5984 / _utils ... Isso funciona para mim
SevocêalteraropaineldeconfiguraçãodoFuton,nãoprecisaráfazermaisnada(reinicializandoobancodedados,etc.):
Antes de alterar o bind_address padrão:
peter@earth:~/$ netstat -an | grep 5984
tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN
Depois de mudar para 0.0.0.0:
peter@earth:~/$ netstat -an | grep 5984
tcp 0 0 0.0.0.1:5984 0.0.0.0:* LISTEN
Observe os não-gurus: computadores que não podem acessar o seu (normalmente, qualquer coisa fora de sua rede local) ainda não poderão acessar seu computador (CouchDB ou qualquer outra coisa).
Eu encontrei isso, e meu problema acabou sendo que havia, aparentemente, couchdb já instalado na minha instalação do Ubuntu. Eu estava editando os arquivos de configuração em / etc / couchdb, mas o que estava rodando estava na verdade puxando a configuração de / usr / local / etc / couchdb.
A dica foi que as configurações em / etc / couchdb mencionavam o couch 0.10, mas eu tinha acabado de instalar o 1.0.1.
iptables -L -n -v
mostrará suas regras atuais de firewall. Veja se há algum que esteja descartando esses pacotes antes que ele chegue à sua regra.