【问题标题】:AWS Elastic Beanstalk hosting PostreSQL on deployed EC2 server with DjangoAWS Elastic Beanstalk 使用 Django 在部署的 EC2 服务器上托管 PostgreSQL
【发布时间】: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


【解决方案1】:

如上所述,在 EC2 服务器上使用 PostgreSQL 对于动态数据和扩展来说是个坏主意。

为此目的使用了 RDS,它完美地工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 2018-02-09
    • 2020-02-20
    • 2016-01-17
    • 2021-04-29
    • 2021-09-10
    • 2020-03-24
    • 2019-05-30
    相关资源
    最近更新 更多