Mostrando entradas con la etiqueta PostgreSQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta PostgreSQL. Mostrar todas las entradas

8 de mayo de 2020

Despliega tu API en la nube gratis

Ahora que tenemos nuestra API lista para ejecutarse vamos a ver cómo desplegarla en la nube. Básicamente tenemos que cambiar nuestra BD (ya no nos sirve con H2 en local) y exponer la API públicamente en red. Los servicios que voy a usar para ello son ElephantSQL para la BD y Heroku para la API. Para ello vamos a hacer lo siguiente:
  1. Creo una base de datos en ElephantSQL
  2. Cambio el datasource de JPA y el dialecto org.hibernate.dialect.PostgreSQLDialect. Puedes ver qué debes poner en la documentación de ElephantSQL para Java.
  3. Una vez cambiado eso voy a cargar los datos de los participantes en la BD ya en la nube. Descomento las líneas del main que lo hacen y lanzo la API. Ya podré ver que todo funciona correctamente pero ahora ya no tengo H2.
  4. Una vez cargada la BD y funcionando toca subir la API.
  5. Creo una aplicación en Heroku. Se puede desplegar todo usando el CLI.
  6. Lo más cómodo es enlazar el repositorio de GitHub donde tengamos el código fuente (para que se construya debe tener acceso a todas las dependencias, por eso ya cambiamos la dependencia datos-deportivos a un repositorio). Así incluso podemos tener nuestro despliegue continuo (cada commit se despliega)
  7. Primero tenemos que subir nuestro código con los últimos cambios, pero sin las credenciales de la BD (¡ojo con subir credenciales!)
  8. Una vez enlazado el repositorio ya veremos que podemos desplegar la aplicación. Pero nos faltan las credenciales para conectar con la BD. Vamos a ponerlas como una variable en Heroku para que la use sobrescribiendo lo que haya en el archivo de propiedades.
    DATABASE_URL: postgres://usuario:password@server.com:5432/usuario
  9. Y con esto ya podemos darle a deploy.

Cuando termine de ejecutarse, si todo ha ido bien, podemos acceder a nuestra API RESTful en la url que nos proporcione Heroku. Todo en la nube, sin coste alguno y sin administrar ninguna máquina.

Puedes ver el código hasta aquí en su repositorio.

NOTA: Con el fin de Heroku gratis el 28 de noviembre de 2022, se propone usar como alternativa Railway.

19 de julio de 2014

Instalando PostgreSQL en Linux

Siguiendo la política de software abierto y desarrollo económico de aplicaciones, para mi siguiente proyecto decidí usar como sistema gestor de base de datos PostgreSQL.

Explicaré cómo instalarlo en Debian 7.6.


Primero lo instalamos:

sudo apt-get update
sudo apt-get install postgresql

Para comprobar que funciona ponemos:

sudo netstat -tap | grep postgresql

Sale algo parecido a esto (lo importante es que ponga ESCUCHAR/LISTEN):

tcp  0  0 localhost:postgresql  *:*  ESCUCHAR  6065/postgres

Podemos detener el servicio así:

sudo service postgresql stop

Volverlo a iniciar:

sudo service postgresql start

O reiniciarlo:

sudo service postgresql restart

Creamos un usuario y una base de datos:

sudo -u postgres createuser -D -A -P usuarioBD
sudo -u postgres createdb -O usuarioBD nombreBD

Luego para administrar la BD podemos usar una herramienta con GUI como pgAdminIII que está disponible en los repositorios oficiales:

sudo apt-get install pgadmin3

Abrimos este administrador para ver que todo funciona perfectamente:

pgadmin3

Lo primero que tenemos que hacer es conectar con nuestro servidor. Ponemos los siguientes datos en el formulario:

  • Name: "El nombre que queráis, es para identificarlo entre todos los que conectéis"
  • Host: localhost (si lo instaláis en otra máquina el nombre o IP de la máquina servidor)
  • Username: usuarioBD (el nombre que le hemos puesto al usuario de esta base de datos)
  • Password: "la que pusisteis al crear el usuario"
  • Store password: lo marcamos si queremos que se quede guardada, si no nos la pedirá cada vez

El resto lo dejamos tal cual viene ahora mismo ya que es para opciones mas avanzadas que lo que pretendo en esta entrada.

Con esto ya podréis ver que os conectáis al servidor y que en Databases aparece la BD y en Login Roles el usuario que creamos al principio.

También es normal tener una maquina de desarrollo y otra servidor. La configuración por defecto de postgresql sólo permite conexiones desde localhost. Para cambiarlo hay que modificar los ficheros de configuración postgresql.conf y pg_hba.conf del directorio /etc/postgresql/.... Para no alargar el post lo trataré en otro aparte ya que para probar si os gusta con esto tenéis suficiente.

Espero que os sea de utilidad. Yo lo he usado en varios proyectos y me gusta bastante, si bien no eran para soportar un tráfico brutal. Ya contaré la escalabilidad que tiene que, por lo que he leído, debe ser buena.

Un saludo.

Compárteme

Entradas populares