Naveen Naveen - 4 months ago 58
Python Question

WSGIPath Error while Deploying Django App using AWS Elasticbeanstalk

I am trying to deploy my Django Project on AWS using Elastic Beanstalks. I have tried multiple value changes for WSGIPath.
But Everytime, I am getting the same Error:

while running 'eb create' from ubuntu terminal:

Error Logs (from Eb logs):

-------------------------------------
/var/log/httpd/error_log
-------------------------------------
mod_wsgi (pid=3005): Target WSGI script '/opt/python/current/app/myapp/wsgi.py' cannot be loaded as Python module.
mod_wsgi (pid=3005): Exception occurred processing WSGI script '/opt/python/current/app/myapp/wsgi.py'.
Traceback (most recent call last):
File "/opt/python/current/app/myapp/wsgi.py", line 24, in <module>
application = get_wsgi_application()
File "/opt/python/run/venv/lib/python2.7/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
django.setup()
File "/opt/python/run/venv/lib/python2.7/site-packages/django/__init__.py", line 17, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/opt/python/run/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 55, in __getattr__
self._setup(name)
File "/opt/python/run/venv/lib/python2.7/site-packages/django/conf/__init__.py", line 43, in _setup


Can someone please explain how this path is picked up and how this can be corrected ?

My Project Structure:

.
├── .ebextensions
│   ├── myapp.config
├── .elasticbeanstalk
│   ├── config.yml
├── db.sqlite3
├── manage.py
├── media
├── abc
│   ├── admin.py
│   ├── apps.py
│   ├── constants.py
│   ├── __init__.py
│   │   └── __init__.py
│   ├── models.py
│   ├── test1_form.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── requirements.txt
├── static
├── templates
└── myapp
├── constants.py
├── test1_form.py
├── __init__.py
├── registration_form.py
├── settings.py
├── urls.py
├── views.py
└── wsgi.py


myapp.config File:

option_settings:
"aws:elasticbeanstalk:container:python":
WSGIPath: "myapp/wsgi.py"


config.yml file

branch-defaults:
master:
environment: abc-dev
group_suffix: null
global:
application_name: abc
default_ec2_keyname: abc_eb_key
default_platform: Python 2.7
default_region: us-east-1
profile: eb-cli
sc: git


settings.py File:

WSGI_APPLICATION = 'myapp.wsgi.application'


myapp/wsgi.py file:

import os, sys, inspect

from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")

application = get_wsgi_application()

Answer

Updated myapp.config File Which worked:

option_settings:
  "aws:elasticbeanstalk:container:python": 
    WSGIPath: "myapp/wsgi.py"
  "aws:elasticbeanstalk:container:python:staticfiles":
    "/static/": "static/"