使用 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 数据库配置