【发布时间】:2014-01-21 18:36:48
【问题描述】:
我正在完成我的第一个 Elastic Beanstalk 部署。我已经按照我的意愿加载了我的应用程序。我现在需要弄清楚如何使用我的部署自动部署 PostgreSQL
我将以下内容添加到我的 requirements.txt psycopg2==2.5.1
好像已经安装了
$ psql --version
$ psql (PostgreSQL) 9.2.5
Django 中的settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'database',
'USER': 'user',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
这些设置在部署之前完美运行,这是我在部署后遇到的错误:
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
我认为我不必为 EC2 实例打开防火墙设置来读取它自己的数据库,是吗?也因为它是 Django,所以一切都应该在应用程序运行时自动创建。
【问题讨论】:
-
数据库中填充的是灯具数据还是动态数据?如果它是动态数据,那么自动缩放组不太可能工作,因为实例不知道其他人的更新。动态水平扩展 PostgreSQL 非常困难。 (我还没有找到可行的解决方案)
-
来自固定装置,应该是空白列。我希望我必须手动(或脚本)创建第一个管理员用户,但过去的一切都应该通过 python 网页以编程方式完成。
-
但是,如果您有一个包含 2 个实例的自动缩放组,在一个实例上所做的更改将不会在另一个实例上可见。在我看来,这似乎是数据库的不需要/意外行为。此外,当组缩小到 1 个实例时,另一个实例上的所有数据都会丢失。
-
好消息,我切换到 RDS 以防止这种情况发生。我们会看看我是否可以启动并运行它:)
-
我启动并运行 RDS 时遇到的问题最少,而 Google / SO 搜索能够解决这些问题。我必须做的唯一定制是我的 Django 应用程序的第一个用户,我可以编写脚本,但手动添加同样容易。
标签: django postgresql amazon-web-services amazon-ec2 amazon-elastic-beanstalk