SUPORTE DA AMAZÔNIA
Então acabei conversando com os caras da Amazon também depois da resposta de David Wolever. Apenas no caso de algum de vocês se deparar com este post novamente. Usar apenas o IP do servidor interno não é suficiente, mas é um bom começo. Se você estiver executando o Ubuntu para sua instância Postgresql (de preferência Natty Narwhal), certifique-se de editar os arquivos pg_hba.conf e postgresql.conf.
Normalmente, você pode encontrar esses dois arquivos em:/etc/postgresql/8.4/main/(pg_hba.conf ou postgresql.conf)
Lembre-se, estamos usando o Postgresql 8.4 em nossa pilha, provou ser a versão mais consistente e sólida do Postgresql para rodar no Natty Narwhal durante nossos testes.
Para diferentes versões do Postgresql (9.1, 9.0 etc.), o diretório no qual você pode encontrar esses dois arquivos não é o mesmo listado acima. Certifique-se de conhecer o diretório adequado para esses arquivos.
ETAPA 1
Acesse o Amazon Management Console e certifique-se de que ambas as instâncias estejam no mesmo grupo de segurança. Postgresql e Django usam 5432 e 8000 por padrão, então certifique-se de ter essas duas portas abertas!
ETAPA 2
(Faça isso no terminal na instância postgresql)
sudo vim postgresql.conf
Pressione "i" no teclado para começar a fazer alterações. Use a tecla de seta para baixo até encontrar
LISTEN_ADDRESSES:'localhost'
Livre-se da tag de hash na frente e, em vez de 'localhost', adicione o IP privado da sua instância do postgresql (você pode encontrar o ip privado no console de gerenciamento do EC2) e você deve também adicionar 127.0.0.1.
EXEMPLO:
LISTEN_ADDRESSES:'ip privado, 127.0.0.1'
Certifique-se de separar o IP privado e o endereço do host local por uma vírgula e deixar tudo em uma citação.
Depois de fazer as alterações, pressione ESC e pressione ZZ (duas vezes em maiúsculas para salvar as alterações)
ETAPA 3
sudo vim pg_hba.conf
Use a tecla de seta para baixo até encontrar algo parecido com isto:
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
Mais uma vez, pressione 'i' no seu teclado e faça as alterações exatamente da maneira que eu fiz acima.
Você notará em IPv6, eu tenho django_db e django_login, mude para o nome do seu banco de dados postgresql e seu login de usuário que você usa para seu banco de dados postgresql, respectivamente.
Depois de fazer as alterações, pressione ESC e pressione ZZ (duas vezes em maiúsculas para salvar as alterações)
ETAPA 4 (Quase pronto Hi5!)
Reinicie o servidor postgresql usando este comando no terminal:
sudo /etc/init.d/postgresql restart
Parabéns! O servidor está funcionando, porém há uma última etapa.
ETAPA 5
Inicie sua instância do Django EC2, acesse seu settings.py e procure por isso:
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.
}
Em 'HOST':' ' , altere para 'HOST':'qualquer que seja o IP privado da instância do Postgresql'
Salve as alterações. Abra um terminal e encontre o diretório onde está seu arquivo manage.py. Assim que estiver nesse diretório, execute o seguinte comando:./manage.py syncdb
Isso criará todas as tabelas necessárias para os modelos que você criou no Django. Parabéns, você criou com sucesso um link entre sua instância de banco de dados e sua instância do Django.
Se você tiver alguma dúvida, terei o maior prazer em ajudar! Deixe um comentário abaixo e responderei o mais rápido possível! :)