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 18:39]
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 24: Línia 24:
   (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ó l al nostra aplicació:+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> <file txt Procfile>
Línia 43: Línia 43:
 De vegades ens apareix un error de SSL al fer el //push// a producció. [[https://github.com/jacobian/dj-database-url/issues/107|Segons aquesta issue del mòdul dj-database-url]] la solució és afegir aquesta línia a final del tot del projecte ''settings.py'': De vegades ens apareix un error de SSL al fer el //push// a producció. [[https://github.com/jacobian/dj-database-url/issues/107|Segons aquesta issue del mòdul dj-database-url]] la solució és afegir aquesta línia a final del tot del projecte ''settings.py'':
   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. 
  
 \\ \\
Línia 70: Línia 72:
   (...es posa en producció...)   (...es posa en producció...)
   $ heroku run bash   $ heroku run bash
-  ~ $ ./manage.py migrate+  ~ $ python3 manage.py migrate 
 +  ~ $ python3 manage.py createsuperuser
  
-Això crearà la BD i ens permetrà accedir a la nostra aplicació en producció. De pas feu un createsuperuser i afegiu alguna enquesta.+Això crearà la BD, un superuser, i ens permetrà accedir a la nostra aplicació en producció. Entreu i afegiu alguna enquesta.
  
 \\ \\
Línia 78: 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'' del tipus:+Hem vist en el tutorial de Heroku que si podem afegir una BD PostgreSQL així: 
 +  $ heroku addons:create heroku-postgresql:hobby-dev
  
 +la nostra aplicació disposarà de les credencials a la variable d'entorn ''DATABASE_URL'' del tipus:
   DATABASE_URL=postgres://usuari:password@servidor:port/dbname   DATABASE_URL=postgres://usuari:password@servidor:port/dbname
  
  
-Per tal de poder configurar adequadament Django i carregar les credencials, hi diversos //packages// de PIP que ens no resolen: +<WRAP important> 
-  - Utilitzar el [[https://github.com/kennethreitz/dj-database-url|package dj-database-url]] instal·la +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]] [[https://django-environ.readthedocs.io/en/latest/|django-environ]]
-  - ble via ''pip''+ 
-  - Utilitzar el [[https://django-environ.readthedocs.io/en/latest/|package django-environ]] instal·lable via ''pip''.+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.1645468755.txt.gz · Darrera modificació: 2022/02/21 18:39 per enrique_mieza_sanchez