He estado usando Django Compressor para administrar mis archivos de café/menos y es excelente para el desarrollo, pero he tenido algunos problemas para hacerlo funcionar para mi implementación de producción.Cómo usar django-compressor con apache?
Mi idea es tener apache para alojar los archivos estáticos, posiblemente en otro servidor. Estoy configurando COMPRESS_OFFLINE = True
en el archivo settings.py
.
Entonces haga lo siguiente
python manage.py compress
- Este puebla el directorioCACHE
en mi directoriostatic
, donde se recogerán todos los archivos estáticos.python manage.py collectstatic
- Esto recolecta archivos estáticos de todas las aplicaciones en mi proyecto (algunas de las cuales no usan compresor) en mi directoriostatic
.- Copie el directorio
static
en algún lugar para hospedarlo con apache. Y configura apache para servir los archivos. - Modifique la variable
static_url
en el archivosettings.py
para apuntar al servidor estático.
Si abro cualquier página, me sale el siguiente error en mi servidor, esto sólo parece ocurrir cuando tengo DEBUG = False
y COMPRESS_OFFLINE = True
en mi settings.py
archivo:
TemplateSyntaxError: Caught OfflineGenerationError while rendering: You have offline compression enabled but key "777ba26736d046ab043dc151e7e9a060" is missing from offline manifest. You may need to run "python manage.py compress".
Cuando compruebo el directorio static/CACHE
, confirmo lo que dice el error, este es mi manifest.json
archivo:
{
"6189b8598993d1cbdbd35d4dfd1a6711": "<script type=\"text/javascript\" src=\"http://192.168.1.123/CACHE/js/2f6ca6616bd6.js\"></script>",
"5c66dbed0e5b766c6e32773cd8585f3c": "<link rel=\"stylesheet\" href=\"http://192.168.1.123/CACHE/css/154d95903951.css\" type=\"text/css\" />"
}
Si elimino el directorio de caché y volver a ejecutar python manage.py compress
, obtengo un nuevo conjunto de ID tanto en el mensaje de error como en el archivo de manifiesto, pero la identificación en el error todavía falta en el manifiesto.
Entonces, supongo que hay dos preguntas aquí. ¿Por qué no está funcionando? ¿Cuál es la forma correcta de lograr esto?
Gracias.
¿Tiene el buscador del compresor en 'STATICFILES_FINDERS' en la configuración? – ilvar
Muestre su código de plantilla donde usa la etiqueta '{% compress%}', que ayudaría a depurar 'TemplateSyntaxError' :) – vdboor