2013-04-01 4 views
1

Я использую хранилище django-s3-folder для хранения своих статических и медиафайлов. Я выполнил все инструкции, упомянутые в документации, но все же я не могу обслуживать свои статические файлы. Я могу обслуживать мои загруженные пользователем файлы, но статические файлы не отображаются на веб-сайте даже после запуска команды collectstatic, которая скопировала файлы в ведро. Я не создал никаких записей CNAME в моем домене (не уверен, имеет ли это значение, поскольку я могу видеть загруженные пользователем изображения).Amazon S3 для django в производстве

Мои настройки файла:

DEFAULT_FILE_STORAGE = 's3_folder_storage.s3.DefaultStorage' 
DEFAULT_S3_PATH = "media" 
STATICFILES_STORAGE = 's3_folder_storage.s3.StaticStorage' 
STATIC_S3_PATH = "static" 
AWS_ACCESS_KEY_ID = # omitted 
AWS_SECRET_ACCESS_KEY = # omitted 
AWS_STORAGE_BUCKET_NAME = # omitted 

MEDIA_ROOT = '/%s/' % DEFAULT_S3_PATH 
MEDIA_URL = '//s3.amazonaws.com/%s/media/' % AWS_STORAGE_BUCKET_NAME 
STATIC_ROOT = "/%s/" % STATIC_S3_PATH 
STATIC_URL = '//s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME 
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' 

STATICFILES_DIRS = (
     root('static'), 
) 

И мой каталог проекта:

website_name 
    static 
    website_name 
     settings.py 
+0

Я использую s3fox, и по какой-то причине я не могу проверить, попадают ли файлы в ведро или нет после collectstatic. Я здесь задал другой вопрос относительно этого. (Http://stackoverflow.com/questions/15747933/amazon-s3-problems-with-s3fox). Я также не могу получить к ним доступ с их прямым URL-адресом? Я не установил точку записи CNAME на сайт s3.amazon.com? Нужно ли настраивать доступ к статическим файлам? – Dev

+0

Попробуйте войти в S3 через веб-интерфейс Amazon и проверить содержимое этого ковша. Кроме того, вы могли бы добавить свои параметры Django, MEDIA_URL и STATIC_URL в вопрос? (Если вы не изменили настройки _URL на новое имя домена, то нет, ваш CNAME еще не проблема.) – toxotes

+0

Привет, я редактировал свой вопрос с моими настройками. А также я могу видеть ведро, когда я вхожу в систему с помощью пользовательского интерфейса amazon, и я могу видеть все мои статические файлы. – Dev

ответ

0

Я изменил STATIC_URL нравится ниже, и теперь он работает нормально.

STATIC_URL = '//bucketname.s3.amazonaws.com/static/'

Но MEDIA_URL, как сказано в документации сам и MEDIA_URL работает отлично. Только STATIC_URL нуждается в модификации.

Похоже, что документация неверна.

+3

Я думаю, что дело не в том, что документация прямо * неправильная *, но в том, что она просто не учитывает некоторые аспекты вашей конфигурации. – toxotes

0

Как правило, S3 может использовать либо формат субдомена, либо путь в подпапке. Значение по умолчанию для django-storages, которое используется данным конкретным хранилищем, является поддоменом. Поэтому интересно, что переход к подпапке решил проблему. ОП упоминает использование европейского региона в different question, и я подозреваю, что проблема с корнем здесь связана с используемой конечной точкой или с одним из параметров конфигурации S3/S3BotoStorage, влияющих на регион (например, AWS_CALLING_FORMAT).

Смежные вопросы