Estoy intentando configurar django-compressor y django-staticfiles para que el CSS/Javascript comprimido y las imágenes se publiquen desde el S3 de Amazon.Cómo configurar django-compressor y django-staticfiles con Amazon's S3?
He logrado configurar archivos estáticos usando S3 como servidor, por lo que el comando collectstatic
envía los archivos a S3 en lugar de a STATIC_ROOT
.
Sin embargo, cuando trato de agregar django-compressor
a la mezcla es donde todo parece derrumbarse para mí. Después del documentation en la configuración de almacenamientos remotos, he creado una subclase del back-end de almacenamiento, boto, así que copié el example al storage.py
. Una vez que empiezo a utilizar este backend en caché, los archivos se copian en static_media y no en S3. Después de cargar la primera página, la carpeta CACHE aparece en S3 y en la carpeta static_media.
Configuración STATICFILES_STORAGE
y COMPRESS_STORAGE
de nuevo a clase S3 normal del boto (storages.backends.s3boto.S3BotoStorage
) da lugar a los activos estáticos que se recoge en el depósito de S3 y ninguna carpeta static_media. Sin embargo tratando de recargar la página lanza el error:
Caught NotImplementedError while rendering: This backend doesn't support absolute paths.
destacando {% compress css %}
como la etiqueta y compressor/base.py
como el origen.
El/staticfiles/s3 sección del compresor de mi settings.py
:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'key'
AWS_SECRET_ACCESS_KEY ='secret'
AWS_STORAGE_BUCKET_NAME = 'my-bucket'
S3_URL = 'http://my-bucket.s3.amazonaws.com/'
MEDIA_ROOT = 'client_media'
MEDIA_URL = '/media/'
STATIC_ROOT = 'static_media'
STATIC_URL = S3_URL
ADMIN_MEDIA_PREFIX = S3_URL + 'admin/'
STATICFILES_DIRS = (
join(DIRNAME, 'static'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_ENABLED = True
COMPRESS_URL = S3_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = 'storage.CachedS3BotoStorage'
STATICFILES_STORAGE = COMPRESS_STORAGE
Entonces, ¿dónde estoy haciendo mal? ¿He configurado incorrectamente algo al usar el almacenamiento personalizado CachedS3BotoStorage
?