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 无法上传/读取文件