Django Nginx не обслуживает файлы css / js для администраторов трясогузки - PullRequest
0 голосов
/ 14 сентября 2018

Я настроил свою трясогузку на django на сервере Ubuntu с доменом, используя NGINX и Gunicorn.Мои файлы CSS и JS, расположенные в статической папке в моем каталоге, обслуживаются правильно, но я не могу понять, почему файлы Wagtail Admin CSS / JS не обслуживаются.Я предполагаю, что это как-то связано с тем фактом, что файлы администратора Wagtail не находятся в моей статической папке с моими файлами CSS / JS.Я запустил CollectStatic и установил Debug = False.

Google Chrome сообщает о 404 файлах, не найденных администратором. CSS / JS

Часть файла NGINX

server {
        listen 443 default_server;
        listen [::]:443 default_server;

        root /home/projects/stemletics/stemletics/mysite/mysite;
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name domain.com www.domain.com;

        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
                root /home/projects/stemletics/stemletics/mysite/mysite;
        }
        location / {
                include proxy_params;
                proxy_pass http://unix:/home/projects/stemletics/stemletics/mysite/mysite.sock;
        }

Релевантночасть Base.py

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os

PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)

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

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

STATICFILES_DIRS = [
    os.path.join(PROJECT_DIR, 'static'),
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

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


# Wagtail settings

WAGTAIL_SITE_NAME = "mysite"

# Base URL to use when referring to full URLs within the Wagtail admin backend -
# e.g. in notification emails. Don't include '/admin' or a trailing slash
BASE_URL = 'http://example.com'

Production.py

from .base import *

DEBUG = False
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True

import os
SECRET_KEY = os.environ["DJANGO_SECRET_KEY_STEMLETICS"]

try:
    from .local import *
except ImportError:
    pass

Статический путь к папке

root@django-manaland:/# cd home/projects/stemletics/stemletics/mysite/mysite/static/
root@django-manaland:/home/projects/stemletics/stemletics/mysite/mysite/static# lsbrand  css  fonts  img  js  scss

1 Ответ

0 голосов
/ 14 сентября 2018

В вашем файле конфигурации nginx вам нужно указать каталог, из которого вы хотите обслуживать статические ресурсы.На первый взгляд, то, что у вас есть, выглядит правильно (хотя я не уверен на 100%, нужен ли вам конечный слеш в приведенном ниже примере; я всегда оставляю в конце косой черты)

# your nginx site.conf file

# Site static media
location /static/ {
  # Use `pwd` to get this path, wherever your static assets are collected into
  alias /home/user/www/your_website/static_collected/; 
}

Чтобы получить этот путь (сверху), перейдите по ssh на ваш сервер, cd в ваш каталог, где функция Django collectstatic объединяет ваши файлы, затем запустите pwd.Он вернет путь и обязательно завершит его косой чертой (косая черта всегда работала для меня)

...