2013-08-17 29 views
3

我不能爲我的生活找出如何設置django-storages。所有的方向似乎是不完整的或某事。設置django-storages

我已經試過: http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html http://blog.doismellburning.co.uk/2012/07/14/using-amazon-s3-to-host-your-django-static-files/ 和一對夫婦別人,我現在找不到。

我在YouTube上看過一個視頻教程,並且沒有任何內容。

我看了看周圍的計算器,我只是迷路了。我不知道該怎麼辦。

+1

這是星期五。去喝一杯啤酒,週一再試一次,頭部清潔。 :-) –

+0

我還不夠大喝:(我一直在尋找關於如何做到這一點的方法,現在幾天了,我準備放棄了 – Zacharoo

+1

有時你只需要退後一步並在休息一會兒再試一次,獲得一些分心(不是遊戲或電腦相關),並從明天開始從零開始 –

回答

10

這是我爲我的同事製作的設置清單。

  1. 在Amazon上設置帳戶並獲取Amazon Web Services。 (它會檢查您的信用卡,但最初不會收費。)
  2. 轉到AWS Web控制檯,轉到S3(文件存儲)。創建一個新的存儲桶
  3. 在存儲桶屬性中,向已認證的用戶添加寫入準備。
  4. 在AWS控制檯中,轉到服務>部署&管理> IAM(身份和訪問管理)。在其中創建一個用戶組和一個用戶。不要關閉POPUP窗口!在彈出窗口中,單擊「下載憑證」以保存密鑰。他們需要Django settings_local.py
  5. 如果您忘記或丟失了密鑰,請轉至該用戶>安全證書>訪問證書>管理訪問密鑰。創建一個密鑰並保存憑證。
  6. 在IAM
  7. 儘管如此,設置用​​戶訪問權限:

    { 
        "Version": "2013-08-17", 
        "Statement": [ 
        { 
         "Effect": "Allow", 
         "Action": "s3:*", 
        "Resource": ["*"] 
        } 
        ] 
    } 
    

    該策略允許訪問所有水桶的用戶羣:現在

    { 
        "Version": "2012-10-17", 
        "Statement": [ 
        { 
         "Action": [ 
         "s3:ListAllMyBuckets" 
         ], 
         "Effect": "Allow", 
         "Resource": "arn:aws:s3:::*" 
        }, 
        { 
         "Action": [ 
         "cloudfront:*" 
         ], 
         "Effect": "Allow", 
         "Resource": "*" 
        } 
        ] 
    } 
    

    ,水桶被設置,用戶都可以訪問到它。您可以嘗試設置和測試從Django訪問桶。

  8. 安裝以下軟件包:

    django-storages==1.1.8 
    boto==2.9.7 
    
  9. 我將此代碼添加到settings_local.py不把它暴露給那些誰查看承諾:

    USE_AMAZON = False # Set this to True when ready 
    STATIC_URL = 'your-bucket-s3-url' 
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
    AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXX' 
    AWS_SECRET_ACCESS_KEY = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY' 
    AWS_STORAGE_BUCKET_NAME = 'your-bucket-name' 
    
  10. 此代碼去settings.py

    from settings_local import * 
    
    if USE_AMAZON: 
        BASE_MEDIA_URL = 'static' 
           MEDIA_URL = '/media/' 
    
        DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
    
        STATIC_ROOT = os.path.join(settings.BASE_PATH, 'static') 
        MEDIA_ROOT = os.path.join(settings.BASE_PATH, 'old_media') 
        STATICFILES_DIRS = (
         ('img', os.path.join(STATIC_ROOT, 'img'), 
         ('js', os.path.join(STATIC_ROOT, 'js'), 
        ) 
    
        INSTALLED_APPS += (
         'django.contrib.staticfiles', 
         'storages', 
        ) 
    
  11. 轉至AWS S3部分,獲取您存儲桶的url,將其粘貼到設置文件中,相應地設置STATIC_URL

  12. 將密鑰從憑證粘貼到settings_local.py中。 現在Django應該能夠將靜態文件上傳到存儲。

  13. 運行以下命令:

    $ uenv/bin/python your_project/manage.py collectstatic 
    
  14. 如果上傳文件,那麼一切都是正確的。如果沒有,請檢查錯誤消息。

    1. 如果Django崩潰,那麼它是本地安裝問題(很可能導入錯誤 - 然後做pyflakes your_project/settings*.py)。
    2. 如果遠程服務器響應403,那麼它是用戶訪問策略問題。您需要前往用戶並設置訪問權限,並檢查經過身份驗證的用戶是否擁有權限。
  15. 只是爲了檢查文件是否可以從網上訪問,請將存儲桶的S3網址粘貼到STATIC_URL中。運行Django並查看statc資產的來源。

    如果您需要CloudFront,還需要執行一些步驟。

  16. 在AWS中,轉到服務>存儲& Content Delivery> CloudFront。創建一個分配。分發就像一個可以訪問文件夾的虛擬Web服務器。

    選擇:

    • 下載
    • 原產地域名=你在第一個步驟中創建的桶的域名。
    • 分佈狀態=啓用
  17. 轉到新的分配設置,並複製該域名。將其作爲STATIC_URL粘貼到settings_local.py文件中。 來自CloudFront的新STATIC_URL不應包含存儲桶名稱,因爲此域名專用於該存儲桶。

    這個URL是一個敏感數據,因爲訪問它會花費你真正的錢,並且比本地開發服務器慢,所以它可能不應該在開發環境中運行。

希望這會有所幫助。

+0

你真是太棒了,謝謝你發佈這張照片最有幫助,因爲你我的煩惱已經結束了。 – Zacharoo