提供来自S3 Wagtail的静态和媒体文件

时间:2017-05-16 10:59:20

标签: django amazon-s3 wagtail

我们将开始使用S3来托管我们的静态AND媒体文件。

有没有人有一个很好的链接来描述如何用wagtail做什么?

我们不知道1.9。

我不能让他们两个同时工作。

https://wagtail.io/blog/amazon-s3-for-media-files/

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

Wagtail.io上的

This blog post对我帮助很大。但是你面临的问题是什么?你能让它分别为媒体和静态文件工作吗?

答案 1 :(得分:1)

感谢您的回复。

我设法解决了这个问题。

要明确的是,我想在S3中使用相同的存储桶为我的静态和我的媒体文件提供服务。

我们正在使用具有FROM python:2.7

的docker容器
  • 鸰== 1.9
  • Django的存储器== 1.5.2
  • boto3 == 1.4.4

custom_storages.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存储桶,其中有两个文件夹,静态和媒体。

我可以将statstatic收集到S3静态文件夹中,并从/向媒体文件夹上传和下载。

如果有人能看到任何方法来改善我的全部耳朵,但这确实有效。

马特