Por que não consigo acessar minha instância do CouchDB externamente no servidor Ubuntu 9.04?


27

Atualização: eu consegui trabalhar agora. A resposta de Jim Zajkowski me ajudou a detectar que minhas chamadas de reinicialização do /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 captou a alteração necessária no BindAddress.

Eu instalei o CouchDB via

aptitude install couchdb

No meu servidor, eu posso 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 à 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.

Eu sou novo no Linux / Ubuntu, então não tinha certeza se havia um firewall padrão bloqueando a conexão, então executei:

iptables -A INPUT -p tcp --dport 5984 -j ACEITAR

mas não ajudou.

Aqui está o dump da execução do 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

Presumo que os bytes exibidos como transferidos para 5984 sejam devidos à minha conexão localhost.

Aqui está o despejo da execução de netstat -an | grep 5984

tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

Eu configurei o couch.ini para ter "BindAddress = 0.0.0.0" e reiniciei, portanto, ele deve estar ouvindo em todas as interfaces. Quando executo "sudo /etc/init.d/couchdb stop", em seguida, executo o netstat, no entanto, ainda vejo a entrada acima. Parece que o CouchDB não está realmente parando. Isso pode explicar meu problema, porque significa que pode significar que o CouchDB nunca realmente foi reiniciado e nunca recebeu a alteração BindAddress.

Eu matei o processo do CouchDB manualmente e o iniciei novamente. Agora, o 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 conectar, mesmo de outra máquina na LAN.


Esse problema ainda existe no Ubuntu 12. Você acha que o mantenedor do pacote já teria corrigido isso agora?
precisa

Respostas:


33

O que netstat -an | grep 5984diz? Diz 127.0.0.1:5984ou *:5984? Se estiver 127.0.0.1, o couchdb precisa ser configurado para ouvir todas as interfaces.


3
"tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN" é o resultado. Eu configurei o couch.ini para ter "BindAddress = 0.0.0.0" e reiniciei, portanto, ele deve estar ouvindo em todas as interfaces. Aqui está a parte estranha: quando eu executo "sudo /etc/init.d/couchdb stop", em seguida, executo netstat, ainda vejo a entrada acima. Parece que o CouchDB não está realmente parando. Isto pode explicar o meu problema, porque isso significa que ele provavelmente nunca reiniciado, e provavelmente nunca pegou a mudança BindAddress
rcampbell

3
Sim, eu estava executando como um processo em segundo plano. ele trabalhou para mim uma vez eu matei couchdb usando couchdb -d e reiniciado-lo
Kristian

2
Esta resposta me ajudou! Eu queria compartilhar que é possível alterar facilmente essa configuração usando a interface da web do Futon, sem precisar encontrar e editar o arquivo de configuração real no disco . Basta navegar para 127.0.0.1:5984/_utils/config.html(ou URL equivalente para a sua configuração) e clicar duas vezes no valor da opção, editar e clicar na marca de seleção verde.
Steve Benner

@SteveBenner Infelizmente, 127.0.0.1:5984/_utils/config.html não traz nada!
Dr.jacky

@rcampbell Onde está o couch.ini ?!
21415 Dr.Jacky


7

Percebi que, para que isso funcione, você deve manualmente matar o processo erlang em execução por algum motivo. ps ax | grep beamdeve revelar o processo erlang, você deve obter algo ao longo de linhas de 0:00 /usr/lib/erlang/ertsalgum lugar na saída. Se você finalizar esse processo e executar, /etc/init.d/couchdb restarto novo arquivo de configuração será carregado.


o mesmo para mim - somente após o término do processo de transferência, faça o couchdb -d e o serviço pare / inicie .. a nova configuração entrou em vigor.
Bobby

4

No PC / Mac doméstico, execute este comando:

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

próximo aberto no seu navegador localhost: 5984 / _utils ... Funciona para mim


4

Documentos de configuração :

bind_address

Se você o alterar no painel de configuração do Futon, não precisará fazer mais nada (reiniciar o banco de dados etc.):

insira a descrição da imagem aqui

Antes de alterar o endereço bind_ad 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 que não são gurus: os computadores que não podem acessar o seu (normalmente, qualquer coisa fora da rede local) ainda não poderão acessar o seu computador (CouchDB ou qualquer outra coisa).


Embora essa resposta seja bastante antiga, ela parece levar ao lugar certo. O futon foi substituído pelo Fauxton, mas acho que as pessoas terão a essência de alterar o endereço de bind_ na configuração.
22475 Scott Scott

2

Eu encontrei isso, e meu problema acabou sendo que, aparentemente, o couchdb já estava instalado na minha instalação do Ubuntu. Eu estava editando os arquivos de configuração em / etc / couchdb, mas o que estava sendo executado estava de fato puxando a configuração de / usr / local / etc / couchdb.

A dica foi que as configurações no / etc / couchdb mencionaram o couch 0.10, mas eu tinha acabado de instalar a 1.0.1.


1

iptables -L -n -virá mostrar suas regras atuais de firewall. Veja se há um que está descartando esses pacotes antes que eles atinjam sua regra.


Não há regras DENY listadas na tabela. Caso contrário, existem três ACEITAR, um para 5984 e duas duplicatas para 8080. Não sei por que existem duas duplicatas exatas para 8080, e quando tento acessar o Tomcat (executando no 8080) fora da nossa rede, ele falha, até embora as máquinas da nossa rede possam atingir o Tomcat perfeitamente.
Rcampbell 30/10/09

Mente mostrando a saída? Retire seu IP, se necessário.
Bill Weiss

Que tal rodar lsof -i -n -P | grep LISTENe postar isso? Você está procurando o processo do CouchDB e a que ele está vinculado. Se for 127.0.0.1:5984, você precisa configurar o CouchDB para ouvir conexões externas. Se é *:5984, bem, pelo menos CouchDB está configurado direito :)
Bill Weiss

Oi Bill, desculpe por não responder mais cedo. Publiquei o despejo bruto que você solicitou na pergunta.
Rcampbell 4/11/2009

Que tal essa lsofsaída?
Bill Weiss
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.