Giter Site home page Giter Site logo

app_heroku--cuek's Introduction

:feelsgood: Informacion importante :feelsgood:

Focus on what's mission-critical: Removal of free dynos, hobby-dev Heroku Postgres and hobby-dev Heroku Data for Redis plans starting November 28, 2022 and inactive account deletion starting October 26, 2022.

Fuente - Heroku Blog

run


run-b-tch

Run away to render.com


Configurar Django App para Heroku

Heroku requiere de ficheros Procfile, runtime.txt, requirements.txt, este fichero declara explícitamente tipo de procesos de la aplicación será usado y los puntos de entrada, está ubicado en al carpeta raíz del proyecto.

Se debe tener en cuenta que Heroku opera con stacks de software, es decir, la version del lenguaje a usar, a continuación dejo enlaces con la información:

Por ejemplo, si la aplicación usa Python 3.9.9, el fichero runtime debe contener python-3.9.9, de lo contrario, se pueden generar errores de compatibilidad.

Procfile

web: gunicorn proyecto.wsgi

Procfile requiere Gunicorn, el servidor web de producción que se recomienda para aplicaciones Django.

runtime.txt

Se puede definir que versión de Python se ejecuta en la aplicación, se necesita el fichero runtime.txt.

  #  cat runtime.txt
  python-3.9.9

Instalar gunicorn

pip install gunicorn

Recordar poner "gunicorn" dentro del fichero "requirements.txt".

settings.py

Heroku, almacena información sensible en entornos de variables, que tradicionalmente está configurado en aplicaciones Django.

El paquete django-heroku configura automáticamente la aplicación Django para que funcione en Heroku, es compatible con aplicaciones Django 2.0. Permitiendo leer DATABASE_URL, configuracion de registro, un Heroku CI compatible con TestRunner, y configurar automáticamente 'staticfiles' para que funcione.

Instalar django-heroku

pip install django-on-heroku

Recordar poner "gunicorn" dentro del fichero "requirements.txt".

En el fichero settings.py del proyecto, importar y configurar.

  import django_heroku

  [...]

  # Activar Django-Heroku
  django_heroku.settings(locals())

Django y ficheros estáticos

Puede ser un poco dificultoso configurar y depurar opciones para elementos estáticos, sin embargo, si se agregan las siguientes lineas en settings.py, todo funcionará como se espera.

settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'

# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

Django no crea automáticamente el directorio objeto STATIC_ROOT que usa collectstatic si esté no está disponible. Debes crear este directorio en la raíz, y estará disponible cuando collectstatic sea ejecutado. Git no soporta directorios vacíos, puedes crear un fichero vacío dentro de el para solucionar el problema.

Whitenoise

Django no soporta servir ficheros estaticos en producción. Existe el proyecto WhiteNoise (muchas gracias!) que se puede integarar a tu aplicación Django.

WhiteNoise documentación

Instalar WhiteNoise

pip install whitenoise

Recordar poner "gunicorn" dentro del fichero "requirements.txt".

Editar, fichero settings.py, agregar en la sección middleware al principio de la tupla.

MIDDLEWARE_CLASSES = (
    # Simplified static file serving.
    # https://warehouse.python.org/project/whitenoise/
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
)

Si quieres habilitar la funcionalidad gzip, agregar en settings.py.

# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Ahora tu aplicación sirve elementos estáticos directamente desde Gunicorn en producción. Esto es perfectamente adecuado para muchas aplicaciones, pero aplicaciones mucho más complejas pueden requerir usar CDN con Django-Storages.

Generando requirements.txt

# pip freeze > requirements. txt

Con ello generamos el archivo con los modulos necesarios para la aplicación y Heroku.

Collectstatic durante la construcción

Cuando una aplicación Django es desplegada en Heroku, el comando $ python manage.py collectstatic --noinput se ejecuta automáticamente durante la construcción, una construcción fallida si la etapa collectstatic no es exitosa.

Debugging

Si collectstatic falla durante la construcción, un mensaje de seguimiento se entrega para ayudar a diagnosticar el problema. Si se necesita información adicional sobre el entorno collectstatic que se ejecutó, usar:

$ heroku config:set DEBUG_COLLECTSTATIC=1

Esto muestra la salida de la construcción de todas las variables de entorno disponibles para Python cuando collectstatic fué ejecutado.

A veces, es posible que no desee que Heroku ejecute collectstatic, para deshabilitar simplemente se utiliza:

$ heroku config:set DISABLE_COLLECTSTATIC=1

Con esto deshabilitas el paso collectstatic de la construcción.

app_heroku--cuek's People

Contributors

kurotom avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.