Kevin
Kevin

Reputation: 11

Issues serving static files with nginx (Django)

I'm a bit new to this but I am trying to deploy a website I build using Django to DigitalOcean using nginx/gunicorn.

My nginx file looks as so:

server {
  listen 80;
  server_name xxx.xxx.xxx.xx;

  location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /static/ {
    alias ~/dev/WebPortfolio/static/;
  }
}

And my settings.py file looks as so:

STATIC_ROOT = '~/dev/WebPortfolio/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = ()

Every time I run python managy.py collect static the errors look as so:

You have requested to collect static files at the destination
location as specified in your settings:

    /root/dev/WebPortfolio/~/dev/WebPortfolio/static

Looking at the nginx error log I see (cut out the repetitive stuff):

2015/10/08 15:12:42 [error] 23072#0: *19 open() "/usr/share/nginx/~/dev/WebPortfolio/static/http:/cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.e                                                                                                                                                                  asing.min.js" failed (2: No such file or directory), client: xxxxxxxxxxxxxx, server: xxxxxxxxxxxxxx, request: "GET /static/http%3A//cdnjs.cloudflare.com/aj                                                                                                                                                                  ax/libs/jquery-easing/1.3/jquery.easing.min.js HTTP/1.1", host: "XXXXXXXX.com", referrer: "http://XXXXXXXX.com/"

2015/10/08 15:14:28 [error] 23072#0: *24 connect() failed (111: Connection refused) while connecting to upstream, client: xxxxxxxx, server: 104.236.174.46, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "xxxxxxxx.com"

1) I'm not entirely sure why my destination for static files is '/root/dev/WebPortfolio/~/dev/WebPortfolio/static'

Upvotes: 1

Views: 229

Answers (1)

Daniel Roseman
Daniel Roseman

Reputation: 599956

Because you've used '~' in a path. That's a shell thing, not a general path thing, and unless you tell Python specifically, it won't know what to do with it. Use a full absolute path in both Django settings and nginx.

Upvotes: 2

Related Questions