【问题标题】:Django; AWS Elastic Beanstalk ERROR: Your WSGIPath refers to a file that does not exist姜戈; AWS Elastic Beanstalk 错误:您的 WSGIPath 引用的文件不存在
【发布时间】:2016-12-03 15:29:34
【问题描述】:

我正在使用本教程: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html

我在根目录下创建.ebextensions目录,并将这个django.config文件放入其中:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: mysite/wsgi.py

我也尝试将路径设置为mysite/mysite/wsgi.py,因为我在某处看到了该路径,但它对我没有帮助。

我所看到的每个地方都显示了一个不同的.config 文件,具有不同的排列,我不知道从这里去哪里。如何在 Elastic Beanstalk 中正确设置我的 WSGIPath?

【问题讨论】:

  • 你有这个文件 .elasticbeanstalk/optionsettings 吗?

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


【解决方案1】:

[解决方案]

1 eb 配置

2 将那里的 WSGIPath 从 application.py 更改为 mysite/wsgi.py

就是这样

【讨论】:

  • 那么 django.config 没有做任何事情吗?
  • 三年后,这仍然在帮助人们。真正需要在 AWS 教程中弄清楚!
  • 答案中的 eb 配置是指 django.config 文件吗?
  • 这条评论很有帮助! - 注意,它特定于使用 python 3.6(现在已弃用,不幸的是仍然在链接的教程中使用)。使用 python 3.8 和 Linux 2 (platform history) 时不应出现此问题
【解决方案2】:

我遇到了类似的问题,当我将 .elasticbeanstalk 放在与 .ebextensions 相同的目录中时,它似乎解决了,而不是将它作为子目录。然后我必须运行eb config 来修复它实际上正在拾取的 wsgi 文件,现在我有一个正在运行的应用程序。

【讨论】:

    【解决方案3】:

    确保 .ebextensions 未被忽略。 EB 查找 .ignore 文件(默认为 .ebignore ,如果它不存在但 .gitignore 存在,它将使用它)并仅部署未被忽略的文件。我的 local_settings 也有类似的问题。

    https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html#eb-cli3-ebignore

    【讨论】:

      【解决方案4】:

      我没有使用控制台,而是使用 GUI。

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

      问题出在哪里:创建 .zip 文件

      全选:项目的文件(不是项目文件夹)

      注意:weworkout 是我的 django 项目(由 django-admin startproject 创建 我们锻炼)

      正确方法:选择所有文件

      错误方式:选择项目文件夹


      这也是您在上传之前必须对 django 项目进行的唯一更改

      weworkout/.ebextensions/django.config 文件包含

      option_settings:
        aws:elasticbeanstalk:container:python:
          WSGIPath: weworkout/wsgi.py
      

      注意:.ebextensions 与 manage.py 位于同一文件夹中

      【讨论】:

        【解决方案5】:

        如果您看到以下错误:

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

        注意以下几点:

        1. EB(平台)中的 EC2(服务器)实例运行 Apache。
        2. Apache 根据我们的 WSGIPATH 查找 Python 应用程序。
        3. 默认情况下,EB 假定 WSGI 文件名为 application.py。

        有两种方法可以解决这个问题。

        选项 1:使用特定于环境的配置设置

        运行:$ eb config

        找到以下配置文件“.elasticbeanstalk/src-test.env.yml”。 这个文件在本地实际上并不存在; EB 将其拉出,以便您对其进行编辑。 如果您在此伪文件中保存更改,EB 将更新您的环境中的相应设置。

        如果您在文件中搜索术语“WSGI”,您应该会找到类似以下的配置部分:

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

        更新 WSGIPath:

         aws:elasticbeanstalk:container:python:
           NumProcesses: '1'
           NumThreads: '15'
           StaticFiles: /static/=static/
           WSGIPath: src/src/wsgi.py #src/src is an example. Do not just c&p.
        

        如果您保存文件,EB 将自动更新 env 配置。

        使用$ eb config 方法更改设置的优点是您可以为每个环境指定不同的设置。

        选项 2:使用全局配置设置

        要使用此选项,请创建一个名为 /.ebextensions/02_python.config 的新文件:

        option_settings:
          "aws:elasticbeanstalk:application:environment":
            DJANGO_SETTINGS_MODULE: “src.settings" #src is an example.
            "PYTHONPATH": "/opt/python/current/app/src:$PYTHONPATH" #src is an example.
          "aws:elasticbeanstalk:container:python":
            WSGIPath: src/src/wsgi.py #src is an example.
            NumProcesses: 3
            NumThreads: 20
          "aws:elasticbeanstalk:container:python:staticfiles":
            "/static/": "www/static/"
        

        发生了什么?

        • DJANGO_SETTINGS_MODULE: "src.settings" - 添加设置模块的路径。

        • "PYTHONPATH": "/opt/python/current/app/src:$PYTHONPATH" - 更新我们的 PYTHONPATH,以便 Python 可以在我们的应用程序中找到模块。(请注意,必须使用完整路径。)

        • WSGIPath: src/src/wsgi.py 设置我们的 WSGI 路径。

        • NumProcesses:3 和 NumThreads:20 - 更新用于运行 WSGI 应用程序的进程和线程数。

        • "/static/": "www/static/" 设置我们的静态文件路径。

        运行 $ git commit(如有必要)和 $ eb deploy 以更新这些设置。

        【讨论】:

          【解决方案6】:

          检查您的 Django.config 文件是否以正确的扩展名保存。我遇到了同样的问题,问题是文件被保存为 TXT 文件而不是配置文件。

          【讨论】:

            猜你喜欢
            • 2016-08-22
            • 2020-06-22
            • 2020-05-04
            • 2019-03-06
            • 2015-09-19
            • 2012-10-17
            • 2013-03-23
            • 2015-06-06
            相关资源
            最近更新 更多