[英]AWS Beanstalk Django / Python Running Local Issue
我已經完成了Amazon提供的“ 將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不創建RDS參數
我讓它在AWS上運行,這只是很難運行一個本地實例。
經過大量的挖掘,但我找到了解決方案。 您需要本地回退到其他數據庫。
在您的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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.