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 manually. In debugging I even checked in a pushed the static files in the static directory to try to simplify things. The mapping seems very strange in that it doesn't seem to follow the STATIC_ROOT.
My relevant configs: settings.py
PROJECT_ROOT = os.path.abspath(os.path.dirname(__name__))
STATIC_ROOT = os.path.join(PROJECT_ROOT,'static/')
STATIC_URL = '/static/'
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
urls.py
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
LOGS:
[Wed Dec 26 15:39:04 2012] [error] [client 10.29.203.20] File does not exist: /opt/python/current/app/css, referer 10.29.203.20 - -
[26/Dec/2012:15:39:04 +0000] "GET /static/css/styles.css HTTP/1.1" 404 329 "http://" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11"
For me, the problem was having
Instead, I changed it to
Also, my .conf file has
To support multiple apps and do this you need to run collectstatic
Settings.py
Make sure you have a folder called "static" in your root
In your ebs config file eg. (02_python.config or similar)
Then before you upload to ebs run
python manage.py collectstatic
This collects all the static files in one folder which you have already pointed to in your config.
Then you can run
eb deploy
like normalOpptionally if you don't want to commit the static files to your source control twice and want the server to do this for you add this to your config
So your file should look something like this:
This will run collect static for you when you run
eb deploy
Have you found the solution yet? just to let you know. I came across the same problem today, and I realized that I forgot this option in the .ebextensions/.config file. make sure you have it too
I did the following to fix static path in beanstalk
Just so you guys know, namespace for static files in recent versions of EBS, changed to
aws:elasticbeanstalk:environment:proxy:staticfiles
, like this:I struggled for quite a while on that, thinking that the issue was with :
But actually my issue was with the other commands in the xxx.config file. basicaly, make sure the other lines are correct.
If you want to know my personal setup, I used the settings file shown above and I added the static directory in the root of my project. For the settings.py file here is what I had for the static_url and root :
Hope it helps !