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 находится на уровне корня.