Sto provando a impostare django-compressor e django-staticfiles in modo che il CSS/Javascript compresso e le immagini siano servite da S3 di Amazon.Come configurare django-compressor e django-staticfiles con Amazon S3?
Sono riuscito a impostare i file statici utilizzando S3 come back-end, quindi il comando collectstatic
invia i file a S3 anziché a STATIC_ROOT
.
Tuttavia, quando si tenta di aggiungere django-compressor
al mix è dove tutto sembra cadere a pezzi per me. Dopo lo documentation sulla configurazione di archivi remoti, ho creato una sottoclasse del backend di archiviazione, boto, quindi ho copiato lo example in storage.py
. Una volta iniziato a utilizzare questo backend memorizzato nella cache, i file vengono copiati in static_media e non in S3. Dopo il caricamento della prima pagina, la cartella CACHE viene visualizzata su S3 e nella cartella static_media.
Impostazione STATICFILES_STORAGE
e COMPRESS_STORAGE
torna alla normalità classe S3 di Boto (storages.backends.s3boto.S3BotoStorage
) risultati nelle attività statiche essere raccolti nel secchio S3 e nessuna cartella static_media. Tuttavia cercando di ricaricare la pagina genera l'errore:
Caught NotImplementedError while rendering: This backend doesn't support absolute paths.
evidenziando {% compress css %}
come il tag e compressor/base.py
come origine.
Il/staticfiles/sezione del compressore s3 della mia 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
Allora, dove sto andando male? Ho configurato male qualcosa durante l'utilizzo dello spazio di archiviazione personalizzato CachedS3BotoStorage
?