设置的Django和PostgreSQL在两个不同的EC2实例(Setting Up Django

2019-07-03 21:37发布

你好StackOverFlowers :)到现在为止我已经运行我的Django的后端,并在同一微EC2实例我的PostgreSQL数据库。

我设置了两个EC2实例,一个与我的Django的后端和与我的PostgreSQL数据库的其他实例上,我用pgadminII来管理它。 这两种情况都使用相同的安全组,并拥有所有相同的端口打开。 我已经附加了弹性IP到我的Django的实例和另一个弹性IP到我的PostgreSQL实例。

现在我知道在settings.py我需要改变“HOST”到PostgreSQL实例的地址。 但我不能肯定要放什么东西。 难道我把PostgreSQL实例的弹性IP?

我做了一些研究,许多消息来源说,我需要把在PostgreSQL实例的内部服务器的IP地址。 如果是这样的情况下,我怎么能找到的内部服务器的IP地址,并输入该到“HOST”? 我复制并粘贴下面的settings.py代码清晰。

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', 
'NAME': 'django_db', 
'USER': 'django_login',
'PASSWORD': 'password', 
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}

感谢您的帮助,如果我不够清晰,请发表评论,让我知道,这样我可以更清楚你和他人:)

Answer 1:

AMAZON支持

所以我结束了之后还有大卫Wolever的答复谈论亚马逊的家伙。 万一任何你遇到这个帖子试。 单独使用内部服务器的IP是不够的,但它是一个良好的开端。 如果您正在为您的PostgreSQL实例(最好是纳蒂独角鲸)运行Ubuntu,请确保您编辑的pg_hba.conf和postgresql.conf中的文件。

您通常可以找到这两个文件:/etc/postgresql/8.4/main/(pg_hba.conf或postgresql.conf中)

你要知道,我们在我们的堆栈使用PostgreSQL 8.4,它被证明是的PostgreSQL是最一致的,可靠的版本在我们的测试上纳蒂独角鲸运行。

对于不同版本的PostgreSQL的(9.1,9.0等)来,你可以找到的目录中的这两个文件都是不一样的上面列出。 确保你知道正确的目录到这些文件。

步骤1

转到亚马逊管理控制台,并确保这两种情况下是相同的安全组下。 PostgreSQL和Django的使用5432和8000在默认情况下,所以一定要确保你有这两个口岸的开放!

第2步

(在PostgreSQL实例执行此操作在终端上)

须藤的vim的postgresql.conf

按“I”在键盘上开始进行更改。 直到你遇到使用向下箭头键

的listen_addresses: 'localhost'的

摆脱前和,而不是“本地主机”,添加您的PostgreSQL实例的私有IP哈希标签(你可以找到你的EC2管理控制台上的私有IP),还必须添加127.0.0.1。

例:

的listen_addresses: '私有IP,127.0.0.1'

确保您用逗号分隔的私有IP和本地主机地址和离开这一切的一个报价下。

一旦你所做的更改, 按ESC键,然后按ZZ(在上限,以保存更改两次)

STEP 3

须藤的vim的pg_hba.conf

直到你遇到的东西,看起来像这样使用向下箭头键:

           Database administrative login by UNIX sockets
  local   all         postgres                          ident

  # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

  # "local" is for Unix domain socket connections only
  local   all         all                               md5
  # IPv4 local connections:
  host    all         all         127.0.0.1/32          trust
  # IPv6 local connections:
  host    all         all         ::1/128               md5
  local   django_db   django_login                      md5
  host    replication postgres    127.0.0.1/32          md5
  host    replication postgres    ::1/128               md5

再次,按“i”在键盘上,使更改它到底我有它上面的方式。

你会在IPv6下发现,我有django_db和django_login,将其更改为您的PostgreSQL数据库,你分别使用PostgreSQL数据库的名称和您的用户登录。

一旦你所做的更改, 按ESC键,然后按ZZ(在上限,以保存更改两次)

STEP 4(几乎完成了hi5!)

重新启动在终端使用该命令PostgreSQL服务器:

须藤/etc/init.d/postgresql的重启

恭喜! 服务器启动并运行,但是还有最后一步。

第5步

启动您的Django EC2实例,去你的settings.py和寻找这样的:

 DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.postgresql_psycopg2', 
 'NAME': 'django_db', 
 'USER': 'django_login',
 'PASSWORD': 'password', 
 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
 'PORT': '', # Set to empty string for default. Not used with sqlite3.
 }

在“HOST”:“”,将其更改为“HOST”:“无论PostgreSQL实例的私有IP为”

保存更改。 打开一个终端并找到目录到你的manage.py文件。 一旦你在该目录中运行以下命令:./manage.py执行syncdb

这将创造一切为你在Django创建的模型所需的表。 恭喜你,你已经成功创建了数据库实例和你的Django实例之间的联系。

如果您有任何问题,我会很乐意帮助更多! 发表评论下面,我会尽快给您尽快! :)



Answer 2:

你并不需要为你的Postgres实例的弹性IP。 只要使用其内部的IP。 内部IP是可以从管理控制台或通过运行ifconfig



文章来源: Setting Up Django and PostgreSQL on two different EC2 instances