我们将开始使用 S3 来托管我们的静态和媒体文件。
有谁有一个很好的链接来描述如何用鹡鸰做到这两点?
我们正在使用 Wagtail 1.9。
我无法让他们两个同时工作。
https://wagtail.io/blog/amazon-s3-for-media-files/ https://wagtail.io/blog/amazon-s3-for-media-files/
非常感谢任何帮助。
感谢两位的回复。
我已经设法解决了。
需要明确的是,我想在 S3 中使用相同的存储桶来为 wagtail 站点提供静态文件和媒体文件。
我们使用带有 FROM python:2.7 的 docker 容器
- 鹡鸰==1.9
- django-storages==1.5.2
- boto3==1.4.4
自定义存储.py
from django.conf import settings
from storages.backends.s3boto3 import S3Boto3Storage
class StaticStorage(S3Boto3Storage):
location = settings.STATICFILES_LOCATION
class MediaStorage(S3Boto3Storage):
location = settings.MEDIAFILES_LOCATION
设置文件
STATICFILES_LOCATION = 'static'
MEDIAFILES_LOCATION = 'media'
STATICFILES_STORAGE = 'pcstudents.custom_storages.StaticStorage'
DEFAULT_FILE_STORAGE = 'pcstudents.custom_storages.MediaStorage'
COMPRESS_STORAGE = STATICFILES_STORAGE
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_S3_REGION_NAME = 'region'
AWS_S3_SIGNATURE_VERSION = 's3v4'
AWS_QUERYSTRING_AUTH = False
AWS_STORAGE_BUCKET_NAME = 'bucketname'
AWS_ACCESS_KEY_ID = 'secrets'
AWS_SECRET_ACCESS_KEY = 'moresecrets'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_PRELOAD_METADATA = True
STATIC_URL = "https://%s/" % AWS_S3_CUSTOM_DOMAIN
MEDIA_URL = "https://%s/media/" % AWS_S3_CUSTOM_DOMAIN
COMPRESS_ROOT = ''
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
]
STATICFILES_DIRS = [
'/code/static',
'/usr/local/lib/python2.7/site-packages/wagtail/wagtailadmin/static/wagtailadmin',
]
通过此设置,我最终得到一个 S3 存储桶,其中包含两个文件夹:static 和 media。
我可以将静态收集到 S3 静态文件夹中,并从媒体文件夹上传和下载。
如果有人能找到任何改进的方法,我会洗耳恭听,但这确实有效。
Matt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)