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 17:28]
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 23: Línia 23:
   (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 30: 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 44: 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 49: 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·lable via ''pip''+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]].
-  - 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.1645464506.txt.gz · Darrera modificació: 2022/02/21 17:28 per enrique_mieza_sanchez