Heroku
Contingut
Introducció
Heroku és una PaaS (Platform as a Service) que ens permet fer desplegaments sense necessitat de tenir un servidor.
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:
- Ens loguem a la web de Heroku
- Entrem a la nostra aplicació -> More... -> Run console
- Executem "bash"
- 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.
- Haurieu de tenir instal·lat ja PostgreSQL a la màquina local, si heu arribat aquí. En cas contrari, l'instal·leu amb APT.
- 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.
- Canvieu la contrasenya de l'usuari de Postgre amb:
postgre=>ALTER USER enric PASSWORD 'enric123';
- 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
- Visiteu amb el navegador per visualitzar:
http://localhost:8080
- 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