【问题标题】:AWS Beanstalk Django / Python Running Local IssueAWS Beanstalk Django / Python 运行本地问题
【发布时间】: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 字典中。

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

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

【问题讨论】:

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


    【解决方案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/

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 1970-01-01
      • 2012-10-13
      • 2020-11-10
      • 2018-11-07
      • 2017-12-30
      • 2020-11-15
      • 2015-04-10
      • 1970-01-01
      相关资源
      最近更新 更多