2013-04-01 88 views
1

我爲我的靜態和媒體文件存儲使用django-s3-folder-storage。我遵循了文檔中提到的所有說明,但仍然無法提供我的靜態文件。我能夠爲我的用戶上傳的文件提供服務,但即使在運行collectstatic命令(將文件複製到存儲桶中)後,靜態文件也不會顯示在網站上。我沒有在我的域中創建任何CNAME記錄(不確定這是否因爲我能夠看到用戶上傳的圖像而有所差異)。亞馬遜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)。我無法通過他們的直接網址訪問他們?我沒有設置任何CNAME記錄指向s3.amazon.com?我是否需要設置才能訪問靜態文件? – Dev

+0

嘗試通過亞馬遜的Web界面登錄到S3並檢查存儲桶的內容。另外,您可以將Django版本,MEDIA_URL和STATIC_URL設置添加到問題中嗎? (如果您還沒有將您的_URL設置更改爲新的域名,則不會,您的CNAME也不是問題。) – toxotes

+0

嗨,我已經使用我的設置編輯了我的問題。而且,當我使用亞馬遜用戶界面登錄時,我也能夠看到存儲桶,並且我也可以看到我的所有靜態文件。 – Dev

回答

0

我已經改變了STATIC_URL下方喜歡,現在是工作的罰款。

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

但MEDIA_URL就像文檔中提到自己和MEDIA_URL工作正常。它只是需要修改的STATIC_URL。

看起來像是文檔不對。

+3

我認爲這不是文檔徹底*錯誤*,而只是沒有考慮到配置的某些方面。 – toxotes

0

通常S3可以使用子域或子文件夾路徑格式。 django-storages(由此特定存儲使用)的默認值是子域。所以有趣的是,改變到子文件夾解決了這個問題。 OP提到在歐洲地區使用different question,我懷疑根本問題與使用的端點或S3/S3BotoStorage影響區域的配置設置(例如AWS_CALLING_FORMAT)之一有關。