Django nginx смотрит на статические, а не статические файлы - PullRequest
0 голосов
/ 18 октября 2019

Я не могу решить это, nginx настаивает на том, чтобы искать в «статической» папке, хотя я думаю, что я указал «staticfiles» в качестве местоположения. Тем не менее, журналы постоянно показывают работу «статично» в пути к файлу. Вот nginx.conf:

server {
    listen 80;
    server_name 10.88.58.95;

    location = /favicon.ico { access_log off; log_not_found off; }
    root /srv/pcc_django/;
    location /staticfiles/ {
    }

location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

settings.py

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')
STATIC_DIR = os.path.join(BASE_DIR, "static")

...

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

...

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    STATIC_DIR,
]

Вот что показывают журналы доступа:

10.184.52.12 - - [18/Oct/2019:12:58:58 +0000] "GET /static/css/microblog/style.css HTTP/1.1" 404 77 "http://10.88.58.95/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"
10.184.52.12 - - [18/Oct/2019:12:58:58 +0000] "GET /static/images/microblog/platform_control.png HTTP/1.1" 404 77 "http://10.88.58.95/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"
10.184.52.12 - - [18/Oct/2019:13:03:58 +0000] "GET / HTTP/1.1" 200 5916 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"
10.184.52.12 - - [18/Oct/2019:13:03:58 +0000] "GET /static/css/microblog/style.css HTTP/1.1" 404 77 "http://10.88.58.95/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"
10.184.52.12 - - [18/Oct/2019:13:03:58 +0000] "GET /static/images/microblog/platform_control.png HTTP/1.1" 404 77 "http://10.88.58.95/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"
10.184.52.12 - - [18/Oct/2019:13:03:58 +0000] "GET /static/css/microblog/style.css HTTP/1.1" 404 77 "http://10.88.58.95/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"
10.184.52.12 - - [18/Oct/2019:13:03:58 +0000] "GET /static/images/microblog/platform_control.png HTTP/1.1" 404 77 "http://10.88.58.95/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"
10.184.52.12 - - [18/Oct/2019:13:05:58 +0000] "GET / HTTP/1.1" 200 5916 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"
10.184.52.12 - - [18/Oct/2019:13:05:58 +0000] "GET /static/css/microblog/style.css HTTP/1.1" 404 77 "http://10.88.58.95/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"
10.184.52.12 - - [18/Oct/2019:13:05:58 +0000] "GET /static/images/microblog/platform_control.png HTTP/1.1" 404 77 "http://10.88.58.95/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "-"

Как мне получитьnginx, пожалуйста, посмотрите на правильную папку, она должна выглядеть следующим образом:

/srv/pcc_django/staticfiles/

в данный момент она выглядит так:

/srv/pcc_django/static/ 

, которая находится в той же папке. Если я поменяю местами имена, это сработает, поэтому я уверен, что мой файл settings.ph правильно настроен относительно DEBUG = False, который является текущей настройкой на сервере.

ОБНОВЛЕНИЕ: я только что отредактировал файл nginx.conf:

location = /favicon.ico { access_log off; log_not_found off; }
location /staticfiles {
    root /srv/pcc_django;
    }

и получил это из журнала ошибок:

2019/10/21 13:22:00 [error] 5888#0: *1 open() "/srv/pcc_django/staticfiles/static/admin/css/responsive.css" failed (2: No such file or directory), client: 10.184.53.51, server: 10.88.58.95, request: "GET /static/admin/css/responsive.css HTTP/1.1", host: "10.88.58.95", referrer: "http://10.88.58.95/admin/"

Я не знаюЯ не понимаю, откуда приходит / static /, nginx или django, что я могу сделать, чтобы проверить, где на самом деле проблема?

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Настройки Django были настроены правильно, проблема в том, что nginx.conf добавление псевдонима абсолютного пути к моему css решило мою проблему.

server {
    listen 80;
    server_name 10.88.58.95;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static {
             alias /srv/pcc_django/staticfiles/;
    }

    location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://unix:/run/gunicorn.sock;
    }
}
0 голосов
/ 18 октября 2019

Django ищет в статической папке, предоставленной в настройках STATIC_ROOT и STATIC_URL. Первый должен быть "/ staticfiles /". Второй должен соответствовать location в вашем nginx для сопоставления с каталогом сервера.

location /static {
    expires 1y;
    add_header Cache-Control "public";
    alias /some/path/in/your/server/;
}
...