繁体   English   中英

姜戈; AWS Elastic Beanstalk 错误:您的 WSGIPath 引用了一个不存在的文件

[英]Django; AWS Elastic Beanstalk ERROR: Your WSGIPath refers to a file that does not exist

我正在使用本教程: 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?

[解决方案]

1 eb 配置

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

就是这样

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

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

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

如果您看到以下错误:

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 将更新您的 env 中的相应设置。

如果您在文件中搜索术语“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方法更改设置的优点是您可以为每个 env 指定不同的设置。

选项 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来更新这些设置。

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

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

哪里可能有问题:创建 .zip 文件

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

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

正确方法:选择所有文件

正确的方式

错误的方法:选择项目文件夹

错误的方式


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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM