noa*_*ale 4 django postgresql amazon-ec2 django-settings pgadmin
Hello StackOverFlowers :)到目前为止我一直在同一个微EC2实例上运行我的Django后端和我的PostgreSQL数据库.
我已经设置了两个EC2实例,一个用我的django后端,另一个用我的PostgreSQL数据库,我使用pgadminII来管理它.两个实例都使用相同的安全组,并打开所有相同的端口.我已将弹性IP附加到我的Django实例,并将另一个弹性IP附加到我的Postgresql实例.
现在我知道在settings.py中我需要将'HOST'更改为PostgreSQL实例的地址.但我不太清楚该放什么.我是否放置了PostgreSQL实例的弹性IP?
我做了一些研究,很多消息来源说我需要输入PostgreSQL实例的内部服务器IP地址.如果是这种情况,我怎样才能找到内部服务器IP地址并将其输入"主机"?为了清楚起见,我复制并粘贴了下面的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.
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助,如果我不够清楚,请发表评论并告诉我,以便我能为您和其他人更清楚:)
因此,在David Wolever回复之后,我最终还是与亚马逊的那些人交谈.万一你们中的任何人再次遇到这篇文章.仅使用内部服务器IP是不够的,但它是一个良好的开端.如果您正在为Postgresql实例(最好是Natty Narwhal)运行Ubuntu,请确保编辑pg_hba.conf和postgresql.conf文件.
您通常可以在以下位置找到这两个文件:/etc/postgresql/8.4/main/(pg_hba.conf或postgresql.conf)
请注意,我们在我们的堆栈中使用Postgresql 8.4,它被证明是在我们的测试期间在Natty Narwhal上运行的Postgresql最稳定和最稳定的版本.
对于不同版本的Postgresql(9.1,9.0等..),您可以找到这两个文件的目录与上面列出的不同.确保您知道这些文件的正确目录.
转到Amazon Management Console并确保两个实例位于同一安全组下.Postgresql和Django默认使用5432和8000,所以确保你打开这两个端口!
(在postgresql实例的终端上执行此操作)
sudo vim postgresql.conf
按键盘上的"i"开始进行更改.使用向下箭头键直到遇到
LISTEN_ADDRESSES:'localhost'
摆脱前面的哈希标记,而不是'localhost',添加postgresql实例的私有IP (你可以在EC2管理控制台上找到私有IP),你还必须添加127.0.0.1.
例:
LISTEN_ADDRESSES:'private ip,127.0.0.1'
确保用逗号分隔私有IP和本地主机地址,并将其全部保留在一个引号下.
完成更改后,按ESC键并按ZZ(两次大写保存更改)
sudo 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
Run Code Online (Sandbox Code Playgroud)
再次按下键盘上的"i"并按照我上面的方式对其进行更改.
您将注意到在IPv6下,我有django_db和django_login,将其更改为您的postgresql数据库的名称和您分别用于postgresql数据库的用户登录名.
完成更改后,按ESC键并按ZZ(两次大写保存更改)
在终端中使用此命令重新启动postgresql服务器:
sudo /etc/init.d/postgresql restart
恭喜!服务器已启动并运行,但还有最后一步.
启动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.
}
Run Code Online (Sandbox Code Playgroud)
在'HOST':''下,将其更改为'HOST':'无论Postgresql实例的私有IP是什么'
保存更改.打开终端并找到manage.py文件所在的目录.进入该目录后,运行以下命令:./ manage.py syncdb
这些将为您在Django中创建的模型创建所有必需的表.恭喜,您已成功在Database实例和Django实例之间创建了一个链接.
如果您有任何疑问,我将非常乐意为您提供帮助!在下面留下评论,我会尽快给你回复!:)