Как настроить django-compressor и django-staticfiles с Amazon's S3?

Я пытаюсь настроить django-compressor и django-staticfiles так, чтобы сжатые CSS/Javascript и изображения обслуживались с Amazon's S3.

Мне удалось настроить staticfiles, используя 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 в качестве origin.

Раздел s3/staticfiles/compressor в моем 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 пользовательского хранилища?

29
задан ghickman 9 October 2011 в 08:10
поделиться