Django的; AWS Elastic Beanstalk错误:您的WSGIPath指的是不存在的文件

时间:2016-07-29 03:06:45

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

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

6 个答案:

答案 0 :(得分:8)

<强> [解决]

1 eb config

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

就是这样

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

如果看到以下错误:

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

请注意以下几点:

    EB(平台)中的
  1. 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将自动更新环境配置。

使用$ 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以更新这些设置。

答案 4 :(得分:1)

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

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

可能存在问题:创建.zip文件

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

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

正确的方法:选择所有文件

Right way

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

wrong way


这也是您在上传之前对django项目所做的唯一更改

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

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

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

答案 5 :(得分:0)

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