[英]Django AWS Elastic Beanstalk WSGIPath refers to a file that does not exist
[英]Deploying Django to AWS - WSGIPath refers to a file that does not exist
我一直在努力让 Django 和 AWS 协同工作。 我正在关注这里的教程:
https://realpython.com/blog/python/deploying-a-django-app-to-aws-elastic-beanstalk/
我一直在遵循所有教程步骤,包括使用“eb option”命令来更改 WSGIPath,但我不断收到错误消息:
“错误:您的 WSGIPath 引用了一个不存在的文件。”
据我所知,我一直完全按照教程做所有事情。
我的配置文件的相关部分如下所示:
NumProcesses: '1'
NumThreads: '15'
StaticFiles: /static/=static/
WSGIPath: iotd/iotd/wsgi.py
我究竟做错了什么?
我在遇到此错误时发现的一件事是,如果您的存储库是 git 存储库,则必须跟踪和提交 .ebextensions 文件夹,否则将无法在 eb deploy 上正确提取。
我已阅读您提到的 realpython 博客文章。 我还会向您推荐 AWS 教程。 它是为部署裸机 Django 项目而编写的,可以在以下位置找到:
我发现解决这个问题很有用,并且学到了很多解决您发现的错误的方法。 当然,修复与我自己对教程的实现有关,我一步一步地遵循了它。 我已阅读其他讨论此问题的帖子,但据我所知,这些帖子中未提供此处所述的解决方案。
下面是本教程的缩写版本,为此处所做的评论提供一些上下文。 此缩写版本在创建/激活虚拟环境之后开始,但在其激活之前。
$ mkdir ed_django_app
$ . venv/Scripts/activate
(venv)[~eb_django_app]$ django-admin startproject django_eb
(venv)[~eb_django_app/django_eb]$ python manage.py migrate
(venv)[~eb_django_app/django_eb]$ python manage.py runserver
(venv)[~eb_django_app]$ pip freeze > requirements.txt
(venv)[~eb_django_app]$ deactivate
[~eb_django_app]$ eb init –region us-east-1
在“eb init”命令之后,.elasticbeanstalk 目录以及一些文件将在初始化过程中创建。 在该目录中,您将找到 config.yml 文件。 其内容是:
branch-defaults:
default:
environment: eb-django-dev
global:
application_name: eb_django_app
default_ec2_keyname: myec2keyname
default_platform: Python 2.7
default_region: us-east-1
profile: eb-cli
sc: null
本教程指导开发人员创建一个名为 .ebextensions 的目录并创建 01-eb_django.config 文件:
option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "django_eb.settings"
PYTHONPATH: "/opt/python/current/app/django_eb:$PYTHONPATH"
"aws:elasticbeanstalk:container:python":
WSGIPath: "django_eb/django_eb/wsgi.py"
这是 YAML,缩进很重要。 至少 1 个空格缩进。 在这种情况下,每一级有 2 个缩进空格。 WSGIPath 设置正确。 确保目录结构与教程中指示的相同非常重要。
在本教程中,现在发出了“eb create”命令,正如您所指出的,出现了以下情况:
错误:WSGIPath 引用了一个不存在的文件
已确定的问题存在于 config.yml 中,其中存在 application_name 的密钥对:
global:
application_name: eb_django_app
改为:
global:
application_name: django_eb
这为我解决了错误。
使用eb
:
eb config
转到aws:elasticbeanstalk:container:python:
并将 WSGIPath 从:
application.py
到
mysite/wsgi.py
“mysite”是您的应用程序名称ofcourse
可能的解决方案错误:您的 WSGIPath 引用了一个不存在的文件
遵循本教程后: https : //realpython.com/deploying-a-django-app-to-aws-elastic-beanstalk/
我在将保护上传到 aws 时遇到错误。 我忘记的步骤是激活我的虚拟环境,然后在那里输入命令“eb deploy”
注意:此错误也可能在不同情况下发生
这在 django.config 文件中,说你的应用程序名称是“yourappname”,对我有用。
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: yourappname.wsgi:application
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.