Setting up Django on AWS Elastic Beanstalk: WSGIPath not found

django amazon-web-services wsgi elastic-beanstalk django-wsgi

16949 просмотра

6 ответа

I've been trying for several days now to set up Django under Amazon Web Services' Elastic Beanstalk. I think the problem I'm hitting is this one:

ERROR - Your WSGIPath refers to a file that does not exist.

I followed the tutorial here and all goes well until the end of Step 6, but I can't for the life of me get anything to display other than the generic Elastic Beanstalk page from Step 5, #2. When I run

./manage.py runserver

на моей локальной машине все работает как надо, но я не могу развернуть эту страницу. Я сначала попробовал с небольшим сайтом Django, который я написал сам. Это не сработало, поэтому я удалил все, что сделал, и попробовал еще раз, это не сработало, поэтому я удалил все это и попытался снова с новой установкой django. Я пробовал это много раз возиться с мелочами, но я думаю, что мне не хватает чего-то серьезного.

Я добавил файл python.config, как описано в этом руководстве .

Вот моя файловая структура:

-.git/
-.mysite/
    -myapp/
        -__init__.py
        -models.py
        -tests.py
        -views.py
    -mysite/
        -__init__.py
        -settings.py
        -urls.py
        -wsgi.py
    -.ebextensions/
        -python.config
    -manage.py
    -mysite.db
    -requirements.txt

Из моего settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mysite.db',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}

Вот python.config:

container_commands:   01_syncdb:    
    command: "django-admin.py syncdb --noinput"
    leader_only: true

option_settings:
    - namespace: aws:elasticbeanstalk:container:python
      option_name: WSGIPath
      value: mysite/wsgi.py
    - option_name: DJANGO_SETTINGS_MODULE
      value: mysite.settings
    - option_name: AWS_SECRET_KEY
      value: <This is my secret key>
    - option_name: AWS_ACCESS_KEY_ID
      value: <This is my access key>

Есть ли другое место, где мне нужно определить мой WSGIPath? Есть ли способ сделать это через консоль AWS? Стоит ли вообще пропустить EB и использовать EC2 напрямую?

Автор: Xephryous Источник Размещён: 13.07.2019 02:51

Ответы (6)


14 плюса

Решение

С https://forums.aws.amazon.com/thread.jspa?messageID=396656൰

Каталог ".ebextensions" должен находиться в корневом каталоге вашего приложения, но из выходных данных журнала этот каталог вместо этого находится в каталоге "mysite / .ebextensions". Так, например, после выполнения учебника по django в документации при запуске «git aws.push» ваш корневой каталог будет выглядеть так:

.
├── .ebextensions
│   └── python.config
├── .elasticbeanstalk
│   ├── config
├── .git
├── .gitignore
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── requirements.txt

Вместо этого:

.
└── mysite
    ├── .ebextensions
    ├── .elasticbeanstalk
    ├── .git
    ├── .gitignore
    ├── manage.py
    ├── mysite
    └── requirements.txt
Автор: tutuDajuju Размещён: 17.02.2013 09:12

8 плюса

Найдите .elasticbeanstalk/optionsettings.your-app-nameв корневом каталоге вашего приложения. Найдите WSGIPathи убедитесь, что это тот путь, который вы намереваетесь. Похоже, что по умолчанию application.py.

Автор: Rose Perrone Размещён: 17.07.2013 11:04

3 плюса

У меня была та же проблема ( «Ваш WSGIPath ссылается на файл, который не существует» ), и, наконец, нашел решение:

Примечание: Сначала я искал в неправильном направлении, потому что EB также показывал это сообщение: Произошла ошибка во время сборки: Ошибка команды 01_migrate. , Поэтому я думал, что файлы, включая * .config, были правильно расположены.

Автор: Leo Размещён: 24.03.2015 03:17

2 плюса

Хорошо, вот что сработало для меня после попытки миллион вещей. Вы должны запустить eb update, чтобы обновить среду.

Поэтому убедитесь, что .elasticbeanstalk/optionsettings.whatever-envWSGIPath установлен на то, что вам нужно, и убедитесь, что .ebextensions/whatever.configэто:

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: whatever/wsgi.py

Тогда беги eb updateи все должно работать. Помните, что вы должны установить псевдоним, чтобы убедиться, что ваша ebкоманда действительно работает. Например:

alias eb="python2.7 ../AWS-ElasticBeanstalk-CLI-2.6.3/eb/linux/python2.7/eb"
Автор: capcom Размещён: 05.07.2014 04:05

2 плюса

У меня возникла та же проблема после того, как я дошел до того, что выполнил документацию AWS Чтобы избежать этого, я шаг за шагом инициализировал приложение через интерфейс командной строки EB, не используя команду, указанную в документации AWS (~ / ebdjango $ eb init -p python2.7 django-tutorial), и пошаговое создание среды. также. В EB CLI я предпринял следующие шаги:

  1. Инициализировать приложение
    1. eb init
    2. Выберите регион по умолчанию
    3. Введите имя приложения (используется по умолчанию, нажав Enter)
    4. Подтвердил, что я использую Python
    5. Выбранная версия Python, совместимая с моей локальной средой
    6. Настройте SSH
  2. Создать среду
    1. eb create
    2. Введите имя среды (используется по умолчанию, нажав Enter)
    3. Введите префикс DNS CNAME (используется по умолчанию при нажатии Enter)
    4. Выберите тип балансировщика нагрузки (я выбрал классический, введя 1)

После создания среды я использую, eb configчтобы открыть файл конфигурации EB, чтобы подтвердить, что путь к моему WSGI должен быть таким:

aws:elasticbeanstalk:container:python:
  NumProcesses: '1'
  NumThreads: '15'
  StaticFiles: /static/=static/
  WSGIPath: path/to/wsgi.py

Если внесены какие-либо изменения, убедитесь, что вы сохранили файл и подтвердите, что все в порядке, введя eb openв своем терминале, чтобы открыть окно браузера, используя доменное имя, указанное в предыдущих шагах.

Автор: user2583728 Размещён: 17.10.2017 06:07

0 плюса

Решение: использование EBCLI

открыть eb config Для меня это показало, WSGIPath: application.py теперь измените его на

WSGIPath: my_app/wsgi.py

сохранить и развернуть.

Автор: Arun K Размещён: 08.02.2019 09:51
Вопросы из категории :
32x32