このハウツーに従ってdjango + S3をセットアップしました。具体的には:
import os
# AWS credentials
AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
# boto config
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_HEADERS = { # see http://developer.yahoo.com/performance/rules.html#expires
'Expires': 'Thu, 31 Dec 2099 20:00:00 GMT',
'Cache-Control': 'max-age=94608000',
}
# For the static files
STATICFILES_LOCATION = 'static'
STATICFILES_STORAGE = 'myapp.custom_storages.StaticStorage'
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, STATICFILES_LOCATION)
# For the media files
MEDIAFILES_LOCATION = 'media'
DEFAULT_FILE_STORAGE = 'myapp.custom_storages.MediaStorage'
MEDIA_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, MEDIAFILES_LOCATION)
私のカスタムストレージはシンプルS3BotoStorage
です:
from django.conf import settings
from storages.backends.s3boto import S3BotoStorage
class StaticStorage(S3BotoStorage):
location = settings.STATICFILES_LOCATION
class MediaStorage(S3BotoStorage):
location = settings.MEDIAFILES_LOCATION
collectstatic
(ハウツーで説明されているように) この構成を尊重し、myapp.custom_storages.StaticStorage
収集した静的ファイルを S3 にアップロードするために を使用することを期待します。代わりに、ローカル ファイル システムを使用するだけです。私が持っているので:
STATIC_ROOT = os.path.join(BASE_DIR, 'mycollectstatic')
('static'
私にはあまりにも混乱しているように見えるという理由だけで)、私はそれをはっきりと見ることができます:
» python manage.py collectstatic
You have requested to collect static files at the destination
location as specified in your settings:
/absolute-path/mycollectstatic
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel:
そのため、 の場合でもcollectstatic
コマンドが使用されているようです。これは期待されていますか?STATIC_ROOT
STATICFILES_STORAGE = 'myapp.custom_storages.StaticStorage'
STATIC_ROOT
別のを使用する場合は、別の構成にする必要がありますSTATICFILES_STORAGE
か? これはどこに文書化されていますか?