AWS Elastic Beanstalk 上的 Django 1.7 - 应用程序未运行,仅看到“索引 /”

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk 上的 Django 1.7 - 应用程序未运行,仅看到“索引 /”【英文标题】:Django 1.7 on AWS Elastic Beanstalk - App not running, only see "Index Of /" 【发布时间】:2015-03-05 13:39:24 【问题描述】:

我正在尝试将此存储库部署到 Elastic Beanstalk:https://github.com/jordanmessina/test_beanstalk/tree/5e9a919d991adf22bce1a9b8f6c1515e83b1babb,并使用以下配置:64bit Amazon Linux 2014.09 v1.0.9 running Python 2.7

我在部署时收到以下错误:

ERROR: [Instance: i-2eb19dc2 Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: [CMD-AppDeploy/AppDeployStage0/EbExtensionPostBuild] command failed with error code 1: Error occurred during build: Command 01_syncdb failed.

部署后进入网页,看到的都是:Index of /

我的配置文件有问题吗?

更新

我做了一些更改,并设法让应用程序运行并 500ing(进度)。

我已经浏览了代码部署到的实例。我已将问题缩小到设置的mod_wsgi pythonpath。配置如下:

LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome /opt/python/run/baselinenv
WSGISocketPrefix run/wsgi
WSGIRestrictEmbedded On

<VirtualHost *:80>

Alias /static/ /opt/python/current/app/static/
<Directory /opt/python/current/app/static/>
Order allow,deny
Allow from all
</Directory>


WSGIScriptAlias / /opt/python/current/app/webapp/beanstalk/wsgi.py


<Directory /opt/python/current/app/>
  Require all granted
</Directory>

WSGIDaemonProcess wsgi processes=1 threads=15 display-name=%GROUP \
  python-path=/opt/python/current/app:/opt/python/run/venv/lib/python2.7/site-packages user=wsgi group=wsgi \
  home=/opt/python/current/app
WSGIProcessGroup wsgi
</VirtualHost>

我还找到了 httpd 进程的日志(标准 /var/log/httpd/error_log 以供将来参考)并跟踪它们以查看问题所在。问题是 beanstalk.settings 的 ImportError (因为它不在路径上)。

现在我正在尝试一种理智的方法来保持我的应用程序结构(包含我的 django 应用程序的根目录中的 webapp 目录)并更新 mod_wsgi 的 python 路径,所以这个东西可以工作......我很沮丧Elastic Beanstalk 试图强加给我的固执己见的应用程序结构。任何建议都会很棒!

【问题讨论】:

【参考方案1】:

当您尝试时,您不能在弹性 beantalk 上本地拥有数据库。 EB 只是作为一个应用程序容器,你所拥有的将尝试在系统上设置 SQLite,而 beanstalk 不会让你这样做。

您需要将 Django 配置为指向 beanstalk 之外的一些数据库,该实例上没有数据库,并且您的 Django 配置似乎没有配置任何数据库,因为您似乎只是在尝试使用包含的SQLite DB,我想他们不会让你在 beanstalk 上安装它,所以如果可能的话,为什么不尝试配置另一个 DB 或根本不使用 DB。

我会启动一个小型 RDS 实例并配置我的 Django 应用程序以配合它。这应该允许您同步数据库并开始使用。这也可能是 SQLite 不在系统上的问题,因此如果可能的话,您必须配置 EB 来安装它。

【讨论】:

我使用的是单个实例,它会让你创建它。我不在乎坚持下去,我只希望应用程序正常工作。我已将其范围缩小到用于 mod_wsgi 配置的 pythonpath。现在更新问题。 @JordanMessina :嘿,我面临同样的问题..但我在这里太菜鸟了,无法弄清楚我必须对 mod_wsgi 进行哪些更改。能否请您帮忙...如何更改 aws 上的 python 路径? 你可能想看看这里...docs.aws.amazon.com/elasticbeanstalk/latest/dg/…

以上是关于AWS Elastic Beanstalk 上的 Django 1.7 - 应用程序未运行,仅看到“索引 /”的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?

反应:AWS Elastic Beanstalk 上的 502 错误网关

AWS Elastic Beanstalk 上的 Wordpress

AWS Elastic Beanstalk 上的 Spring Boot 并记录到文件

AWS Elastic Beanstalk 上的 Django manage.py

如何获取命令以从 Elastic Beanstalk 上的 Dockerfile.aws.json 运行?