Я пытаюсь настроить django-compress и django-staticfiles так, чтобы сжатые CSS / Javascript и изображения подавались из Amazon S3.
Мне удалось настроить статические файлы, используя S3 в качестве бэкэнда, поэтому команда collectstatic
отправляет файлы на S3 вместо STATIC_ROOT
.
Однако, когда я пытаюсь добавить django-compressor
к миксу, мне кажется, что все это разваливается. Следуя документации по настройке удаленных хранилищ, я создал подкласс внутреннего хранилища boto , поэтому скопировал пример в storage.py
. Как только я начинаю использовать этот кэшированный сервер, файлы копируются в static_media, а не в S3. После загрузки первой страницы папка CACHE появляется на S3 и в папке static_media.
Установка STATICFILES_STORAGE
и COMPRESS_STORAGE
обратно к обычному классу S3 boto (storages.backends.s3boto.S3BotoStorage
) приводит к тому, что статические ресурсы собираются в корзину S3, а папка static_media отсутствует. Однако попытка перезагрузить страницу выдает ошибку:
Caught NotImplementedError while rendering: This backend doesn't support absolute paths.
выделение {% compress css %}
в качестве тега и compressor/base.py
в качестве источника.
Секция s3 / staticfiles / compress моего 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
Так, где я иду не так? Возможно, я что-то неправильно настроил при использовании пользовательского хранилища CachedS3BotoStorage
?