I am trying to put up a simple django app on elastic beanstalk. I thought I had the static parts of the app figured out as it works with heroku and on a server that was set up
All previous answers didn't help me This works for me.
Basically I created two steps inside .ebextensions
01_django.config
container_commands:
01_migrate:
command: "source /opt/python/current/env && source /opt/python/run/venv/bin/activate && cd /opt/python/current/app && python manage.py migrate --noinput"
leader_only: true
02_touch_superuser:
command: "source /opt/python/current/env && source /opt/python/run/venv/bin/activate && cd /opt/python/current/app && python manage.py touch_superuser"
leader_only: true
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: config/wsgi.py
NumProcesses: 2
NumThreads: 10
aws:elasticbeanstalk:application:environment:
STAGING: 1
DJANGO_SETTINGS_MODULE: config.settings.production
aws:elasticbeanstalk:container:python:staticfiles:
"/static/": "htdocs/static/"
"/media/": "htdocs/media/"
config/wsgi.py
Could be a different path in your project
02_collec_static.config
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/10_collect_static.sh":
mode: "000755"
owner: root
group: root
content: |
set -xe
source /opt/python/current/env
source /opt/python/run/venv/bin/activate
cd /opt/python/current/app && python manage.py collectstatic --noinput
echo "Statics collected...!!"
An important thing, you settings/*.py
should match with your static path that EBS serves, in my case this is my config.
...
PROJECT_PATH = dirname(dirname(dirname(__file__)))
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'htdocs/media')
STATIC_ROOT = os.path.join(PROJECT_PATH, 'htdocs/static')
...