502 Ошибка шлюза AWS Elastic Beanstalk Django

Я пытаюсь развернуть приложение Django на Elastic Beanstalk. Я использовал AWS CodePipeline в качестве процесса CI/CD. Экземпляр успешно развертывается, но когда я нажимаю на домен, он выдает ошибку шлюза 502. Я подозреваю, что это происходит из-за того, что сервер Gunicorn не работает.

Моя платформа окружения - Python 3.11 Linux 2023.

Я подозреваю, что Gunicorn не запускается, поскольку он не может найти мой WSGIPath из-за того, как настроен мой AWS CodePipeline. AWS CodePipeline считывает данные из моего репозитория, в котором есть папка 'node' (содержащая мой фронтенд) и папка 'python' (содержащая мое приложение Django). Мой файл 'python/.ebextensions/django.config' содержит следующую конфигурацию:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: myproject.wsgi:application

Я предполагаю, что мой путь установлен неправильно, поскольку 'myproject' не находится на корневом уровне. Поэтому я попробовал следующую конфигурацию:

option_settings:
  aws:elasticbeanstalk:application:environment:
    PYTHONPATH: "/opt/python/current/app/python:$PYTHONPATH"
    DJANGO_SETTINGS_MODULE: myproject.settings
  aws:elasticbeanstalk:container:python:
    WSGIPath: myproject.wsgi:application

Это все еще дает мне ошибку 502, поэтому я не уверен, что делать дальше. Я запутался в том, как правильно установить PYTHONPATH, чтобы 'myproject' был найден. Я не могу найти документацию о том, по какому пути хранятся файлы приложения. '/opt/python/current/' и '/var/app/current' из того, что я исследовал.

Мне удалось найти способ обойти это, используя пользовательский Procfile:

web: gunicorn --bind :8000 --workers 3 --threads 2 --pythonpath python myproject.wsgi:application

Убедитесь, что Procfile находится на уровне корня.

Вернуться на верх