502 网关错误 AWS Elastic Beanstalk Django

问题描述 投票:0回答:1

我正在尝试将 Django 应用程序部署到 Elastic Beanstalk。我使用 AWS CodePipeline 作为我的 CI/CD 流程。该实例能够成功部署,但是当我单击域时,它给出了 502 网关错误。我怀疑这是来自 Gunicorn 服务器未运行。

我的环境平台是Python 3.11 Linux 2023。

我怀疑 Gunicorn 没有运行,因为由于我的 AWS CodePipeline 设置方式,它无法找到我的 WSGIPath。 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' 来自我的研究。

django amazon-elastic-beanstalk aws-codepipeline
1个回答
0
投票

我设法通过使用自定义 Procfile 找到了解决此问题的方法:

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

确保 Procfile 是根级别。

© www.soinside.com 2019 - 2024. All rights reserved.