使用 Postgres 在 Elastic Beanstalk 上设置 Django

Posted

技术标签:

【中文标题】使用 Postgres 在 Elastic Beanstalk 上设置 Django【英文标题】:Setting up Django on Elastic Beanstalk with Postgres 【发布时间】:2014-12-12 03:45:33 【问题描述】:

我应该如何在 EC2 Elastic Beanstalk 上为 Django 设置我的 settings.py 文件以使用 Postgres RDS?

These docs 只为 mysql 提供 settings.py

【问题讨论】:

【参考方案1】:

您可能只需要更改数据库对象中的引擎设置。您需要将 psycopg2 安装到您的环境中。这是我的样子。只需填写您的数据库信息。

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',        # Or path to database file if using sqlite3.
        'USER': '',        # Not used with sqlite3.
        'PASSWORD': '',      # Not used with sqlite3.
        'HOST': '',                 # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                 # Set to empty string for default. Not used with sqlite3.
    

【讨论】:

我不太确定我是否遵循 NAME、HOST 等的值。我认为它们不应该为空,而应该看起来像 MySQL 的设置?:'HOST': os.environ['RDS_HOSTNAME'] 这是一个不错的开始:ashokfernandez.wordpress.com/2014/03/11/…【参考方案2】:

使用 psycopg2,并使用环境变量(在 Elastic Beanstalk 中为您提供):

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': os.environ['RDS_DB_NAME'],
        'USER': os.environ['RDS_USERNAME'],
        'PASSWORD': os.environ['RDS_PASSWORD'],
        'HOST': os.environ['RDS_HOSTNAME'],
        'PORT': os.environ['RDS_PORT'],
    

您需要在 pip requirements.txt 文件中包含 psycopg2(使用 pip freeze > requirements.txt 创建),并且可能还需要通过在 .ebextensions/package.config 文件中包含以下内容来安装 Postgres 依赖项 postgresql-devel(文件名不必是packages.config,这正是我使用的):

packages:
  yum:
    postgresql-devel: []

【讨论】:

我收到“yum 不包含 postgresql-devel”的错误!! 我也有这个问题。我认为 2014-09 Linux 版本存在问题。选择 2014-03,它应该可以工作。 在 2014 年 9 月尝试 postgresql92-devel 或 postgresql93-devel

以上是关于使用 Postgres 在 Elastic Beanstalk 上设置 Django的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Postgres 数据库从一个 Elastic Beanstalk 环境复制到另一个环境?我正在使用 Rails 5

将 Postgres11 部署到 Elastic Beanstalk - 需要 /etc/redhat-release

Elastic Beanstalk 经典负载均衡器 HTTPS 未连接

Elastic Beanstalk Django 数据库配置

Elastic Beanstalk 没有看到 DATABASES 设置的变化 - Django

Moqui 在 Elastic Beanstalk Tomcat 实例上部署到 AWS