bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


django_heroku

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
django_heroku [2022/02/21 13:01]
enrique_mieza_sanchez [Preparant el nostre projecte Django per a deplegament a Heroku]
django_heroku [2022/03/07 18:30] (actual)
enrique_mieza_sanchez [Afegint una BD PostgreSQL]
Línia 2: Línia 2:
  
 Heroku és un sistema de **PaaS o //Platform as a Service//** que ens permet posar en producció aplicacions sense necessitat de mantenir la virtualització, el sistema operatiu o la instal·lació de la base de dades. Heroku és un sistema de **PaaS o //Platform as a Service//** que ens permet posar en producció aplicacions sense necessitat de mantenir la virtualització, el sistema operatiu o la instal·lació de la base de dades.
 +
 +{{ https://upload.wikimedia.org/wikipedia/commons/e/ec/Heroku_logo.svg?300 }}
  
 {{tag> #FpInfor #Daw #DawMp08 #DawMp08Uf2 #DawMp08Uf02 heroku IaaS PaaS SaaS django web framework }} {{tag> #FpInfor #Daw #DawMp08 #DawMp08Uf2 #DawMp08Uf02 heroku IaaS PaaS SaaS django web framework }}
  
-{{ responsibilities.png }}+{{ responsibilities.png?direct }}
  
 ===== Preparant el nostre projecte Django per a deplegament a Heroku ===== ===== Preparant el nostre projecte Django per a deplegament a Heroku =====
Línia 18: Línia 20:
  
 Instal·lar en local llibreries de client per a PostgreSQL: Instal·lar en local llibreries de client per a PostgreSQL:
-  $ sudo apt install libpq-dev+  $ sudo apt install libpq-dev python3-dev gcc
   (env) $ pip install gunicorn psycopg2-binary django-heroku    (env) $ pip install gunicorn psycopg2-binary django-heroku 
   (env) $ pip freeze > requirements.txt   (env) $ pip freeze > requirements.txt
 +
 +Crearem un ''Procfile'' a l'arrel del projecte, un arxiu propi de Heroku (d'una sola línia) que li diu com ha de posar en producció la nostra aplicació:
 +
 +<file txt Procfile>
 +web: gunicorn mysite.wsgi
 +</file>
 +
 +No és imprescindible, però podeu provar si us funciona el projecte en local amb:
 +  (env) $ gunicorn mysite.wsgi
 +
 +Si ho teniu tot a punt **a la branca main**, podeu posar en producció fent:
 +  $ git add .
 +  $ git commit -am "heroku deploy"
 +  $ git push heroku main
  
 \\ \\
Línia 28: Línia 44:
   del DATABASES['default']['OPTIONS']['sslmode']   del DATABASES['default']['OPTIONS']['sslmode']
  
 +Si no esteu **a la branca main** potser no funciona adequadament. Mireu de moure els arxius de producció a la branca main. 
 +
 +\\
 +
 +==== Ajustant settings.py ====
 De forma que ens quedarà un arxiu: De forma que ens quedarà un arxiu:
  
Línia 42: Línia 63:
 #del DATABASES['default']['OPTIONS']['sslmode'] #del DATABASES['default']['OPTIONS']['sslmode']
 </file> </file>
 +
 +\\
 +
 +===== Utilitzant SQLite =====
 +
 +Per defecte podem provar a arrencar amb SQLite:
 +  $ git push heroku master
 +  (...es posa en producció...)
 +  $ heroku run bash
 +  ~ $ python3 manage.py migrate
 +  ~ $ python3 manage.py createsuperuser
 +
 +Això crearà la BD, un superuser, i ens permetrà accedir a la nostra aplicació en producció. Entreu i afegiu alguna enquesta.
  
 \\ \\
Línia 47: Línia 81:
 ===== Afegint una BD PostgreSQL ===== ===== Afegint una BD PostgreSQL =====
  
-Si posem una DB sqlite com ve per defecte en Django tindrem el problema de que al fer un nou desplegament destruirem la BD antiga. Per evitar aquest problema ens cal una BD externa a Heroku on poder emmagatzemar dades.+Si posem una DB sqlite com ve per defecte en Django tindrem el problema de que [[https://devcenter.heroku.com/articles/sqlite3|al tenir Heroku un sistema d'arxius efímer, i que es destrueix cíclicament, sabem que la BD es destruiria en menys en 24 hores]]. Per evitar aquest problema ens cal una BD externa a Heroku on poder emmagatzemar dades.
  
-Hem vist en el tutorial que si volem afegir una BD Postgre, la nostra aplicació disposarà de les credencials a la variable d'entorn ''DATABASE_URL''. Per tal de poder configurar adequadament Django i carregar les credencials, hi diversos //packages// de PIP que ens no resolen+Hem vist en el tutorial de Heroku que si podem afegir una BD PostgreSQL així
-  - Utilitzar el [[https://github.com/kennethreitz/dj-database-url|package dj-database-url]] instal·lable via ''pip''+  $ heroku addons:create heroku-postgresql:hobby-dev
-  - Utilitzar el [[https://django-environ.readthedocs.io/en/latest/|package django-environ]] instal·lable via ''pip''.+
  
 +la nostra aplicació disposarà de les credencials a la variable d'entorn ''DATABASE_URL'' del tipus:
 +  DATABASE_URL=postgres://usuari:password@servidor:port/dbname
  
 +
 +<WRAP important>
 +En versions anteriors calia configurar expressament ''DATABASE_URL'' en ''settings.py'' amb alguns packages extra de ''pip'' com [[https://github.com/kennethreitz/dj-database-url|dj-database-url]] o [[https://django-environ.readthedocs.io/en/latest/|django-environ]].
 +
 +A partir de cert moment ja no cal fer cap modificació per carregar ''DATABASE_URL''.
 +Simplement, fem un ''export'':
 +  $ export DATABASE_URL=postgres://usuari:password@servidor:port/dbname
 +  (env) $ ./manage.py migrate
 +  (env) $ ./manage.py runserver
 +
 +i arrencar Django. Quan trobi la variable farà un override del què digui DATABASES i agafarà ''DATABASE_URL'' com la BD primària.
 +</WRAP>
 +
 +
 +\\
  
django_heroku.1645448484.txt.gz · Darrera modificació: 2022/02/21 13:01 per enrique_mieza_sanchez