Почему nginx не показывает статический контент с django и gunicorn? - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь запустить приложение администратора django, используя gunicorn 19.19.0 и nginx 1.10.3 на Raspberry Pi 3 (Raspian 9) с Python 3.5.3 и Django 2.1.7.Кажется, что Nginx работает правильно, а журналы ошибок nginx и gunicorn пусты.Однако приложение не будет отображать статический контент.

Я проверил файл nginx.conf.

Я запустил collectstatic и проверил наличие всех файлов.

Я могу указать браузеру 192.168.1.20/static, и он покажет правильный каталог.

Я также могу просматривать все файлы.

Я попытался следовать по пути в файле nginx.conf с помощью '/'

Все функции приложения admin работают нормально.просто нет статического контента.

Я гуглил и читал / пробовал каждое исправление форума, которое смог найти.

Я также запустил сервер разработки python (python manage.py runserver).В этой конфигурации статическое содержимое отображается просто отлично.

файл nginx.conf

events{}

http {
    server {
            listen       80;
            server_name  localhost;

            location /static {
                    autoindex on; 
                    alias /home/pi/DigitalClock/dcvenv/static;
            }
            location / {
                    error_log /home/pi/DigitalClock/dcvenv/nginx_err.log;
                    access_log /home/pi/DigitalClock/dcvenv/nginx_acc.log;
                    proxy_pass http://127.0.0.1:8000;
            }
    }
}

команда запуска gunicorn

gunicorn dcweb.wsgi:application --bind localhost:8000

файл настроек проекта django

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

последние записи в ngnix_acc.log (* _err.log пуст)

192.168.1.10 - - [18 / Feb / 2019: 12: 45: 43 -0800] "POST / admin / login /? next = / admin / HTTP / 1.1 "302 0" http://192.168.1.20/admin/login/?next=/admin/" "Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 71.0.3578.98 Safari / 537.36"192.168.1.10 - - [18 / Feb / 2019: 12: 45: 43 -0800] "GET / admin / HTTP / 1.1" 200 4944 "http://192.168.1.20/admin/login/?next=/admin/"" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 71.0.3578.98 Safari / 537.36 "192.168.1.10 - - [18 / Feb / 2019: 12: 45: 59 -0800]" GET / admin / auth / group / HTTP /1.1 "200 3500" http://192.168.1.20/admin/" "Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 71.0.3578.98 Safari / 537.36" 192.168.1.10 - - [18 /Фев / ​​2019: 12: 45: 59 -0800] "GET / admin / jsi18n / HTTP / 1.1" 200 3185 "http://192.168.1.20/admin/auth/group/"«Mozilla / 5.0 (Windows NT 10.0;Win64;x64) AppleWebKit / 537,36 (KHTML, как Gecko) Chrome / 71,0,3578,98 Safari / 537,36 "

1 Ответ

0 голосов
/ 19 февраля 2019

поместите этот код в файл settings.py, затем у вас есть collectstatic, также проверьте, добавили ли DEBUG = True

ROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')  # specify static root

в ваш URL-проект

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
   # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

обновление Попробуйте этот способ для своего проекта. :

urlpatterns = patterns('',
....urls......
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

в ваших settings.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
REPOSITORY_ROOT = os.path.dirname(BASE_DIR)

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

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

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