Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services WSGIPath引用的文件不存在_Amazon Web Services_Flask_Amazon Elastic Beanstalk - Fatal编程技术网

Amazon web services WSGIPath引用的文件不存在

Amazon web services WSGIPath引用的文件不存在,amazon-web-services,flask,amazon-elastic-beanstalk,Amazon Web Services,Flask,Amazon Elastic Beanstalk,我正在尝试将我的Flask应用程序上载到AWS,但在上载时收到一个错误: WSGIPath引用的文件不存在 在线挖掘之后,我发现在.ebextensions文件夹中,我应该指定路径。没有.ebextensions文件夹,因此我创建了一个,并将以下代码添加到名为settings.config的文件中: option_settings: "aws:elasticbeanstalk:container:python": WSGIPath: project/application.py W

我正在尝试将我的Flask应用程序上载到AWS,但在上载时收到一个错误:

WSGIPath引用的文件不存在

在线挖掘之后,我发现在.ebextensions文件夹中,我应该指定路径。没有.ebextensions文件夹,因此我创建了一个,并将以下代码添加到名为settings.config的文件中:

option_settings:
  "aws:elasticbeanstalk:container:python":
    WSGIPath: project/application.py

WSGIPath是application.py文件的正确路径,因此我不确定是什么导致了此错误。我是否正确地改变了WSGIPath,是否有更好的方法,或者是否存在导致这种情况发生的其他问题?谢谢。

AWS上部署的Flask可能会出现很多配置问题。我遇到了与您类似的问题,因此我至少可以向您展示我是如何解决WSGI错误的

首先,显然您可以在没有.ebextensions文件夹的情况下完成这项工作(请参阅本文,并查看DaveW12的答案。但是,请注意,尽管这项工作可行,但根据下面的一些评论,我不能完全确定DaveW12关于.ebextensions的结论是否正确)。相反,(在终端中),我导航到与.elasticbeanstalk目录相同级别的项目,并使用命令
eb config
。这将打开一个选项列表,您可以设置这些选项来配置beanstalk应用程序。继续浏览这些选项,直到找到WSGI路径。我注意到您的设置为
project/application.py
,但是,这不应该包括文件夹引用,而应该是
application.py
。下面是它在终端Mac上的外观(WSGI路径接近底部)

请注意,一旦获得该集合,EB可能会重新部署。那很好。随它去吧

一旦设置完成,请进入application.py文件,确保调用应用程序
应用程序
。例如,我的如下所示:

from flask import Flask
from flask import render_template
application = Flask(__name__)

@application.route('/')
@application.route('/index')
def index():
    return render_template('index.html',
                           title='Home')

这消除了WSGI路径错误——尽管我仍然必须解决以下一些其他问题:-),但这是一组不同的问题

我也有同样的信息,但原因很愚蠢

显然,当我将repo克隆到我的Windows PC上,然后将更改推回时,Windows将“.ebextensions”文件夹更改为“ebextensions”(删除前导“.”)


因此,当我在主repo中将文件夹重新命名为“.ebextensions”时,一切又开始正常工作。

对我来说,问题是我拼错了一个文件名:

我写道:
.ebextensions/django.conf

需要时:
.ebextensions/django.config


今天,这花了我大约3个小时的时间。问题在于AWS错误具有误导性,因为它所指的“WSGIPath”不是上面的文件,而是一些不可见的默认值。

如果这里有人通过AWS控制台(GUI)执行此操作,请修改配置并将您的脚本名放入WSGIPath,如下所示。

如果你是新人,我会给你额外的提示

  • 您还应该匹配脚本名称和烧瓶对象
  • 常见错误:压缩源代码时,需要 选择文件并压缩,而不是文件夹。(确保你有 .py(在zip的根目录中)

在我的例子中,尝试许多解决方案并没有解决问题,而是将
WSGIPath

option_settings:
  "aws:elasticbeanstalk:container:python":
    WSGIPath: project_name/application_name.py

工作得很有魅力。以下是文件结构:

├── manage.py
├── mysite ***
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py ***
├── myvenv
│   └── ...
└── requirements.txt

我有一个类似的问题,使用
eb config
我发现WSGIPath不在我的配置数据中——事实上,我没有从aws:elasticbeanstalk:container:python中得到任何东西。我在.config文件中设置了它,但它似乎被仪表板中保存的配置覆盖了-仪表板在首页上显示
WSGIPath:application.py
,但不允许我在任何地方编辑它。看起来我只需要创建一个application.py!我们有一个问题,psycopg2没有安装。将这些行添加到我们的.ebextensions/01-app.config文件中修复了它:packages:yum:postgresql93-devel:[]我不同意Davew12关于ebconfig不再相关的回答-请参见我的评论。你们不经意间散播了misinformation@HaveAGuess谢谢我没有时间对此做很多研究,所以我只是更新了我的答案,说我发布的内容确实有效,但并不是说ebextensions已经过时。这是我现在唯一的时间,真奇怪。为什么
eb config
显示的值与
.ebextensions
中配置文件中设置的值不同?我真的觉得这个错误也有误导性,我在网上找到的大多数答案都试过了,但都没有成功。这对我来说很有效,我欠你一杯啤酒,应该可以解决这个问题,但每次在elastic beanstalk上创建新应用程序时,都必须设置它,因为此解决方案不可移植。问题似乎在于elastic beanstalk由于某些原因无法获取ebextensions配置文件,这取决于您使用的平台。如果您使用AmazonLinux1,那么nginx必须使用斜杠语法;如果您使用AmazonLinux2,那么gunicorn必须使用点语法
option_settings:
      "aws:elasticbeanstalk:container:python":
        WSGIPath: project_name.wsgi
├── manage.py
├── mysite ***
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py ***
├── myvenv
│   └── ...
└── requirements.txt