Skip to content

Publicación proyecto demo en Heroku

Jorge Carrillo edited this page May 31, 2021 · 8 revisions

Introducción

Heroku es una plataforma de servicio de computación en la nube (conocidos como PaaS o Platform as a Service) que soporta distintos lenguajes de programación.

A continuación veremos los pasos para publicar un demo del repositorio real-estate-manager, creando y configurando una cuenta gratuita de Heroku.

Pre-requisitos

Para realizar el proceso de publicación con Heroku debe tener instalado el CLI de Heroku según si sistema operativo aquí puede encontrar las versiones correctas.

Crear/verificar archivo el Procfile

Use un Procfile, un archivo de texto en el directorio raíz de su aplicación, para declarar explícitamente qué comando debe ejecutarse para iniciar su aplicación.

El archivo Procfile en la aplicación de ejemplo que implementó tiene este aspecto:

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

Si el archivo cambio, debe registrarse en el sistema de control de versiones de código.

git add .
git commit -m "Procfile for Heroku"

Permitir el acceso a los registros

Para facilitar el acceso a los logs de Laravel desde las instancias de Heroku es necesario realizar el siguiente cambio en el archivo config/logging.php.

 'single' => [
 'driver' => 'errorlog',
 'path' => storage_path('logs/laravel.log'),
 'level' => 'debug',
 ],

Como todo cambio, debe registrarse en el sistema de control de versiones de código.

git add config/logging.php
git commit -m "Use errorlog"

Crear la aplicación en Heroku

Para crear el proyecto en Heroku es necesario crear una instancia en el servicio y darle un nombre. Debe tenerse en cuenta que este nombre debe ser único para toda la plataforma.

heroku create demo-real-estate-manager

Determinar la APP_KEY del proyecto

Todo proyecto en Laravel requiere que se cuente con una llave de cifrado (APP_KEY) la cual se determina en el archivo .env, sin embargo en la instancia de Heroku no se cuenta con este archivo y debe ser reemplazado por variables de ambiente. Para generar y registrar esta llave se debe ejecutar el siguiente comando:

php artisan key:generate --show
heroku config:set APP_KEY=<PEGUE AQUÍ LA LLAVE GENERADA>

Publicar la aplicación en Heroku

Puede ser necesario que se especifique el tipo (buildpack) de plataforma de desarrollo utilizada, en este caso PHP y NodeJS.

heroku buildpacks:set heroku/php
heroku buildpacks:set heroku/nodejs

Configure la version de node a utililizar en su archivo composer.json en la sección engines:

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "14.x"
  }
}

Actualmente, las versiones compatibles son 12.x, 14.xy 16.x.

Para publicar en Heroku el código fuente -versionado- de la aplicación se debe ejecutar el siguiente comando.

git push heroku master
heroku run npm install
heroku run npm run production

Publicar la base de datos DEMO en Heroku

Crear la instancia de la base de datos PostgreSQL

La cuenta gratuita para explorar Heroku permite crear una instancia pequeña de PostgreSQL mediante la ejecución del siguiente comando podemos crear la base de datos demo:

heroku addons:create heroku-postgresql:hobby-dev

Esto crea la variable de ambiente DATABASE_URL con la información de conexión a la base de datos.

heroku config | grep DATABASE_URL

Veremos algo parecido con la configuración de la base de datos:

DATABASE_URL:
postgres://ywzdjwwnasuijx:0de2e3ae68a07f5a04f9a2d354e81de8e55df133637ec22b04edcaff1d3e108b@ec2-175-129-205-197.compute1.amazonaws.com:5432/d676c1bk6bn5a1

Configurar la base de datos

Es necesario indicarle al proyecto publicado en Heroku que la base de datos que se utilizará será de tipo pgsql, la configuración por defecto tomará la información de la variable DATABASE_URL.

Para hacer esto, se debe editar el archivo config/database.php y modificar la siguiente línea.

'default' => env('DB_CONNECTION', 'pgsql'),

Crear las tablas en la base de datos

Una vez configurado el acceso a la base de datos, es posible crear las tablas mediante la ejecución de las migraciones y sus correspondientes seeders.

heroku run php artisan migrate
heroku run php artisan db:seed

Para abrir un navegador web con la página inicial del proyecto publicado se podrá ejecutar el siguiente comando.

heroku open

Créditos