【发布时间】:2017-08-10 07:06:37
【问题描述】:
我正在尝试使用 Django 1.10.5 和 Postgresql 9.5 运行从应用服务器到远程数据库服务器的迁移。这些是单独的 Ubuntu 16.04 EC2 实例。我只在远程数据库服务器上安装了 Postgresql,而不是在应用服务器上。
我在数据库服务器上全局安装了 Postgresql:
sudo apt-get update
sudo apt-get install libpq-dev postgresql postgresql-contrib
我更新了 pg_hba_conf 文件:
host all all 10.0.59.0/24 trust
我将我的 postgresql.conf 文件中的监听地址设置为:
listen_addresses = '*'
Django 存在于应用服务器上的 conda 环境中。我将 pip 安装 psycopg2==2.6.2 安装到 conda 环境中。我没有在数据库服务器上安装 psycopg2。
这是我的 Django DATABASE 设置,其中 'host' 是 db 服务器的 IP 地址:
DATABASES: {
"default": {
"ENGINE": "django.contrib.gis.db.backends.postgis",
"NAME": "mysite",
"USER": "postgres",
"PASSWORD": "",
"HOST": "10.0.59.134",
"PORT": "5432"
},
}
运行后:
python manage.py migrate
我收到以下错误:
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 的私有子网中。入站和出站规则的安全组设置被设置为允许任何形式的流量在任何一台机器上往来。
这是私有子网中的一个测试站点,所以目前没有密码或用户(只有我)。
我在这里错过了什么?
【问题讨论】:
-
呃,不知道,因为你还没有说你正在做什么来得到那个错误。请显示您所做的确切操作以及完整的错误消息。
-
你好丹尼尔。我很抱歉。我已经相应地更新了这个问题。谢谢。
标签: python django postgresql amazon-ec2 conda