2017-03-18 1 views
0

Django 1.10.5 및 PostgreSQL 9.5를 사용하여 응용 프로그램 서버에서 원격 DB 서버로 마이그레이션을 실행하려고합니다. 이들은 별도의 우분투 16.04 EC2 인스턴스입니다. 필자는 응용 프로그램 서버가 아닌 원격 db 서버에만 Postgresql을 설치했습니다.Django로 원격 데이터베이스로 마이그레이션

host  all  all  10.0.59.0/24  trust 

내가 내 postgresql.conf 파일 내에서 청취 주소를 설정합니다 :

나는 pg_hba_conf 파일을 업데이트

sudo apt-get update 
sudo apt-get install libpq-dev postgresql postgresql-contrib 

:

내가 가진 DB 서버에 전 세계적으로 PostgreSQL을 설치
listen_addresses = '*' 

장고는 앱 서버의 콘도 환경에 살고 있습니다. 나는 psycopg2 == 2.6.2를 conda 환경에 설치했습니다. db 서버에 psycopg2를 설치하지 않았습니다.

: 나는 다음과 같은 오류를 얻을

python manage.py migrate 

:

DATABASES: { 
    "default": { 
     "ENGINE": "django.contrib.gis.db.backends.postgis", 
     "NAME": "mysite", 
     "USER": "postgres", 
     "PASSWORD": "", 
     "HOST": "10.0.59.134", 
     "PORT": "5432" 
    }, 
} 

실행 한 후 : 여기

은 '호스트'는 IP를 DB 서버의 주소입니다 내 장고 데이터베이스 설정입니다

Traceback (most recent call last): 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection 
    self.connect() 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/backends/base/base.py", line 171, in connect 
    self.connection = self.get_new_connection(conn_params) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection 
    connection = Database.connect(**conn_params) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/psycopg2/__init__.py", line 164, in connect 
    conn = _connect(dsn, connection_factory=connection_factory, async=async) 
psycopg2.OperationalError: could not connect to server: Connection refused 
    Is the server running on host "10.0.59.134" and accepting 
    TCP/IP connections on port 5432? 


The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "manage.py", line 21, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/core/management/__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/core/management/base.py", line 294, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/core/management/base.py", line 345, in execute 
    output = self.handle(*args, **options) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 81, in handle 
    connection.prepare_database() 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/contrib/gis/db/backends/postgis/base.py", line 24, in prepare_database 
    with self.cursor() as cursor: 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/backends/base/base.py", line 231, in cursor 
    cursor = self.make_debug_cursor(self._cursor()) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/backends/base/base.py", line 204, in _cursor 
    self.ensure_connection() 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection 
    self.connect() 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection 
    self.connect() 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/backends/base/base.py", line 171, in connect 
    self.connection = self.get_new_connection(conn_params) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection 
    connection = Database.connect(**conn_params) 
    File "/home/ubuntu/anaconda3/envs/mysite/lib/python3.6/site-packages/psycopg2/__init__.py", line 164, in connect 
    conn = _connect(dsn, connection_factory=connection_factory, async=async) 
django.db.utils.OperationalError: could not connect to server: Connection refused 
    Is the server running on host "10.0.59.134" and accepting 
    TCP/IP connections on port 5432? 

두 EC2 인스턴스 모두 사용자 지정 VPC의 개인 서브넷에 있습니다. 인바운드 및 아웃 바운드 규칙에 대한 보안 그룹 설정은 어떤 형태의 트래픽이라도 두 컴퓨터간에주고받을 수 있도록 설정됩니다.

이것은 개인 서브넷의 테스트 사이트이므로 비밀 번호 나 사용자는 없지만 지금은 나와 있습니다.

무엇이 여기에 있습니까?

+0

어, 몰라, 그 오류를 얻기 위해 무엇을하고 있는지 말하지 않았기 때문에. 정확한 오류 메시지와 오류 메시지를 보여주십시오. –

+0

안녕 다니엘. 내 사과. 그에 따라 질문을 업데이트했습니다. 감사. –

답변

0

/etc/postgresql/9.5/main/postgresql.conf 파일에서 CONNECTIONS 및 AUTHENTICATION의 'listen_addresses'변수 앞에 '#'이 제거되지 않은 것으로 나타났습니다.

변수는 할 필요가 :

listen_addreses = '*' 

모두의 작업 벌금을. 내 Django 응용 프로그램은 다른 Ubuntu 16.04 EC2 인스턴스에있는 Postgresql 데이터베이스로 마이그레이션을 실행하는 Ubuntu 16.04 EC2 인스턴스에 있습니다. 두 EC2 인스턴스는 모두 전용 서브넷에 있습니다.

관련 문제