我一直在努力让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
我做错了什么?
答案 0 :(得分:7)
我遇到此错误时发现的一件事是,如果您的存储库是git存储库,则必须跟踪并提交.ebextensions文件夹,否则将无法在eb deploy上正确选取它。
答案 1 :(得分:6)
我已阅读您提到的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创建"命令现已发出,如您所述,出现以下情况:
错误:WSGIPath指的是不存在的文件
在config.yml中存在已识别的问题,其中有application_name的密钥对:
global:
application_name: eb_django_app
它改为:
global:
application_name: django_eb
这解决了我的错误。
答案 2 :(得分:1)
可能的解决方案错误:您的WSGIPath引用的文件不存在
按照本教程操作后: https://realpython.com/deploying-a-django-app-to-aws-elastic-beanstalk/
将保护上传到AWS时出现错误。 我忘记的步骤是激活我的虚拟环境,然后从那里键入命令“ eb deploy”
注意:在不同情况下也会发生此错误
答案 3 :(得分:0)
使用eb
:
eb config
转到aws:elasticbeanstalk:container:python:
并从以下位置更改WSGIPath:
application.py
到
mysite/wsgi.py
使用“ mysite”作为课程的应用程序名称
答案 4 :(得分:0)
在 django.config 文件中,假设您的应用名称是“yourappname”, 为我工作。
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: yourappname.wsgi:application