Heroku

De Cacauet Wiki
Salta a la navegació Salta a la cerca


Introducció

Heroku és una PaaS (Platform as a Service) que ens permet fer desplegaments sense necessitat de tenir un servidor.

Servidors d'aplicacions web


Primeres passes

Inicia't amb aquest tutorial per PHP simple:

https://devcenter.heroku.com/articles/getting-started-with-php#introduction

Quan hagis acabat, tindràs en marxa una web d'exemple. Fes un cop d'ull al Procfile, veuràs que la carpeta web/ és on s'inicia la nostra aplicació web.

Substitueix els continguts de la carpeta web/ per un index.php senzill per començar a fer la nostra app.


Plugins i bases de dades

Un cop hem estat capaços de crear una web, crearem una base de dades. Aparentment podem crear una MySQL gratuita, però ens demana la targeta de crèdit. En canvi, amb PostgreSQL no ens en demana.

Teniu la Documentació oficial de PostgreSQL per a Heroku on explica com posar a punt la BD.

Crearem una base de dades PostgreSQL als Add-ons (via web o via comandes CLI). Podràs veure les credencials de la BBDD per utilitzar-ho en el PDO després.

Crea una pàgina PHP d'una TASKLIST amb PostgreSQL. Ha de quedar més o menys com aquesta:

https://floating-beyond-40727.herokuapp.com

Post utilitzar aquest exemple de PDO:

https://uf.ctrl-alt-d.net/material/mostra/50/php-acces-a-dades-amb-pdo

Caldrà que creis la taula, un formulari per entrar les tasks, i visualitzar-les.

Accedint a la shell del PostgreSQL

Normalment, i si no tenim algun proxy o tallafocs intermig, ens podem connectar des de la shell LOCAL amb:

$ heroku pg:psql

Però si tenim algun d'aquests casos de proxy/tallafocs, podem fer un hack:

  1. Ens loguem a la web de Heroku
  2. Entrem a la nostra aplicació -> More... -> Run console
  3. Executem "bash"
  4. Dintre de la consola web, executem:
    $ psql $DATABASE_URL
    Podria ser que enlloc de $DATABASE_URL la variable fos $HEROKU_POSTGRESQL_WHITE_URL
    Per examinar totes les variables d'entorn pots executar "env" a la shell

Carregar un BD sobre Postgre a Heroku

Podeu descarregar BBDD d'exemple aquí. Per exemple, la típica world.sql que també te MySQL.

Per carregar la vostra BD sobre Heroku només cal fer:

$ heroku pg:psql < lamevaBD.sql


Per desenvolupar en local

Per treballar més àgilment convé treballar en local. Només desplegarem el projecte a Heroku quan el tinguem més o menys funcional.

En principi hauria de funciona el següent per treballar en local (per un projecte en PHP):

$ cd my-heroku-project
$ composer install
$ heroku local

Si és amb NodeJS:

$ cd my-heroky-project
$ npm install
$ npm start

Però sempre hi ha mes coses que controlar:

  1. Haurieu de tenir instal·lat ja PostgreSQL a la màquina local, si heu arribat aquí. En cas contrari, l'instal·leu amb APT.
  2. Mireu-vos l'article PostgreSQL per iniciar-vos a com utilitzar aquesta BDD en local. Caldrà crear una BD i usuari/contrasenya per poder accedir-hi. El nom d'usuari ha de ser el mateix que el del sistema operatiu.
    Es recomana (per simplificar): crear un usuari amb el mateix nom del del SO, i crear una BBDD amb el mateix nom de l'usuari.
  3. Canvieu la contrasenya de l'usuari de Postgre amb:
    postgre=>ALTER USER enric PASSWORD 'enric123';
  4. Si el vostre projecte és PHP pur, hauríem de posar-lo a la carpeta /var/www/html per publicar-ho a l'Apache. Però tenim maneres alternatives per publicar-ho. En concret, aquesta, dins la pròpia carpeta del projecte:
    php -S localhost:8080 -t ./ index.php
  5. Visiteu amb el navegador per visualitzar:
    http://localhost:8080
  6. Les instruccions de connexió a BD amb PHP no us funcionaran. Caldrà que construïu la variable $DATABASE_URL adequadament abans d'executar la comanda de PHP:
    $ export DATABASE_URL=postgres://enric:enric123@localhost:5432/enric



Heroku amb frameworks