[英]Django AWS Elastic Beanstalk WSGIPath refers to a file that does not exist
[英]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 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.