2013-07-25 3 views
1

동일한 서버에 호스트 된 포스트그레스를 사용하여 원격 서버에 샘플 레일즈 애플리케이션을 배포했습니다. database.yml 파일은 다음과 같습니다.다른 서버에있는 데이터베이스의 IP 주소를 설정하십시오.

production: 
    adapter: postgresql 
    encoding: unicode 
    database: remotepg_production 
    pool: 5 
    host: localhost 
    username: mrmann 
    password: secret 

모든 것이 정상적으로 작동합니다. 나는 다음 database.yml을 파일로 가서 내가 레일 응용 프로그램을 사용하여 서버에 포스트 그레스를 다시 시작하면이

production: 
    adapter: postgresql 
    encoding: unicode 
    database: remotepg_production 
    pool: 5 
    host: 178.XXX.XXX.XXX  #ip address of server with other postgres database 
    username: mrmann 
    password: secret 

같은 다른 서버 host: 178.XXX.XXX에 포스트 그레스 데이터베이스의 IP 주소로 host: localhost 교체, 샘플 응용 프로그램은 이제 준 레일스에 대한 '무언가 잘못 됐어'페이지.

사용자 이름의 사용자 이름과 암호는 두 dbs에서 동일합니다. 문제가 무엇인지 제안 해 주시겠습니까? 감사합니다

업데이트

이 내가 연결하려는 데이터베이스 서버에있는 pg_hba.conf의 설정은 다음과 같습니다.

local all    postgres        peer 
local all    all          peer 
host all    all    127.0.0.1/32   md5 
host all    all    ::1/128     md5 

가짜 레일 응용 프로그램 IP : 192.241.XXX.X

가짜 데이터베이스 IP : 192.34.XX.XXX

답변

1

데이터베이스 로그에 액세스 할 수 있습니까? 연결이 데이터베이스에 연결하려고 시도하는 경우 거기에 몇 가지 메시지가 있어야합니다. 내 WAG는 그 IP를 서버의 pg_hba.conf 파일에 추가하고 Postgres를 다시로드해야한다는 것입니다. 더 명확히 말하면 서버의 pg_hba.conf에 추가 할 IP는 응용 프로그램이 연결하는 IP이며 데이터베이스의 listen_addresses 설정 값도 확인해야합니다. 후자가 '*'또는 응용 프로그램의 IP로 설정되지 않은 경우 postgresql.conf에서 변경하고 db 클러스터를 다시 시작해야합니다. 당신의있는 pg_hba.conf의 행이

host all all 192.241.XXX.X md5 

다시로드해야

[편집, 제공하는 새로운 정보]

(다시 시작하지) 포스트 그레스 (예. pg_ctl reload) 한 후 다시 시도하십시오 연결. 실패하면 db 로그를 찾아서 보여주는 것을보십시오. 메시지가 없으면 방화벽 문제 일 수 있습니다. 후자가 의심되는 경우 포트 번호 5432에 관련된 모든 규칙을 찾습니다. iptables -nvL

+0

데이터베이스 로그에 액세스 할 수 있어야하지만 어디에서 찾을 수 있습니까 (도움이 될 수 있습니까?). 레일즈 애플리케이션을 호스팅하는 서버의 pg_hba.conf에 데이터베이스의 IP를 추가해야한다고 사용자의 지침에서 가정하거나 레일스 애플리케이션을 호스팅하는 서버의 IP를 pg_hba.conf에 추가하려고 했습니까? 여분의 데이터베이스와 서버의? – Leahcim

+0

필자가 설정 한 로그 위치는''current_setting ('data_directory') || '/'|| current_setting ('log_directory');'에 있으며, 아마도 그 경로가 로그로 연결됩니다. – bma

+0

'/ etc/postgresql/9.1/main/postgresql.conf'에, 난 그냥 listen_address로 레일 애플 리케이션과 서버의 IP 주소를 설정합니다. 이제 끝났어. 그러나 postgres를 다시 시작하려고했을 때'2013-07-25 17:10:35 UTC 로그 : IPv4 소켓을 바인드 할 수 없습니다 : 요청한 주소를 할당 할 수 없음 2013-07-25 17:10:35 UTC 힌트 : 다른 것이 postmaster는 이미 포트 5432에서 실행 중입니까? 그렇지 않은 경우 몇 초 후에 다시 시도하십시오. 2013-07-25 17:10:35 UTC 경고 : "178.XXX.XXX"의 청취 소켓을 만들 수 없습니다.X " 2013-07-25 17:10:35 UTC 치명적 : TCP/IP 소켓을 만들 수 없음' – Leahcim

관련 문제