AWS Beanstalk Django / Python Menjalankan Masalah Lokal

Saya telah mengikuti tutorial "Menyebarkan Aplikasi Django ke AWS Elastic Beanstalk" yang disediakan oleh Amazon tetapi saya mencoba menjalankan proyek secara lokal dan saya mendapatkan kesalahan KeyValue yang Saya tidak dapat menemukan solusinya.

Saat menjalankan perintah: $ ./manage.py help

Saya mendapatkan kesalahan ini kembali:

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'`

Saya sebenarnya mencoba menjalankan $ ./manage.py runserver tetapi itu mengembalikan kesalahan runserver tidak ada. Itu karena ada kesalahan pada file settings.py saya.

pengaturan.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'],
    }
}

Ini berjalan dengan baik di AWS. Secara lokal tidak. Dan saya tidak terkejut karena RDS_DB_NAME tidak ada dalam kamus os.environ lokal saya.

Ada pertanyaan stackoverflow lain yang belum memberikan solusi. Elastic Beanstalk tidak membuat Parameter RDS

Saya menjalankannya di AWS, hanya menjalankan instance lokal saja yang sulit.


person digitaldavenyc    schedule 19.11.2013    source sumber


Jawaban (1)


Butuh banyak penggalian tetapi saya menemukan solusinya. Anda memerlukan fallback lokal ke database lain.

Di file settings.py Anda, ganti variabel DATABASE dengan ini:

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'],
        }
    }

Sekarang buat local_settings.py di direktori yang sama dengan settings.py Anda dan masukkan kode berikut:

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 = ()

Sekarang tambahkan file local_settings.py ke file .gitignore Anda.

Jalankan $ python manage.py syncdb dan sekarang Anda dapat menjalankan server Django secara lokal.

Sebagian besar adalah salinan pasta dari postingan blog yang saya temukan: http://grigory.ca/2012/09/getting-started-with-django-on-aws-elastic-beanstalk/

person digitaldavenyc    schedule 20.11.2013