AWS Elastic Beanstalk 使用 Django 在部署的 EC2 服务器上托管 PostgreSQL
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk 使用 Django 在部署的 EC2 服务器上托管 PostgreSQL【英文标题】:AWS Elastic Beanstalk hosting PostreSQL on deployed EC2 server with Django 【发布时间】: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 应用程序的第一个用户,我可以编写脚本,但手动添加同样容易。 【参考方案1】:如上所述,在 EC2 服务器上使用 PostgreSQL 对于动态数据和扩展来说是个坏主意。
为此目的使用了 RDS,它完美地工作。
【讨论】:
以上是关于AWS Elastic Beanstalk 使用 Django 在部署的 EC2 服务器上托管 PostgreSQL的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 上禁止使用 Django 403
使用 AWS CodeBuild 和 EB CLI 部署到 AWS Elastic Beanstalk