23. Desplegar la API de Laravel en heroku

26/04/20191 Min lectura — En Laravel, API, 😀

Veo que va a ser necesario poder jugar con la API de una forma más "cloudiana" para ir montando los ejemplos sin depender tanto del entorno local.

Además mi gusto y filia con CodeSandbox me hace presagiar que haré pruebas en ese entorno con mis datos, no solo los de un geisonplacejolder cualquiera 😀

La experiencia en el despliegue de heroku en el #desafíoPython no fue muy buena, pero necesito dos cosas:

  • Soporte para SQLite
  • Acceso gratuito

Así que veo que con heroku puedo cumplirlo. El alta para un dyno (servidor virtual) mínimo es gratuito y las capacidades del mismo son suficientes.

Pasos previos en el proyecto

  1. Añadir la dependencia de SQLite en composer.json

    "ext-pdo_sqlite": "*"
  2. Ejecutar un composer update

  3. Crear un fichero Procfile en la raíz del proyecto con este contenido:

    web: vendor/bin/heroku-php-apache2 public/

Creación del dyno en heroku

Sigue los pasos de la documentación que te indica la propia web de heroku tras crear el dyno . Necesitarás git para poder incluir el código.

Puedes hacerlo mediante heroku-cli por línea de comandos o asociando una cuenta de Github. Prefiero la primera opción.

Tras configurarlo como dice heroku, cada vez que hagas un git push heroku master actualizarás la app en heroku.

Para mantener las cosas a salvo creo una rama deploy/heroku para "marcar distancias". Así que cada despliegue tendré que hacerlo con este comando:

git push heroku deploy/heroku:master

Dos cosas más.

  1. Crear las variables de configuración en la pestaña "Settings":

    philosophers api settings heroku

  2. Verás que la DB_DATABASE tiene una ruta alterada para lo que es habitual. Esto es solo para esta rama. Y es que heroku en la dyno gratuita no tiene una gran persistencia y es como que se reinicia cada vez que hay 30 minutos de inactividad. Es una solución chof pero es mejor que nada

API desplegada en heroku

Con estos sencillos pasos para nuestro ejemplo ya lo tenemos listo en rutas como esta:

https://philosophers-api.herokuapp.com/api/v1/quotes/random

(La primera vez suele tardar en arrancar, porque necesita reiniciar el dyno por inactividad).