【发布时间】:2014-01-23 16:59:48
【问题描述】:
我遵循了在 SO 和不同博客中找到的每一个 QA 建议,在我的开发机器上一切正常,而在 heroku 上却没有。
这是我的设置:
DEFAULT_FILE_STORAGE = 'arena.utils.MediaRootS3BotoStorage' # media files
# storage
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_PRELOAD_METADATA = True # necessary to fix manage.py collectstatic command to only upload changed files instead of all files
S3_URL = 'https://%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
MEDIA_URL = S3_URL + '/media/'
STATIC_URL = S3_URL + '/static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
COMPRESS_URL = STATIC_URL
COMPRESS_OFFLINE = True
COMPRESS_STORAGE = 'utils.CachedS3BotoStorage'
STATICFILES_STORAGE = COMPRESS_STORAGE
当我运行 collectstatic/compress 一切正常时,我看到文件被收集到 S3 并放在适当的位置。我看到了清单文件。
使用压缩器标签加载任何页面,显示错误OfflineGenerationError: You have offline compression enabled but key "d2a53169c44dec41ce3ee7da19b2b9d4" is missing from offline manifest. 再次运行python manage.py compress 无法解决任何问题。当我检查清单文件时,它寻找的密钥确实不存在。
这里出了什么问题?
我已经检查过的问题:
How to configure django-compressor and django-staticfiles with Amazon's S3?
Django Compressor with S3 URL Heroku
Configuring django-compressor with remote storage (django-storage - amazon s3)
【问题讨论】:
-
我认为这与您向模板中添加较少文件的方式有关。我在开发中动态添加了它们,这很好。当您使用
manage.py compress命令时,它看不到动态添加的,也无法压缩这些。 -
@JacobValenta 我在模板中没有更少的文件。我有一个编译器会在 Pycharm 中的每次保存时自动运行。
manage.py compress在 heroku 上工作,不会抛出任何错误,但是当我尝试加载页面时,每次都会遇到相同的错误。好像它无法读取清单什么的
标签: django heroku amazon-s3 django-compressor