23. Desplegar la API de Laravel en heroku
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
Añadir la dependencia de
SQLite
encomposer.json
"ext-pdo_sqlite": "*"Ejecutar un
composer update
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.
Crear las variables de configuración en la pestaña "Settings":
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).