Tôi đang cố gắng thiết lập django-compressor và django-staticfiles để CSS/Javascript nén và hình ảnh được phân phát từ S3 của Amazon.Làm thế nào để cấu hình django-máy nén và django-staticfiles với S3 của Amazon?
Tôi đã quản lý thiết lập các tệp tĩnh bằng cách sử dụng S3 làm phần phụ trợ để lệnh collectstatic
gửi các tệp tới S3 thay vì STATIC_ROOT
.
Tuy nhiên, khi cố gắng thêm django-compressor
vào danh sách kết hợp là tất cả mọi thứ dường như bị xáo trộn đối với tôi. Theo sau documentation khi thiết lập kho từ xa tôi đã tạo một lớp con của phần cuối lưu trữ, boto, vì vậy tôi đã sao chép example đến storage.py
. Khi tôi bắt đầu sử dụng phần phụ trợ được lưu trữ này, các tệp được sao chép vào static_media chứ không phải S3. Sau khi trang đầu tiên tải thư mục CACHE xuất hiện trên S3 và trong thư mục static_media.
Đặt STATICFILES_STORAGE
và COMPRESS_STORAGE
quay lại lớp S3 bình thường của boto (storages.backends.s3boto.S3BotoStorage
) dẫn đến nội dung tĩnh được thu thập vào thùng S3 và không có thư mục static_media. Tuy nhiên cố gắng tải lại trang ném lỗi:
Caught NotImplementedError while rendering: This backend doesn't support absolute paths.
nổi bật {% compress css %}
như thẻ và compressor/base.py
như nguồn gốc.
Các s3/staticfiles/phần nén của tôi 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
Vì vậy, nơi tôi đi sai? Tôi đã định cấu hình sai điều gì đó khi sử dụng bộ nhớ tùy chỉnh CachedS3BotoStorage
có thể không?