[server] Ubuntu 9.04 서버에서 외부 CouchDB 인스턴스에 액세스 할 수없는 이유는 무엇입니까?

업데이트 : 지금 작동하고 있습니다. Jim Zajkowski의 답변을 통해 /etc/init.d/couchdb 재부팅 호출이 실제로 인스턴스를 재부팅하지 않았 음을 감지 할 수 있었습니다. CouchDB 프로세스를 수동으로 종료하고 새 인스턴스를 시작한 후 필요한 BindAddress 변경 사항을 선택했습니다.

나는 CouchDB를 통해 설치했다

적성 설치 couchdb

내 서버에서 연결할 수 있습니다

텔넷 로컬 호스트 5984

RESTful 명령을 실행하십시오. 네트워크의 다른 컴퓨터 나 네트워크 외부의 컴퓨터에서 서버에 액세스하려고하면 연결이 재설정되었습니다 오류가 발생합니다. 라우터에서 포트 전달을 설정했으며 Apache, Tomcat, SSH 등을 통해 서버에 액세스 할 수 있습니다.

Linux / Ubuntu를 처음 사용하므로 연결을 차단하는 기본 방화벽이 있는지 확실하지 않았으므로 다음을 실행했습니다.

iptables -A 입력 -p tcp –dport 5984 -j 수락

그러나 도움이되지 않았습니다.

다음은 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 | 그렙 5984

tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN

BindAddress = 0.0.0.0″을 갖도록 couch.ini 를 구성 하고 재부팅하므로 모든 인터페이스에서 수신 대기 해야 합니다. “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

LAN의 다른 컴퓨터에서도 여전히 연결할 수 없습니다.



답변

무엇합니까 netstat -an | grep 5984말은? 127.0.0.1:5984또는 말합니까 *:5984? 이 경우 127.0.0.1모든 인터페이스를 수신하도록 couchdb를 설정해야합니다.


답변

/etc/couchdb/default.ini에서 bind_address를 변경해야합니다. 그런 다음 서비스를 다시 시작하고 다시 시도하십시오.


답변

이것이 작동하려면 어떤 이유로 든 실행중인 erlang 프로세스를 수동으로 종료해야한다는 것을 알았습니다. ps ax | grep beam얼랭 프로세스를 드러내야한다. 당신은 0:00 /usr/lib/erlang/erts출력 어딘가에서 무언가를 얻어야한다 . 이 프로세스를 종료 한 다음 실행 /etc/init.d/couchdb restart하면 새 구성 파일이로드됩니다.


답변

가정용 PC / Mac에서 다음 명령을 실행하십시오.

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

다음은 브라우저에서 열기 localhost : 5984 / _utils … 그것은 나를 위해 작동


답변

구성 문서 :

bind_address

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 또는 다른 컴퓨터)에 액세스 할 수 없습니다.


답변

이 문제가 발생하여 Ubuntu 설치에 couchdb가 이미 설치되어 있다는 문제가 발생했습니다. / etc / couchdb에서 구성 파일을 편집했지만 실제로 실행중인 파일은 / usr / local / etc / couchdb에서 구성을 가져 오는 것입니다.

팁은 / etc / couchdb의 구성이 소파 0.10을 언급했지만 1.0.1을 설치 한 것입니다.


답변

iptables -L -n -v현재 방화벽 규칙을 보여줍니다. 규칙에 도달하기 전에 해당 패킷을 삭제하는 패킷이 있는지 확인하십시오.