【问题标题】:Deploying a Django application to Elastic Beanstalk AWS 502 Bad Gateway将 Django 应用程序部署到 Elastic Beanstalk AWS 502 错误网关
【发布时间】:2022-01-29 16:33:38
【问题描述】:

我按照 AWS 官方网站上的所有说明进行操作,但仍然遇到同样的错误。我已经尝试了几个项目,本地服务器上的每个项目在 AWS 上启动后都可以正常工作,我收到下一个错误 502 Bad Gateway。

  • 这似乎是主要问题:ModuleNotFoundError: No module named 'ebddjango/wsgi'

wsg 文件:

import os from django.core.wsgi 
import get_wsgi_application 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ebddjango.settings') application = get_wsgi_application() 

配置:

option_settings: 
aws:elasticbeanstalk:container:python: 
WSGIPath: ebddjango/wsgi:application

状态:

  Updated: 2022-01-27 14:19:09.259000+00:00
  Status: Ready
  Health: Red

错误日志

Jan 27 14:49:19 ip-172-31-8-170 web: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
Jan 27 14:49:19 ip-172-31-8-170 web: File "<frozen importlib._bootstrap>", line 983, in _find_and_load
Jan 27 14:49:19 ip-172-31-8-170 web: File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
Jan 27 14:49:19 ip-172-31-8-170 web: ModuleNotFoundError: No module named 'ebddjango/wsgi'
Jan 27 14:49:19 ip-172-31-8-170 web: [2022-01-27 14:49:19 +0000] [4399] [INFO] Worker exiting (pid: 4399)
Jan 27 14:49:19 ip-172-31-8-170 web: [2022-01-27 14:49:19 +0000] [4392] [INFO] Shutting down: Master
Jan 27 14:49:19 ip-172-31-8-170 web: [2022-01-27 14:49:19 +0000] [4392] [INFO] Reason: Worker failed to boot.
Jan 27 14:49:20 ip-172-31-8-170 web: [2022-01-27 14:49:20 +0000] [4407] [INFO] Starting gunicorn 20.1.0
Jan 27 14:49:20 ip-172-31-8-170 web: [2022-01-27 14:49:20 +0000] [4407] [INFO] Listening at: http://127.0.0.1:8000 (4407)
Jan 27 14:49:20 ip-172-31-8-170 web: [2022-01-27 14:49:20 +0000] [4407] [INFO] Using worker: gthread
Jan 27 14:49:20 ip-172-31-8-170 web: [2022-01-27 14:49:20 +0000] [4414] [INFO] Booting worker with pid: 4414
Jan 27 14:49:20 ip-172-31-8-170 web: [2022-01-27 14:49:20 +0000] [4414] [ERROR] Exception in worker process
Jan 27 14:49:20 ip-172-31-8-170 web: Traceback (most recent call last):
Jan 27 14:49:20 ip-172-31-8-170 web: File "/var/app/venv/staging-LQM1lest/lib/python3.7/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
Jan 27 14:49:20 ip-172-31-8-170 web: worker.init_process()
Jan 27 14:49:20 ip-172-31-8-170 web: File "/var/app/venv/staging-LQM1lest/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 92, in init_process
Jan 27 14:49:20 ip-172-31-8-170 web: super().init_process()
Jan 27 14:49:20 ip-172-31-8-170 web: File "/var/app/venv/staging-LQM1lest/lib/python3.7/site-packages/gunicorn/workers/base.py", line 134, in init_process
Jan 27 14:49:20 ip-172-31-8-170 web: self.load_wsgi()
Jan 27 14:49:20 ip-172-31-8-170 web: File "/var/app/venv/staging-LQM1lest/lib/python3.7/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
Jan 27 14:49:20 ip-172-31-8-170 web: self.wsgi = self.app.wsgi()
Jan 27 14:49:20 ip-172-31-8-170 web: File "/var/app/venv/staging-LQM1lest/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
Jan 27 14:49:20 ip-172-31-8-170 web: self.callable = self.load()
Jan 27 14:49:20 ip-172-31-8-170 web: File "/var/app/venv/staging-LQM1lest/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
Jan 27 14:49:20 ip-172-31-8-170 web: return self.load_wsgiapp()
Jan 27 14:49:20 ip-172-31-8-170 web: File "/var/app/venv/staging-LQM1lest/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
Jan 27 14:49:20 ip-172-31-8-170 web: return util.import_app(self.app_uri)
Jan 27 14:49:20 ip-172-31-8-170 web: File "/var/app/venv/staging-LQM1lest/lib/python3.7/site-packages/gunicorn/util.py", line 359, in import_app
Jan 27 14:49:20 ip-172-31-8-170 web: mod = importlib.import_module(module)
Jan 27 14:49:20 ip-172-31-8-170 web: File "/usr/lib64/python3.7/importlib/__init__.py", line 127, in import_module
Jan 27 14:49:20 ip-172-31-8-170 web: return _bootstrap._gcd_import(name[level:], package, level)
Jan 27 14:49:20 ip-172-31-8-170 web: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
Jan 27 14:49:20 ip-172-31-8-170 web: File "<frozen importlib._bootstrap>", line 983, in _find_and_load
Jan 27 14:49:20 ip-172-31-8-170 web: File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
Jan 27 14:49:20 ip-172-31-8-170 web: ModuleNotFoundError: No module named 'ebddjango/wsgi'
Jan 27 14:49:20 ip-172-31-8-170 web: [2022-01-27 14:49:20 +0000] [4414] [INFO] Worker exiting (pid: 4414)
Jan 27 14:49:20 ip-172-31-8-170 web: [2022-01-27 14:49:20 +0000] [4407] [INFO] Shutting down: Master
Jan 27 14:49:20 ip-172-31-8-170 web: [2022-01-27 14:49:20 +0000] [4407] [INFO] Reason: Worker failed to boot.
Jan 27 14:49:20 ip-172-31-8-170 web: [2022-01-27 14:49:20 +0000] [4422] [INFO] Starting gunicorn 20.1.0
-- More  --

