2017-05-16 1 views
2

Nous allons commencer à utiliser S3 pour héberger nos fichiers statiques ET multimédias.Traitement des fichiers statiques et multimédia à partir de la bergerie S3

Est-ce que quelqu'un a un bon lien qui décrit comment faire les deux avec wagtail?

Nous sommes en wagtail 1.9.

Je n'arrive pas à faire fonctionner les deux en même temps.

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

Toute aide grandement appréciée.

+0

Voulez-vous utiliser le même seau S3 ou 2 seaux différents? Quand vous dites en même temps, voulez-vous dire que vous pouvez les faire travailler l'un sans l'autre? – Benos

Répondre

1

This blog post sur wagtail.io m'a beaucoup aidé. Mais à quels problèmes faites-vous face? Pouvez-vous le faire fonctionner séparément pour les fichiers multimédias et statiques?

1

Merci à tous les deux pour répondre.

J'ai réussi à résoudre ce problème. Pour être clair, je veux utiliser le même compartiment dans S3 pour servir mes fichiers statiques et mes fichiers multimédias pour le site de Wagtail.

Nous utilisons des conteneurs docker avec python DE: 2,7

  • Bergeronnette == 1.9
  • django-== 1.5.2
  • entrepôts
  • 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 
fichier

paramètres

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', 
] 

Avec cette configuration, je me retrouve avec un compartiment S3, avec deux dossiers, statique et multimédia.

Je peux collectertatic dans le dossier statique S3 et télécharger et télécharger depuis/vers le dossier multimédia.

Si quelqu'un peut voir un moyen d'améliorer cela, je suis tout ouïe, mais cela fonctionne.

Matt

+0

Ceci est entièrement conforme aux meilleures pratiques de Django, donc je ne pense pas que votre configuration ait besoin d'être améliorée – dentemm