Question:
I have read these tutorials : https://realpython.com/blog/python/deploying-a-django-app-to-aws-elastic-beanstalk/ and http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html
I use Django 1.8.2 and it seems that the amazon’s doc is a little bit outdated (they still used django-admin.py instead of django-admin), and some parts of it are not working (when stuff does not work, i fallback to the realpython link one).
So, I got it all working except my admin page does not load the static files. So, the css file is not loaded.
This is my settings.py :
1 2 3 |
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static/') |
i have also tried to use :
1 2 3 |
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) STATIC_ROOT = os.path.join(BASE_DIR, 'static'). |
but it still does not work.
this is my eb config file :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
container_commands: 01_migrate: command: "source /opt/python/run/venv/bin/activate && python papp/manage.py migrate --noinput" leader_only: true 02_createsuperuser: command: "source /opt/python/run/venv/bin/activate && python papp/manage.py createsu" leader_only: true 03_collectstatic: command: "source /opt/python/run/venv/bin/activate && python papp/manage.py collectstatic --noinput" option_settings: "aws:elasticbeanstalk:application:environment": DJANGO_SETTINGS_MODULE: "papp.settings" PYTHONPATH: "/opt/python/current/app/papp:$PYTHONPATH" "aws:elasticbeanstalk:container:python": WSGIPath: "papp/papp/wsgi.py" "aws:elasticbeanstalk:container:python:staticfiles": "/static/": "static/" |
I used eb deploy command after making the changes.
Is there extra steps that I need to do ? I have read in here : Default Django 1.5 admin css not working that i need to change alias, but it is for apache.
I also read from django doc files such as https://docs.djangoproject.com/en/1.8/howto/static-files/ but im not sure of what to put in the STATIC_ROOT for AWS
any help is much appreciated. Thanks
Answer:
It turns out “aws:elasticbeanstalk:container:python:staticfiles” maps files in your directory on your EC2 instance (/opt/python/current/app/static/) to /static/
setting STATIC_ROOT in settings.py to os.path.join(BASE_DIR, ‘..’,’static’) fixed the issue