【问题讨论】:

  • 您好,您在使用 .ebextensions 文件夹和 .config 文件吗?
  • 请编辑你的答案并给我看你的配置文件,如果可能的话,你的 ebddjango/wsgi.py 文件
  • import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ebddjango.settings') application = get_wsgi_application() config: option_settings: aws:elasticbeanstalk:container:python : WSGIPath: ebddjango/wsgi:application

标签: python django amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

似乎我遇到了完全相同的问题:我关注了official tutorial,但最终出现了 502 错误。 我在Stackify 上找到了我的解决方案,他们说:

Amazon Linux 2 平台上的 Python 3.7+ 确实需要 gunicorn。

所以我所做的只是在安装 django 之后运行以下命令(本教程的 Set up a Python virtual environment and install Django 部分的第 3 点)

pip install gunicorn

【讨论】:

    【解决方案2】:

    在您的 .config 文件中尝试

    option_settings:
      aws:elasticbeanstalk:application:environment:
        DJANGO_SETTINGS_MODULE: ebddjango.settings
      aws:elasticbeanstalk:container:python:
        WSGIPath: ebddjango.wsgi:application
      aws:elasticbeanstalk:environment:proxy:staticfiles:
        /static: static
    

    【讨论】:

    • 现在:ModuleNotFoundError:没有名为“应用程序”的模块
    • 很多事情都可能引发这个错误,但它可能是您的设置文件没有像这里stackoverflow.com/questions/70332515/… 那样设置为生产,或者您可能压缩文件错误,您应该压缩文件而不是您的此处所说的文件夹docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 或者它可能是python版本之间的差异stackoverflow.com/questions/62479386/…
    • 我用一个完全空的 django 项目进行了测试。 2 次我通过命令提示,启动所有项目并推动 AWS 502。之后我通过 aws 控制台进行压缩和上传,每次结果都是相同的 502。感谢您的良好输入,我会脸颊设置。 py 文件以查看其中发生的情况,这可能是不是部署设置的问题。
    猜你喜欢
    • 2017-12-09
    • 2021-06-22
    • 2022-07-01
    • 2016-07-01
    • 2022-01-12
    • 2021-09-16
    • 2019-09-25
    • 2015-05-04
    • 2021-10-02
    相关资源
    最近更新 更多