Django: collectstatic works but doesnt find the correct static folder

1.8k views Asked by At

I'm trying to run my django site in deployment mode with DEBUG=False. In fact when i do a python manage.py collectstatic it will collect all static files into my folder /mysite/static. But when i load my homepage my static files wont load Not Found occurs.

My Django version is 1.10.4 Here is my STATIC ROOT definition and urls folder:

In settings.py:

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, "static") (i tried also just only 'static')

MEDIA_ROOT = BASE_DIR + '/mysite/media'

MEDIA_URL = '/media/'

my urls.py:

urlpatterns = [   
    url(r'', include('mysite.urls')),
]

urlpatterns += staticfiles_urlpatterns()

I notice that is not assuming my collectstatic folder instead is considering the static file in app folder.

doing python manage.py findstatic mysite/js/javascript.js

Found 'app/js/javascript.js' here:
/home/user/mysite/app/static/app/js/javascript.js

Well, once that DEBUG=False it should give something like:

 /home/user/mysite/static/app/js/javascript.js
2

There are 2 answers

0
Rahul Reddy Vemireddy On

At production server, your nginx or apache should serve the static files. When Debug = False, django stops serving the static files. Please share your nginx settings, I can help you out there...

For more info, check this link

0
dsaves On

Depending on your production setup, you may have to set up your Apache or nginx config file to point to static content. For example, in nginx, you can add a "location /static/ {...}" entry, eg. something like this:

server {
    server_name mysite.com;
    listen 443;
    listen [::]:443;

    ssl on;
    ssl_certificate /etc/nginx/ssl/cert.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key;
    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        allow all;
        alias /your/base/dir/here/.../mysite/static/;
    }
    location / {
        ...
    }
}