2013-08-17 2 views
3

Я не могу на всю жизнь выяснить, как настроить django-хранилища. Все направления кажутся неполными или чем-то еще.Настройка django-хранилищ

Я пробовал: 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 для видео-учебника, чтобы следовать за ним, и ничего нет.

Я просмотрел stackoverflow, и я просто потерян. Я не знаю, что делать.

+1

Это пятница. Пойдите пить пиво и попробуйте еще раз в понедельник с чистой головой. :-) –

+0

Я не достаточно взрослый, чтобы пить :(Я искал указания о том, как это сделать в течение пары дней. Я почти готов отказаться. – Zacharoo

+1

Иногда вам просто нужно отступить и повторите попытку после некоторого отдыха. Получите некоторое отвлечение (а не игру или компьютер) и начните с нуля завтра. –

ответ

10

Это контрольный список настроек, который я сделал для своих коллег.

  1. Настройте учетную запись на Amazon и получите веб-службы Amazon. (Он проверяет вашу кредитную карту, но не будет взимать с вас плату.)
  2. Перейти на веб-консоль AWS, перейти к S3 (хранение файлов). Создать новый ведро.
  3. В свойствах ковша добавляются письменные сообщения для аутентифицированных пользователей.
  4. В консоли AWS перейдите в раздел Службы> Развертывание & Управление> IAM (Управление идентификацией и доступом). Создайте в нем группу пользователей и один пользователь. НЕ ЗАКРЫВАЙТЕ ОКНО ПОПЕРА! В всплывающем окне нажмите «Загрузить учетные данные», чтобы сохранить ключи. Они необходимы для Django settings_local.py.
  5. Если вы забыли или потеряли ключи, перейдите к этому пользователю> Учетные записи безопасности> Доступ к учетным данным> Управление ключами доступа. Создайте ключ и сохраните учетные данные.
  6. Еще в IAM, установить права доступа пользователя:

    { 
        "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.

  7. Установите следующие пакеты:

    django-storages==1.1.8 
    boto==2.9.7 
    
  8. Я добавил этот код 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' 
    
  9. Этот код идет в 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', 
        ) 
    
  10. Перейдите в раздел AWS S3 и получите URL-адрес своего ведра, вставьте его в файлы настроек, установите STATIC_URL соответственно.

  11. Вставить ключи из учетных данных в settings_local.py. Теперь Django должен иметь возможность загружать статические файлы в хранилище.

  12. Выполнить эту команду:

    $ uenv/bin/python your_project/manage.py collectstatic 
    
  13. Если загружать файлы, то все правильно. Если нет, проверьте сообщения об ошибках.

    1. Если сбой Django, то это проблемы с локальной настройкой (скорее всего, импортные ошибки - затем pyflakes your_project/settings*.py).
    2. Если удаленный сервер отвечает 403, то это политика доступа пользователей, проблема. Вам нужно обратиться к пользователю и настроить доступ, а также ведро и проверить, имеют ли пользователи, прошедшие проверку подлинности, разрешения.
  14. Для проверки доступа к файлам из Интернета вставьте веб-адрес ведра S3 в STATIC_URL. Запустите Django и посмотрите, откуда взялись активы statc.

    Если вы хотите CloudFront, это еще несколько шагов.

  15. В AWS перейдите в Сервис> Хранение & Доставка контента> CloudFront. Создайте дистрибутив. Распространение подобно виртуальному веб-серверу с доступом к папке.

    Выбрать:

    • Скачать
    • Origin доменного имени = имя домена ведра, созданные на первых этапах. состояние
    • Распределение = Enabled
  16. Перейти к новым настройкам распределения и скопировать имя домена. Вставьте его как STATIC_URL в файл settings_local.py. Новый STATIC_URL от CloudFront не должен содержать имя ведра, потому что это доменное имя специально для этого ведра.

    Этот URL-адрес является конфиденциальной информацией в том смысле, что доступ к ней стоит вам реальных денег и медленнее, чем локальный сервер-разработчик, поэтому, вероятно, он не должен работать в среде разработки.

Надеюсь, это поможет.

+0

Вы замечательные, спасибо за сообщение, что это было очень полезно, и из-за вас мои проблемы закончились. – Zacharoo

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