python - deploy - upload django to heroku
Manera correcta de manejar archivos estáticos y plantillas para Django en Heroku (1)
Me estoy moviendo sobre mi aplicación django a Heroku, y me preguntaba cuál es la mejor manera de manejar archivos estáticos. ¿Simplemente los empujo a través de git a Heroku? ¿O debería almacenarlos en SW3 o algo así? Además, ¿qué debería ser el STATIC_ROOT y tal?
¡Gracias!
Debes almacenarlos externamente en un servicio como S3, mientras que Heroku puede servir archivos estáticos, no está diseñado para.
Aquí hay una buena guía para comenzar con S3:
https://devcenter.heroku.com/articles/s3
Utilice django-storages http://django-storages.readthedocs.org/en/latest/index.html para recopilar archivos estáticos en su depósito S3 y sírvalos en consecuencia.
Estas son las configuraciones necesarias que deberá tener para S3:
DEFAULT_FILE_STORAGE = ''storages.backends.s3boto.S3BotoStorage''
STATICFILES_STORAGE = ''storages.backends.s3boto.S3BotoStorage''
AWS_ACCESS_KEY_ID = ''access-id''
AWS_SECRET_ACCESS_KEY = ''secret-key''
AWS_STORAGE_BUCKET_NAME = ''bucket-name''
AWS_PRELOAD_METADATA = True # necessary to fix manage.py collectstatic command to only upload changed files instead of all files
MEDIA_ROOT y STATIC_ROOT son reemplazados por DEFAULT_FILE_STORAGE y STATICFILES_STORAGE respectivamente y, por lo tanto, no son necesarios. Sin embargo, querrás establecer MEDIA_URL y STATIC_URL en algo como
STATIC_URL = ''https://bucket-name.s3.amazonaws.com/static/''
ADMIN_MEDIA_PREFIX = ''https://bucket-name.s3.amazonaws.com/static/admin/''
Si desea almacenar sus archivos estáticos y multimedia en diferentes subcarpetas, esta es una gran solución: https://.com/a/10825691/674794
Deberá establecer MEDIA_URL y STATIC_URL en las carpetas nuevas respectivas, por ej.
MEDIA_URL = ''https://bucket-name.s3.amazonaws.com/media/''
STATIC_URL = ''https://bucket-name.s3.amazonaws.com/static/''
También querrá ejecutar manage.py collectstatic manualmente y deshabilitar la recopilación automática de datos de Heroku según https://devcenter.heroku.com/articles/django-assets#disabling_collectstatic , ya que la colección de datos heredados de Heroku volverá a cargar cada archivo estático en S3 cada vez que presione incluso si los archivos no han sido modificados, agregue una transferencia fuerte y solicite carga a S3 y desacelere sus impulsos.
¡Entonces simplemente continúe usando {{STATIC_URL}} en sus plantillas como de costumbre y debería estar configurado!
<link href=''{{ STATIC_URL }}css/styles.css'' type=''text/css'' rel=''stylesheet''>
Si quieres comenzar de forma simple y eliges no tomar esa ruta inmediatamente, puedes hacer el truco rápido en tu configuración de URL siguiendo la mencionada publicación de Cesar en Heroku - Manejando archivos estáticos en la aplicación Django , aunque habrá una disminución significativa en el rendimiento de la aplicación.