将Django部署到AWS-WSGIPath引用不存在的文件

2024-09-21 00:55:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在努力让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

我做错什么了?


Tags: todjangohttpscomawsappstatic教程
3条回答

我读过你提到的realpython博客。我也会让你参考AWS教程。它是为部署bare bones Django项目而编写的,可以在以下位置找到:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html#python-django-configure-for-eb

我发现这是有用的工作,并学习了很多修复错误,你已经确定。当然,修复程序与我自己的教程实现相关,我一步一步地遵循这个教程。我已经读过其他的文章,谈到这个问题,但这里所说的解决办法并没有在这些文章中提供,据我所知。

下面是本教程的一个缩略版本,为这里的注释提供一些上下文。此缩写版本在创建/激活虚拟环境之后,但在其激活之前开始。

$ 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"

这是山药,压痕很重要。至少1个空格缩进。在这种情况下,每个级别有两个缩进空格。WSGIPath设置正确。务必确保目录结构与教程中所示的结构相同。

在本教程中,现在发出“eb create”命令,如您所述,将出现以下情况:

错误:WSGIPath引用的文件不存在

发现的问题存在于config.yml中,其中存在应用程序名称的密钥对:

global:
  application_name: eb_django_app

改为:

global:
  application_name: django_eb

这为我解决了错误。

遇到此错误时,我发现一件事:如果您的存储库是git存储库,则必须跟踪并提交.ebextensions文件夹,否则在eb deploy上无法正确获取它。

可能的解决方案错误:WSGIPath引用的文件不存在

遵循本教程之后: https://realpython.com/deploying-a-django-app-to-aws-elastic-beanstalk/

当我把我的保护上传到aws时出错了。 我忘记的步骤是激活我的虚拟env,然后从那里输入命令'eb deploy'

注意:此错误也可能在不同的情况下发生

相关问题 更多 >

    热门问题