我已阅读您提到的 realpython 博客文章。我还建议您参考 AWS 教程。它是为部署一个简单的 Django 项目而编写的,可以在以下位置找到它:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html#python-django-configure-for-eb
我发现解决问题很有用,并且在修复您发现的错误方面学到了很多东西。当然,修复与我自己的教程实现有关,我一步一步地遵循。我已阅读其他与此问题相关的帖子,但据我所知,这些帖子中并未提供此处所述的解决方案。
以下是本教程的缩写版本,为此处制作的 cmets 提供了一些背景信息。此缩略版本在创建/激活虚拟环境之后但在其激活之前开始。
$ 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
这为我解决了错误。