AWS Beanstalk Django / Python 运行本地问题

Posted

技术标签:

【中文标题】AWS Beanstalk Django / Python 运行本地问题【英文标题】:AWS Beanstalk Django / Python Running Local Issue 【发布时间】:2013-12-03 10:13:24 【问题描述】:

我已经完成了 Amazon 提供的“将 Django 应用程序部署到 AWS Elastic Beanstalk”教程,但我尝试在本地运行该项目,但遇到 KeyValue 错误 strong> 我一直无法找到解决方案。

运行命令时: $ ./manage.py help

我得到这个错误返回:

File "/Users/dave/Sites/djangodev/djangodev/settings.py", line 17, in <module>
    'NAME': os.environ['RDS_DB_NAME'],
File "/Users/dave/.virtualenvs/djangodev/bin/../lib/python2.7/UserDict.py", line 23, in __getitem__
    raise KeyError(key)
KeyError: 'RDS_DB_NAME'`

我实际上是在尝试运行$ ./manage.py runserver,但这会返回运行服务器不存在错误。这是因为我的 settings.py 文件中有错误。

settings.py

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.mysql',
        'NAME': os.environ['RDS_DB_NAME'],
        'USER': os.environ['RDS_USERNAME'],
        'PASSWORD': os.environ['RDS_PASSWORD'],
        'HOST': os.environ['RDS_HOSTNAME'],
        'PORT': os.environ['RDS_PORT'],
    

这在 AWS 上运行良好。本地是没有的。而且我并不感到惊讶,因为 RDS_DB_NAME 不在我的本地 os.environ 字典中。

还有一个 *** 问题也没有提供解决方案。 Elastic Beanstalk not creating RDS Parameters

我让它在 AWS 上运行,它只是让一个本地实例运行,这很困难。

【问题讨论】:

【参考方案1】:

我花了很多时间挖掘,但我找到了解决方案。您需要本地回退到不同的数据库。

在您的 settings.py 文件中,将 DATABASE 变量替换为:

DATABASES = 

try:
    from local_settings import *
except ImportError, e:
    DATABASES = 
        'default': 
            'ENGINE': 'django.db.backends.mysql',
            'NAME': os.environ['RDS_DB_NAME'],
            'USER': os.environ['RDS_USERNAME'],
            'PASSWORD': os.environ['
            'HOST': os.environ['RDS_HOSTNAME'],
            'PORT': os.environ['RDS_PORT'],
        
    

现在在您的 settings.py 所在目录中创建一个 local_settings.py 并输入以下代码:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'db.djangodb',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    


MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
TEMPLATE_DIRS = ()

现在将您的 local_settings.py 文件添加到您的 .gitignore 文件中。

运行$ python manage.py syncdb,现在你可以在本地运行django服务器了。

其中大部分是从我发现的这篇博文中复制的意大利面: http://grigory.ca/2012/09/getting-started-with-django-on-aws-elastic-beanstalk/

【讨论】:

以上是关于AWS Beanstalk Django / Python 运行本地问题的主要内容,如果未能解决你的问题,请参考以下文章

在 aws elastic beanstalk 中部署 django 应用程序时出错

Elastic Beanstalk Aws Django 静态和媒体文件

Django AWS RDS 环境变量未在 Elastic Beanstalk 中设置

AWS Elastic Beanstalk Python Django S3 Access Denied 无法上传/读取文件

AWS Elastic Beanstalk 上禁止使用 Django 403

如何使 django 项目与 AWS Beanstalk 兼容?