2016-07-19 17 views
1

Django静的ファイルをAmazon S3バケットにアップロードする方法を探しています。私settings.pyAmazon S3にDjango静的ファイルをアップロード

は私が持っている:私はEBコントロールパネルアップロード機能を使用してzipファイルとしてAWS EBインスタンスに私のDjangoのコードをアップロード

AWS_STORAGE_BUCKET_NAME = 'XXXXX' 
AWS_ACCESS_KEY_ID = 'AXXXXXA' 
AWS_SECRET_ACCESS_KEY = 'DXXXXXXXXX6' 
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME 
STATICFILES_LOCATION = 'static' 
STATICFILES_STORAGE = 'custom_storages.StaticStorage' 
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, STATICFILES_LOCATION) 

スタティック/ディレクトリ内の静的ファイルをS3バケットに確実にコピーするには、どのような方法が推奨されますか?

+0

https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files/ –

+0

はい私は試しました集団はそれをしません。 –

答えて

0

私はこのようなセットアップをやってみます:

settings.py:

STATICFILES_DIRS = (
    os.path.join('path', 'to_your', 'files'), 
) 
AWS_ACCESS_KEY_ID = 'AXXXXXA' 
AWS_SECRET_ACCESS_KEY = 'DXXXXXXXXX6' 
AWS_STORAGE_BUCKET_NAME = 'XXXXX' 
STATICFILES_STORAGE = 'proj.s3utils.StaticRootS3BotoStorage' # static files 
STATIC_S3_PATH = 'media/' 
DEFAULT_FILE_STORAGE = 'proj.s3utils.MediaRootS3BotoStorage' # media uploads 
DEFAULT_S3_PATH = 'static/' 
S3_URL = '//{}.s3.amazonaws.com/'.format(AWS_STORAGE_BUCKET_NAME) 
MEDIA_URL = S3_URL + STATIC_S3_PATH 
STATIC_URL = S3_URL + DEFAULT_S3_PATH 
MEDIA_ROOT = '/home/ubuntu/domain.com/proj/static/media' # assuming this is your layout 
STATIC_ROOT = '/home/ubuntu/domain.com/proj/static/static' # assuming this is your layout 
AWS_PRELOAD_METADATA = True 
AWS_S3_SECURE_URLS = True 
date_three_months_later = datetime.date.today() + datetime.timedelta(3 * 365/12) 
expires = date_three_months_later.strftime('%A, %d %B %Y 20:00:00 EST') 
AWS_HEADERS = { 
    'Expires': expires, 
    'Cache-Control': 'max-age=31536000', # 365 days 
} 

がs3utils.py: あなたはdjango-storagesboto

from storages.backends.s3boto import S3BotoStorage 

StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static') 
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media') 
をインストールしてください

それはすべてがあなたのS3バケットに行くことを確認する必要があります。

関連する問題