AWS Beanstalk Django / Python运行本地问题

时间:2013-11-19 18:01:13

标签: python django amazon-web-services amazon-ec2 elastic-beanstalk

我已经跟进了亚马逊提供的“将Django应用程序部署到AWS Elastic Beanstalk ”教程,但我尝试在本地运行该项目,并且我收到 KeyValue错误我一直无法找到解决方案。

运行命令时: $ ./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但是返回一个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字典中。

还有另一个stackoverflow问题尚未提供解决方案。 Elastic Beanstalk not creating RDS Parameters

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

1 个答案:

答案 0 :(得分:0)

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

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/