sql >> Base de Datos >  >> RDS >> PostgreSQL

Configuración de Django y PostgreSQL en dos instancias EC2 diferentes

APOYO AMAZONICO

Así que terminé hablando con los chicos de Amazon después de la respuesta de David Wolever. Por si a alguno de vosotros os volvéis a encontrar con este post. Usar solo la IP del servidor interno no es suficiente, sin embargo, es un buen comienzo. Si está ejecutando Ubuntu para su instancia de Postgresql (preferiblemente Natty Narwhal), asegúrese de editar los archivos pg_hba.conf y postgresql.conf.

Por lo general, puede encontrar esos dos archivos en:/etc/postgresql/8.4/main/(pg_hba.conf o postgresql.conf)

Eso sí, estamos usando Postgresql 8.4 en nuestra pila, demostró ser la versión más consistente y sólida de Postgresql para ejecutar en Natty Narwhal durante nuestras pruebas.

Para diferentes versiones de Postgresql (9.1, 9.0, etc.), el directorio en el que puede encontrar estos dos archivos no es el mismo que se indica arriba. Asegúrese de conocer el directorio adecuado para estos archivos.

PASO 1

Vaya a la Consola de administración de Amazon y asegúrese de que ambas instancias estén en el mismo grupo de seguridad. Postgresql y Django usan 5432 y 8000 de manera predeterminada, ¡así que asegúrese de tener esos dos puertos abiertos!

PASO 2

(Haga esto en la terminal en la instancia de postgresql)

sudo vim postgresql.conf

Presione "i" en su teclado para comenzar a hacer cambios. Use la tecla de flecha hacia abajo hasta que encuentre

LISTEN_ADDRESSES:'localhost'

Deshágase de la etiqueta hash en el frente y, en lugar de 'localhost', agregue la IP privada de su instancia de postgresql (puede encontrar la IP privada en su consola de administración de EC2) y también debe agregar 127.0.0.1.

EJEMPLO:

LISTEN_ADDRESSES:'ip privada, 127.0.0.1'

Asegúrese de separar la IP privada y la dirección del host local con una coma y déjelo todo bajo una comilla.

Una vez que haya realizado los cambios, presione ESC y presione ZZ (dos veces en mayúsculas para guardar los cambios)

PASO 3

sudo vim pg_hba.conf

Usa la flecha hacia abajo hasta que encuentres algo parecido a esto:

           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

Una vez más, presione 'i' en su teclado y realice los cambios exactamente como lo hice arriba.

Notará que en IPv6, tengo django_db y django_login, cámbielo por el nombre de su base de datos postgresql y el inicio de sesión de usuario que usa para su base de datos postgresql respectivamente.

Una vez que haya realizado los cambios, presione ESC y presione ZZ (dos veces en mayúsculas para guardar los cambios)

PASO 4 (¡Casi terminado Hi5!)

Reinicie el servidor postgresql usando este comando en la terminal:

sudo /etc/init.d/postgresql reinicio

¡Felicitaciones! El servidor está en funcionamiento, sin embargo, queda un último paso.

PASO 5

Inicie su instancia de Django EC2, vaya a su configuración.py y busque esto:

 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.
 }

En 'HOST':' ' , cámbielo a 'HOST':'cualquiera que sea la IP privada de la instancia de Postgresql'

Guarde los cambios. Abra una terminal y busque el directorio donde se encuentra su archivo manage.py. Una vez que esté en ese directorio, ejecute el siguiente comando:./manage.py syncdb

Estos crearán todas las tablas necesarias para los modelos que creó en Django. Felicitaciones, ha creado con éxito un enlace entre su instancia de base de datos y su instancia de Django.

Si tienes alguna pregunta, ¡estaré más que feliz de ayudarte! ¡Deja un comentario a continuación y te responderé lo antes posible! :)