Django Elastic Beanstalk Deploy 显示 404

Posted

技术标签:

【中文标题】Django Elastic Beanstalk Deploy 显示 404【英文标题】:Django Elastic Beanstalk Deploy showing 404 【发布时间】:2014-01-21 12:35:59 【问题描述】:

我正在尝试将我的第一个 Django 应用程序部署到 Elastic Beanstalk。 Beanstalk 通过命令行工具成功创建,我通过 ZIP 从 Mercurial 上传,这似乎工作得很好。但是我在尝试访问它时遇到了 404。

Elastic Beanstalk HTTP 错误(日志很大,我可以解析更多,但我只看到这个错误)

[Fri Jan 03 18:08:26 2014] [error] [client 127.0.0.1] Target WSGI script not found or unable to stat: /opt/python/current/app/application.py

Django 应用程序的 WSGI 设置

wsgi.py

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "company.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

settings.py

WSGI_APPLICATION = 'company.wsgi.application'

这在本地运行良好,我确定我只是不理解我应该理解的东西。

请帮忙!

文件夹结构:

 /opt/python/current/app/

  - company
     - static
     - templates
     - wsgi.py
     - settings.py
     - __init__.py
     - urls.py

  - webapp
     - templates
  - manage.py
  - requirements.txt

【问题讨论】:

你能告诉我们你的项目的层次结构(文件夹,...)。似乎 WSGI 脚本不在您在设置中提供的路径... 上面添加的,我没有包含所有文件,但那些应该是需要查看的 还要查看是否是我的命令行的配置问题,我通过控制台重新部署并收到相同的错误。 对不起,我的意思是你项目的绝对路径 :-) 在这种情况下,/opt/python/current/app/application.py 是什么? 在 EC2 服务器 /opt/python/current/app/[EC2ApplicationName] 作为文件夹存在,但没有 application.py 文件 【参考方案1】:

AWS Elastic Beanstalk 的默认配置将 WSGIPath 设置为 application.py,您需要将包含映射的文件重命名为 application.py 或将环境配置为指向您的映射脚本。

详细信息可以在 AWS Elastic Beanstalk Python 容器选项中找到:Option Values

您可以使用管理控制台进行设置

或者.ebextensionsoption_settings

注意:应该是相对路径。

【讨论】:

.ebextensions option_settings 让我超过了 404,现在我得到了 500 :( ImproperlyConfigured:请求设置 MIDDLEWARE_CLASSES,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。 将 DJANGO_SETTINGS_MODULE 添加到 .ebextensions,默认为空。 它已经作为DJANGO_SETTINGS_MODULE: "company.settings"存在了 在EB管理控制台中,点击齿轮编辑软件配置后,没有WSGIPATH可编辑,添加到静态文件下就可以了:不太直观。

以上是关于Django Elastic Beanstalk Deploy 显示 404的主要内容,如果未能解决你的问题,请参考以下文章

Django 频道 + Elastic Beanstalk

授权凭证剥离 --- django, elastic beanstalk, oauth

Elastic Beanstalk 上的 Django + MySQL - 查询 MySQL 时出错

AWS Elastic Beanstalk 上禁止使用 Django 403

Elastic Beanstalk 上 Django/Celery 的权限问题

Elastic Beanstalk 上用于 Django 的 PostgreSQL